как отследить пользователя ответ на конкретное сообщение Chatbot в Node.js

голоса
2

Интересно, как поймать пользователь ответ на конкретный вопрос Chatbot? Я имею в виду, например, если пользователь запрашивает Chatbot для погоды и Chatbot отвечает обратно, спрашивая у пользователя, в каком городе. Я бы тогда хотел, чтобы проследить, что пользователь отвечает на этот вопрос. Так что город может быть использован для вызова API погоды для города. Я не знаю, как отслеживать пользовательский ответ на этот вопрос. Кто-нибудь знает, если и как это возможно?

Задан 22/12/2016 в 20:38
источник пользователем
На других языках...                            


2 ответов

голоса
0

..Я решил проблему, установив глобальную переменную, когда Chatbot задает вопрос

global.variable = 1;

Когда пользователь отвечает входящее событие текстового сообщения обжигает, и я могу проверить, если глобальный флаг установлен. Это указывает на то, что это пользователь ответ после того, как вопрос был задан. то я могу получить текстовое сообщение города из этого сообщения. Это прекрасно работает в моем случае, но если кто-нибудь знает, что лучшей альтернативы, пожалуйста, дайте мне знать,

Ответил 24/12/2016 в 05:55
источник пользователем

голоса
1

Так что несколько пользователей могут получить доступ к Chatbot одновременно, то лучше, чтобы следить за каждым пользователем, и состояние разговора каждого пользователя. В случае 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объекте. Кроме того, можно использовать базу данных для хранения этого.

Ответил 11/04/2017 в 05:02
источник пользователем

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