Čekání na textové odpovědi s Facebook Messenger bot

hlasů
1

Píšu Facebook messenger bot a snažím uložit textovou odpověď po uplynutí zpětného vystavení. Co tím chci říct je to Mám vzkaz, který vysílá příspěvek zpět a v závislosti na tom, co možnost se rozhodnou, mohou psát zprávu zpátky a já ukládat tento text. Problém je jen chci uložit tento text poté, co vyberete možnost pro post zpět zprávy. Také text může být cokoliv, takže nemohu psát, pokud příkaz pro něj.

Zde je můj kód:

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

Vše je nastaveno a spuštěno. Ale když je přijat postback chci počkat na odpověď od uživatele před dokončením, takže mohu uložit text. Jak už jsem řekl dříve, to může být cokoliv, což znamená, nemůžu jen psát if jako jsem to udělal s „Start“. Také jsem jen chcete uložit text po klepnutí na tlačítko postback.

Přemýšlel jsem o přidání while a čeká na text, který bude přijat před ukončením funkce postback, ale nemohl přijít na to.

Tak jak bych čekat na textu poté, co jsem poslal zprávu s postback?

Jakákoliv pomoc je oceňována, díky!

Položena 10/05/2016 v 15:31
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

V podstatě neexistuje žádný způsob, jak udělat pro vašeho požadavku. Takže, co si jen mohl udělat, je požádat uživatele k zadání textu se některé znaky v předponě, například s ‚?‘ nebo ‚#‘ nebo něco jiného, ​​že můžete analyzovat.

Odpovězeno 17/05/2016 v 06:34
zdroj uživatelem

hlasů
1

Také jsem se snažil dlouhou dobu najít způsob, jak uložit text zaslaný odesílatelem pomocí čísel zpráv a časy zpráv bezvýsledně. Jedinou technikou, která pracovala pro mě bylo deklarovat globální proměnnou s názvem ‚stát‘ a pak na konci každé zprávy, že jsem odeslat, změnit hodnotu proměnné ‚stát‘ na něco jako ‚001‘ nebo ‚002‘. Jako takový, když jsem chtěl získat přístup k odpovědi na určité zprávy, kterou jsem poslal, tak bych dal if (state === '001'). Zde je příklad:

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

Doufám, že to pomáhá!

Odpovězeno 13/09/2017 v 00:04
zdroj uživatelem

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