Ich frage mich, wie ein Benutzer Antwort auf eine spezifische Frage chatbot zu fangen? Ich meine zum Beispiel, wenn der Benutzer der chatbot für das Wetter fragt und die chatbot reagiert, indem er den Benutzer auf, in welcher Stadt zurück. Ich würde dann verfolgen möchten, was der Benutzer auf diese Frage antwortet. So dass die Stadt könnte für den Aufruf eines Wetter api für die Stadt verwendet werden. Ich weiß nicht, wie der Benutzer die Antwort auf diese Frage zu verfolgen. Weiß jemand, ob und wie das möglich ist?
wie Benutzer Antwort auf eine spezifische chatbot Nachricht in node.js verfolgen
quelle vom benutzer user3857472
In anderen Sprachen...
..ich löste es durch eine globale Variable eingestellt wird, wenn die chatbot die Frage stellt
global.variable = 1;
Wenn der Benutzer das eingehende SMS Ereignis antwortet gebrannt und ich kann überprüfen, ob die globale Flag gesetzt ist. Dies weist darauf hin, dass dies die Antwort des Benutzers, nachdem die Frage gestellt wurde. Ich kann dann den Nachrichtentext Stadt von dieser Nachricht erhalten. Dies funktioniert in meinem Fall in Ordnung, aber wenn jemand eine bessere Alternative lass es mich kennt weiß,
So dass mehrere Benutzer gleichzeitig die chatbot zugreifen können, ist es am besten den Überblick über jeden Benutzer zu halten, und jedes Gespräch Zustand des Benutzers. Im Fall des Messenger-API, das wäre:
const users = {}
const nextStates = {
'What country are you in?': 'What city are you in?',
'What city are you in?': 'Let me look up the weather for that city...'
}
const receivedMessage = (event) => {
// keep track of each user by their senderId
const senderId = event.sender.id
if (!users[senderId].currentState){
// set the initial state
users[senderId].currentState = 'What country are you in?'
} else {
// store the answer and update the state
users[senderId][users[senderId].currentState] = event.message.text
users[senderId].currentState = nextStates[users[senderId.currentState]]
}
// send a message to the user via the Messenger API
sendTextMessage(senderId, users[senderId].currentState)
}
Dann haben Sie die Antwort für jeden Benutzer in dem gespeicherten usersObjekt. Sie können auch eine Datenbank speichern diese verwenden.