Het wachten op een tekst antwoord met een Facebook-messenger bot

stemmen
1

Ik ben het schrijven van een Facebook-messenger bot en ben op zoek naar een tekst antwoord na een postback op te slaan. Wat ik bedoel is ik heb een bericht dat een post terug en afhankelijk van welke optie zij kiezen stuurt, kunnen ze een bericht terug te typen en bewaar ik die tekst. Het probleem is dat ik wil alleen maar om deze tekst op te slaan nadat ze een optie voor de post terug bericht te selecteren. Ook de tekst kan van alles zijn, dus ik kan niet schrijven een if-statement voor.

Hier is mijn code:

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

Alles is opgezet en uitgevoerd. Maar wanneer de postback wordt ontvangen Ik wil wachten op een antwoord van de gebruiker voor het einde, dus ik kan de tekst op te slaan. Zoals ik al eerder zei dat het kan van alles zijn wat betekent dat ik kan niet zomaar schrijven een if-statement, zoals ik deed met Start. Ik heb ook alleen de tekst wilt opslaan nadat ze op de postback knop.

Ik zat te denken over het toevoegen van een while-lus en wachten op de tekst te ontvangen voor het einde van de postback functie, maar kon er niet uit.

Dus hoe zou ik wachten voor tekst nadat ik een bericht gestuurd met een postback?

Alle hulp wordt gewaardeerd, bedankt!

De vraag is gesteld op 10/05/2016 om 15:31
bron van user
In andere talen...                            


2 antwoorden

stemmen
0

In principe is er geen manier om te doen voor uw eis. Dus het ding dat je alleen kan doen is vragen aan de gebruiker om de tekst met een aantal personages in prefix in te voeren, bijvoorbeeld met een '?' of '#' of iets anders dat je kunt ontleden.

antwoordde op 17/05/2016 om 06:34
bron van user

stemmen
1

Ik heb ook geprobeerd voor een lange tijd om een manier om de tekst die door de zender met behulp van bericht-id's en de boodschap keer tevergeefs winkel te vinden. De enige techniek die werkte voor mij was waarbij een globale variabele genaamd 'staat' en vervolgens aan het eind van elk bericht dat ik verzend, ik de waarde van de variabele 'staat' te veranderen in iets als '001' of '002'. Als zodanig, als ik wilde toegang tot het antwoord op een bepaald bericht stuurde ik, zou ik if (state === '001'). Hier is een voorbeeld:

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

Ik hoop dat dit helpt!

antwoordde op 13/09/2017 om 00:04
bron van user

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