hvordan å spore bruker svar til en bestemt chatbot melding i node.js

stemmer
2

Jeg lurer på hvordan du skal fange en bruker som svar på et spesifikt chatbot spørsmålet? Jeg mener for eksempel hvis brukeren ber chatbot for været og chatbot svarer tilbake ved å spørre brukeren om i hvilken by. Jeg ville da gjerne spore hva brukeren svarer på det spørsmålet. Slik at byen kan brukes til å ringe en vær api for byen. Jeg vet ikke hvordan å spore brukerens svar på det spørsmålet. Vet noen om og hvordan dette er mulig?

Publisert på 22/12/2016 klokken 20:38
kilden bruker
På andre språk...                            


2 svar

stemmer
0

..Jeg løste det ved å sette en global variabel når chatbot stiller spørsmålet

global.variable = 1;

Når brukeren svarer på innkommende tekstmelding hendelsen er avfyrt, og jeg kan sjekke om den globale flagget er satt. Dette indikerer at dette er brukerens svar etter at spørsmålet ble stilt. Da kan jeg få meldingsteksten byen fra den meldingen. Dette fungerer fint i mitt tilfelle, men hvis noen vet et bedre alternativ kan du gi meg beskjed

Svarte 24/12/2016 kl. 05:55
kilden bruker

stemmer
1

Slik at flere brukere kan få tilgang til chatbot samtidig, er det best å holde styr på hver bruker, og hver brukers samtale tilstand. I tilfelle av Messenger API, ville dette være:

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

Da vil du ha svaret for hver bruker som er lagret i usersobjektet. Du kan også bruke en database til å lagre dette.

Svarte 11/04/2017 kl. 05:02
kilden bruker

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