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?
Jak śledzić odpowiedzi użytkownika do konkretnej wiadomości chatbota w node.js
..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ć
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.













