Warten auf eine Text-Antwort mit einem Boten bietet Facebook

stimmen
1

Ich schreibe einen Boten bietet Facebook und ich versuche, eine Textantwort nach einer Postbacks zu speichern. Was ich damit meine ist, ich eine Nachricht, die einen Beitrag zurück und je nachdem, welche Option sendet sie wählen, können sie eine Nachricht zurück geben und speichere ich diesen Text. Das Problem ist, ich diesen Text nur gespeichert werden soll, nachdem sie eine Option für den Posten zurück Nachricht auswählen. Auch kann der Text sein, etwas, so dass ich nicht schreiben kann eine if-Anweisung dafür.

Hier ist mein 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 eingerichtet ist und läuft. Aber wenn der Postbacks empfangen mag ich auf eine Antwort vom Benutzer warten vor der Fertigstellung, so kann ich den Text speichern. Wie ich schon früher gesagt kann es etwas Sinn sein kann ich nicht nur schreiben eine if-Anweisung, wie ich mit „Start“ tat. Ich mag auch nur den Text speichern, nachdem sie die Postback Button klicken.

Ich dachte über eine while-Schleife hinzugefügt und warten auf Text empfangen werden, bevor die Postback-Funktion Finishing kann aber nicht herausfinden.

So wie würde ich für Text warten, nachdem ich eine Nachricht mit einem Postback geschickt?

Jede Hilfe ist willkommen, danke!

Veröffentlicht am 10/05/2016 um 15:31
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Grundsätzlich gibt es keine Möglichkeit für Ihre Anforderung zu tun. Also das, was Sie nur tun können, ist den Benutzer auffordern, den Text mit einigen Zeichen in Präfix eingeben, zum Beispiel mit einem ‚?‘ oder ‚#‘ oder etwas anderes, das Sie analysieren.

Beantwortet am 17/05/2016 um 06:34
quelle vom benutzer

stimmen
1

Ich habe auch für eine lange Zeit versucht , einen Weg zu finden , den Text von dem Nachrichten - IDs unter Verwendung von Absender zu speichern und Nachrichten mal ohne Erfolg. Die einzige Technik , die für mich gearbeitet wurde eine globale Variable deklariert ‚Staat‘ genannt und dann am Ende jeder Nachricht , die ich sende, ändere ich den Wert der Variablen ‚Zustand‘ zu so etwas wie ‚001‘ oder ‚002‘. Als solcher, wenn ich die Antwort auf eine bestimmte Nachricht zuzugreifen wollte würde ich geschickt, habe ich if (state === '001'). Hier ist ein Beispiel:

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

Ich hoffe das hilft!

Beantwortet am 13/09/2017 um 00:04
quelle vom benutzer

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