Me pregunto cómo coger una respuesta del usuario a una pregunta específica conversacional? Me refiero, por ejemplo, si el usuario pide la conversacional para el clima y la posterior conversacional responde preguntando al usuario en la cual la ciudad. Después me gustaría trazar lo que el usuario responde a esa pregunta. Por lo que la ciudad podría ser utilizado para llamar a una API del tiempo en la ciudad. No sé cómo hacer un seguimiento de la respuesta del usuario a esa pregunta. ¿Alguien sabe si y cómo es esto posible?
Como seguimiento de la respuesta del usuario a un mensaje específico en Node.js conversacional
fuente por usuario user3857472
En otros idiomas...
..I lo resolvió mediante el establecimiento de una variable global cuando el chatbot hace la pregunta
global.variable = 1;
Cuando el usuario responde al evento de mensaje de texto entrante se dispara y puedo comprobar si se establece el indicador global. Esto indica que esta es la respuesta del usuario después se hizo la pregunta. A continuación, puedo conseguir que la ciudad texto del mensaje de ese mensaje. Esto funciona bien en mi caso, pero si alguien sabe una mejor alternativa por favor hágamelo saber
Para que varios usuarios pueden acceder a la conversacional al mismo tiempo, lo mejor es hacer un seguimiento de cada usuario, y el estado de conversación de cada usuario. En el caso de la API de Messenger, esto sería:
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)
}
A continuación, tendrá la respuesta para cada usuario almacenada en el users objeto. También se puede utilizar una base de datos para almacenar esto.