如何在node.js

时间:2016-12-22 20:38:30

标签: node.js facebook-chatbot facebook-messenger-bot

我想知道如何捕获用户对特定聊天机器人问题的回复?我的意思是,例如,如果用户向聊天机器人询问天气,聊天机器人通过询问用户在哪个城市作出回应。然后,我想跟踪用户对该问题的回应。因此,该城市可用于呼叫城市的天气api。我不知道如何跟踪用户对该问题的回复。有谁知道这是否以及如何可行?

2 个答案:

答案 0 :(得分:1)

因此,多个用户可以同时访问聊天机器人,最好跟踪每个用户以及每个用户的会话状态。对于Messenger API,这将是:

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

然后,您将获得存储在users对象中的每个用户的答案。您还可以使用数据库来存储它。

答案 1 :(得分:0)

..我通过聊天机器人提问时设置全局变量来解决它

global.variable = 1;

当用户回复传入的短信事件时,我可以检查是否设置了全局标志。这表明这是在询问问题后的用户回复。然后,我可以从该消息中获取消息文本城市。这在我的情况下工作正常,但如果有人知道更好的选择,请告诉我