Comment tracer la réponse de l'utilisateur à un message spécifique dans chatbot Node.js

voix
2

Je me demande comment attraper une réponse utilisateur à une question chatbot spécifique? Je veux dire par exemple si l'utilisateur demande au chatbot pour le temps et l'chatbot répond arrière en demandant à l'utilisateur dans quelle ville. Je voudrais ensuite de tracer ce que l'utilisateur répond à cette question. Alors que la ville pourrait être utilisé pour appeler un api météo pour la ville. Je ne sais pas comment suivre la réponse de l'utilisateur à cette question. Est-ce que quelqu'un sait si et comment cela est possible?

Créé 22/12/2016 à 20:38
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

..Je résolu en définissant une variable globale lorsque la chatbot pose la question

global.variable = 1;

Lorsque l'utilisateur répond l'événement de message texte entrant est tiré et je peux vérifier si l'indicateur global est défini. Cela indique que ceci est la réponse de l'utilisateur après a posé la question. Je peux alors obtenir la ville du texte du message de ce message. Cela fonctionne très bien dans mon cas, mais si quelqu'un sait une meilleure alternative s'il vous plaît laissez-moi savoir

Créé 24/12/2016 à 05:55
source utilisateur

voix
1

Alors que plusieurs utilisateurs peuvent accéder au chatbot simultanément, il est préférable de garder une trace de chaque utilisateur, et l'état de conversation de chaque utilisateur. Dans le cas de l'API Messenger, ce serait:

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)
}

Ensuite , vous aurez la réponse pour chaque utilisateur stocké dans l' usersobjet. Vous pouvez également utiliser une base de données pour mémoriser.

Créé 11/04/2017 à 05:02
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more