Mi chiedo come prendere una risposta utente ad una specifica domanda chatbot? Voglio dire, per esempio, se l'utente chiede al chatbot per il clima e la chatbot risponde indietro chiedendo all'utente in quale città. Vorrei poi a tracciare ciò che l'utente risponde a questa domanda. In modo che la città potrebbe essere utilizzato per chiamare un'API tempo per la città. Non so come monitorare la risposta a questa domanda all'utente. Qualcuno sa se e come questo sia possibile?
Come tracciare la risposta dell'utente ad un messaggio chatbot specifico node.js
fonte dall'utente user3857472
In altre lingue...
..Io risolto impostando una variabile globale quando il chatbot pone la questione
global.variable = 1;
Quando l'utente risponde l'evento messaggio di testo in entrata viene licenziato e posso controllare se è impostato il flag globale. Ciò indica che questa è la risposta dell'utente dopo che la questione è stato chiesto. Posso quindi ottenere la città testo del messaggio da quel messaggio. Questo funziona bene nel mio caso, ma se qualcuno conosce una migliore alternativa per favore fatemelo sapere
In modo che più utenti possono accedere al chatbot contemporaneamente, è meglio per tenere traccia di ogni utente, e lo stato di conversazione di ciascun utente. Nel caso delle API Messenger, questo sarebbe:
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)
}
Allora si avrà la risposta per ogni utente memorizzato nel usersoggetto. È inoltre possibile utilizzare un database per memorizzare questo.