In attesa di una risposta di testo con un Facebook Messenger Bot

voti
1

Sto scrivendo un Facebook Messenger bot e sto cercando di memorizzare una risposta testo dopo un postback. Quello che voglio dire con questo è che ho un messaggio che invia un post indietro e seconda di quale opzione scelgono, possono digitare un messaggio indietro e devo conservare quel testo. Il problema è che io voglio solo per memorizzare il testo dopo che selezionare un'opzione per il messaggio palo. Anche il testo può essere qualsiasi cosa, quindi non posso scrivere un'istruzione if per esso.

Ecco il mio codice:

app.post('/', function (req, res) {
  messaging_events = req.body.entry[0].messaging;
  for (i = 0; i < messaging_events.length; i++) {

    event = req.body.entry[0].messaging[i];
    sender = event.sender.id;

    if (event.message && event.message.text) {
      text = event.message.text;

      if (text == Start) {
        sendTextMessage(sender, Hey User! I'm a bot);
      }
    }

    else if (event.postback) {
      // These are for chosing availibility
      if (JSON.stringify(event.postback) == '{payload:postback}') {
        setTextMessage(sender, Postback recieved);
      }
    }
}

Tutto è pronto e funzionante. Ma quando viene ricevuto il postback voglio aspettare una risposta da parte dell'utente prima di terminare in modo da poter salvare il testo. Come ho detto prima può essere qualsiasi cosa che significa che non posso solo scrivere un'istruzione if come ho fatto con Start. Ho anche solo voglia di salvare il testo dopo aver fatto clic sul pulsante postback.

Stavo pensando di aggiungere un ciclo while e in attesa per il testo di essere ricevuti prima di terminare la funzione di postback, ma non riuscivo a capire.

Così come dovrei aspettare per il testo dopo che ho inviato un messaggio con un postback?

Ogni aiuto è apprezzato, grazie!

È pubblicato 10/05/2016 alle 15:31
fonte dall'utente
In altre lingue...                            


2 risposte

voti
0

Fondamentalmente non c'è modo di fare per il vostro requisito. Quindi la cosa che solo si potrebbe fare è chiedere all'utente di inserire il testo con alcuni personaggi di prefisso, ad esempio con un '?' o '#' o qualcos'altro che si può analizzare.

Risposto il 17/05/2016 a 06:34
fonte dall'utente

voti
1

Ho anche provato a lungo per trovare un modo per memorizzare il testo inviato dal mittente utilizzando gli ID dei messaggi e gli orari dei messaggi inutilmente. L'unica tecnica che ha funzionato per me è stato che dichiara una variabile globale chiamata 'stato' e poi alla fine di ogni messaggio che mando, a cambiare il valore della variabile 'stato' a qualcosa come '001' o '002'. In quanto tale, se avessi voluto accedere alla risposta ad un particolare messaggio che ho inviato, vorrei mettere if (state === '001'). Ecco un esempio:

var state = '000';

// if user sends me 'I want dogs'
    sendTextMessage(sender, "How many dogs?");
    state = '001';

// if user sends me 'I want cats'
    sendTextMessage(sender, "How many cats?);
    state = '002';

/* now if I want to access the user's response to how many cats they want, I simply write in an if statement:
if (state === '002' && /^\d+$/.test(text)) {
    var numberOfCatsWanted = text
}

// in this last part I essentially write 'if the state is '002' and the text contains numbers then a new variable will store the value of the text

Spero che aiuti!

Risposto il 13/09/2017 a 00:04
fonte dall'utente

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