2017-01-16 5 views
1

Wie kann ich den Kontext am Ende meiner Geschichte zurücksetzen oder löschen, oder wenn der Benutzer den Prozess neu starten möchte? Ich habe bereits eine Reset-Funktion von mir selbst ... Nicht sehr effektiv! Kannst du mir bitte erklären, was ich zu tun habe? Vielen Dank
Wit.ai Clear oder Reset Kontext

reset({sessionId,context}) { 
    return new Promise(function(resolve, reject) { 
     context = null; 
     return resolve(context); 
    }); 
} 

Und für die Sitzung, ich weiß, dass:

var findOrCreateSession = (fbid) => { 
    let sessionId; 
    Object.keys(sessions).forEach(k => { 
     if (sessions[k].fbid === fbid) { 
      sessionId = k; 
     } 
    }); 
    if (!sessionId) { 
     console.log("je cree une session car yen a pas"); 
     sessionId = new Date().toISOString(); 
     sessions[sessionId] = { 
      fbid: fbid, 
      context: {} 
     }; 
    } 
    return sessionId; 
}; 

Wie kann ich die Sitzung am Ende der Geschichte und/oder töten Kontext töten und setzen die bitte verarbeiten!

+0

Sie sollten die Antworten auf diese Frage zu http überprüfen: // Stackoverflow .com/questions/43353252/how-to-delete-kontext-session-id-am-ende-von-gespräch-in-wit-ai-bot – Franco

Antwort

0

Sie könnten die alte Sitzung möglicherweise löschen und eine neue erstellen, bevor der Webhook den Wit.ai-Controller schlägt.

Siehe den Code für ein Beispiel:

Webhook POST-Handler

// Conversation History 
let sessionId = WitRequest.getSession(senderId); 

if (message.text.toLowerCase() == "break") { 
    // New Conversation History 
    // Delete the old session 
    WitRequest.deleteSession(sessionId); 

    // Get new Session Id 
    sessionId = WitRequest.getSession(senderId); 

} 

let sessionData = WitRequest.getSessionData(sessionId); 

wit.runActions(
    sessionId, 
    message.text, 
    sessionData 
) 
.then((context) => { 
    sessionData = context; 
}) 
.catch((error) => { 
    console.log("Error: " + error); 
}); 

WitRequest Klasse

static getSession(senderId) { 

    let sessionId = null; 

    for (let currentSessionId in sessions) { 
     if (sessions.hasOwnProperty(currentSessionId)) { 
      if (sessions[currentSessionId].senderId == senderId) { 
       sessionId = currentSessionId 
      } 
     } 
    } 

    if (!sessionId) { 
     sessionId = new Date().toISOString(); 
     sessions[sessionId] = { 
      senderId: senderId, 
      context: {} 
     } 
    } 

    return sessionId; 
} 

static getSessionData(sessionId) { 

    return sessions[sessionId].context; 

} 

static deleteSession(sessionId) { 

    delete sessions[sessionId]; 

} 

static clearSession(session) { 
    session.context = {}; 
}