jak sledovat uživatele odpověď na určitou zprávu v Chatbot Node.js

hlasů
2

Zajímalo by mě, jak se chytit uživatele odpověď na konkrétní otázku Chatbot? Mám na mysli například v případě, že uživatel požádá Chatbot o počasí a Chatbot odpoví zpět tím, že žádá uživatele, pro které ve městě. Pak bych chtěl sledovat, co uživatel odpoví na tuto otázku. Tak, že město by mohla být použita pro volání Povětrnostní API pro město. Nevím, jak sledovat uživatele odpověď na tuto otázku. Ví někdo, zda a jak je to možné?

Položena 22/12/2016 v 20:38
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

..I vyřešil nastavením globální proměnné, když Chatbot položí otázku

global.variable = 1;

Když se uživatel odpoví příchozí události textová zpráva je aktivována a mohu zkontrolovat, zda je nastaven příznak global. To znamená, že se jedná o uživatelsky odpověď poté, co tato otázka byla položena. I pak může dostat textovou zprávu město z této zprávy. Tato metoda funguje v mém případě, ale pokud někdo ví, lepší alternativu, prosím dejte mi vědět

Odpovězeno 24/12/2016 v 05:55
zdroj uživatelem

hlasů
1

Takže více uživatelů může přístup k Chatbot současně, je nejlepší sledovat každého uživatele a konverzace stav každého uživatele. V případě API Messenger, to bude vypadat následovně:

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

Pak budete mít odpověď pro každého uživatele uloženy v usersobjektu. Můžete také použít databázi uložit to.

Odpovězeno 11/04/2017 v 05:02
zdroj uživatelem

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