En attente d'une réponse de texte avec un bot messager Facebook

voix
1

Je suis en train d'écrire un bot messager Facebook et essaie de stocker une réponse de texte après une publication. Ce que je veux dire par là que j'ai un message qui envoie un message en arrière et selon l'option qu'ils choisissent, ils peuvent taper d'un message et je stocker ce texte. Le problème est que je veux seulement stocker ce texte après avoir sélectionné une option pour le message après retour. De plus, le texte peut être quelque chose, je ne peux pas écrire une instruction if pour elle.

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

Tout est mis en place et en cours d'exécution. Mais quand le postback est reçu, je veux attendre une réponse de l'utilisateur avant de terminer, je peux enregistrer le texte. Comme je l'ai dit plus tôt, il peut être quelque chose qui signifie que je ne peux pas écrire simplement une instruction if comme je l'ai fait avec « Start ». Je veux aussi que pour enregistrer le texte après avoir cliqué sur le bouton postback.

Je pensais à l'ajout d'une boucle while et en attente du texte à recevoir avant de terminer la fonction postback mais ne pouvait pas comprendre.

Alors, comment aurais-je attendre le texte après avoir envoyé un message avec un postback?

Toute aide est la bienvenue, merci!

Créé 10/05/2016 à 15:31
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

Fondamentalement, il n'y a pas moyen de le faire pour vos besoins. Donc, la chose que vous ne pouvez faire est de demander à l'utilisateur d'entrer dans le texte avec des caractères préfixe, par exemple avec un « ? » ou « # » ou autre chose que vous pouvez analyser.

Créé 17/05/2016 à 06:34
source utilisateur

voix
1

J'ai aussi essayé depuis longtemps de trouver un moyen de stocker le texte envoyé par l'expéditeur à l' aide de messages et ids fois de message en vain. La seule technique qui a fonctionné pour moi a été la déclaration d' une variable globale appelée « état », puis à la fin de chaque message que je vous envoie, je change la valeur de la variable « état » à quelque chose comme « 001 » ou « 002 ». En tant que tel, si je voulais accéder à la réponse à un message particulier que j'ai envoyé, je mettrais if (state === '001'). Voici un exemple:

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

J'espère que ça aide!

Créé 13/09/2017 à 00:04
source utilisateur

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