Αναμονή για απάντηση κειμένου με αγγελιοφόρο bot Facebook

ψήφοι
1

Γράφω ένα αγγελιοφόρο bot Facebook και προσπαθώ να αποθηκεύσετε μια απάντηση κείμενο μετά από μια postback. Τι εννοώ με αυτό είναι ότι έχω ένα μήνυμα που στέλνει ένα μήνυμα πίσω και ανάλογα με το ποια επιλογή θα επιλέξουν, μπορούν να πληκτρολογήσετε ένα μήνυμα πίσω και να αποθηκεύσει αυτό το κείμενο. Το πρόβλημα είναι ότι το μόνο που θέλουν να αποθηκεύσετε το κείμενο αυτό αφού επιλέξετε μια επιλογή για τη θέση πίσω μήνυμα. Επίσης, το κείμενο μπορεί να είναι οτιδήποτε, οπότε δεν μπορώ να γράψω μια δήλωση if για αυτό.

Εδώ είναι ο κωδικός μου:

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

Τα πάντα είναι συσταθεί και να λειτουργήσει. Αλλά όταν λαμβάνεται η postback θέλω να περιμένω απάντηση από το χρήστη πριν την ολοκλήρωση ώστε να μπορώ να αποθηκεύσετε το κείμενο. Όπως είπα νωρίτερα μπορεί να είναι οτιδήποτε, πράγμα που σημαίνει ότι δεν μπορούμε απλά να γράψετε μια εντολή if, όπως έκανα με το «Start». Επίσης, μόνο θέλετε να αποθηκεύσετε το κείμενο μετά κάντε κλικ στο κουμπί postback.

Σκεφτόμουν σχετικά με την προσθήκη ενός βρόχου while και να περιμένει για το κείμενο που πρόκειται να λάβει πριν από την ολοκλήρωση της λειτουργίας postback, αλλά δεν μπορούσα να το καταλάβω.

Λοιπόν, πώς θα περιμένω για το κείμενο μετά έστειλα ένα μήνυμα με postback;

Οποιαδήποτε βοήθεια είναι ευπρόσδεκτη, ευχαριστώ!

Δημοσιεύθηκε 10/05/2016 στις 15:31
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
0

Βασικά δεν υπάρχει κανένας τρόπος να το κάνουμε για σας απαίτηση. Έτσι, το πράγμα που το μόνο που μπορούσε να κάνει είναι να ζητήσει από το χρήστη να πληκτρολογήσει το κείμενο με κάποιες χαρακτήρες στο πρόθεμα, για παράδειγμα, με «?» ή «#» ή κάτι άλλο που μπορείτε να αναλύσει.

Απαντήθηκε 17/05/2016 στις 06:34
πηγή χρήστη

ψήφοι
1

Έχω επίσης δοκιμάσει εδώ και πολύ καιρό για να βρούμε έναν τρόπο για την αποθήκευση του κειμένου που αποστέλλονται από τον αποστολέα χρησιμοποιώντας ταυτότητες μήνυμα και οι χρόνοι μήνυμα χωρίς αποτέλεσμα. Η μόνη τεχνική που λειτούργησε για μένα ήταν με την οποία μια καθολική μεταβλητή που ονομάζεται «κράτος» και, στη συνέχεια, στο τέλος κάθε μήνυμα που στέλνω, να αλλάξω την τιμή της μεταβλητής «κατάσταση» σε κάτι σαν «001» ή «002». Ως εκ τούτου, αν ήθελα να αποκτήσετε πρόσβαση στην απάντηση σε ένα συγκεκριμένο μήνυμα που έστειλε, θα έβαζα if (state === '001'). Εδώ είναι ένα παράδειγμα:

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

Ελπίζω αυτό να βοηθήσει!

Απαντήθηκε 13/09/2017 στις 00:04
πηγή χρήστη

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