Jak śledzić odpowiedzi użytkownika do konkretnej wiadomości chatbota w node.js

głosy
2

Zastanawiam się, jak złapać odpowiedź użytkownika do konkretnego zagadnienia chatbota? Mam na myśli na przykład jeśli użytkownik prosi Chatbot do pogody i chatbota reaguje z powrotem pytając użytkownika o których w mieście. Chciałbym następnie chciał prześledzić co odpowiada użytkownikowi na to pytanie. Tak, że miasto może być używany do wywoływania API pogody dla miasta. Nie wiem, jak śledzić odpowiedzi użytkownika na to pytanie. Czy ktoś wie, czy i jak to jest możliwe?

Utwórz 22/12/2016 o 20:38
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
0

..I rozwiązać go poprzez ustawienie zmiennej globalnej, gdy chatbota zadaje pytanie

global.variable = 1;

Kiedy użytkownik odpowiada zdarzenie przychodzące wiadomości tekstowych jest zwolniony i mogę sprawdzić czy globalna flaga jest ustawiona. To wskazuje, że jest to odpowiedź użytkownik po pytano. Mogę wtedy uzyskać tekst wiadomość miasto z tej wiadomości. Działa to dobrze, w moim przypadku, ale jeśli ktoś zna lepszą alternatywę daj mi znać

Odpowiedział 24/12/2016 o 05:55
źródło użytkownik

głosy
1

Tak, że wielu użytkowników może uzyskać dostęp do chatbota jednocześnie, najlepiej śledzić każdego użytkownika, a stan rozmowa każdego użytkownika. W przypadku interfejsu API Messenger, będzie to:

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

Wtedy będziesz miał odpowiedź dla każdego użytkownika przechowywanych w usersobiekcie. Można również korzystać z bazy danych do przechowywania tego produktu.

Odpowiedział 11/04/2017 o 05:02
źródło użytkownik

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