Venter på en tekst svar med en Facebook messenger bot

stemmer
1

Jeg skriver en Facebook messenger bot og prøver å lagre en tekst svar etter en postback. Hva jeg mener med dette er at jeg har en melding som sender et innlegg tilbake og avhengig av hvilket alternativ de velger, de kan skrive en melding tilbake, og jeg lagre som tekst. Problemet er at jeg ønsker bare å lagre denne teksten etter at de velger et alternativ for stillingen tilbake meldingen. Også teksten kan være noe, så jeg kan ikke skrive en hvis setningen for det.

Her er min kode:

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

Alt er satt opp og kjører. Men når sending mottas jeg ønsker å vente på et svar fra brukeren før etterbehandling slik at jeg kan lagre teksten. Som jeg sa tidligere det kan være noe som betyr at jeg kan ikke bare skrive en if setning som jeg gjorde med Start. Jeg bare ønsker å lagre teksten etter at de klikker på postback-knappen.

Jeg tenkte på å legge en stund loop og venter på tekst som skal mottas før du fullfører tilbakesendingsfunksjonen, men kunne ikke finne det ut.

Så hvordan ville jeg vente på teksten etter at jeg sendte en melding med en postback?

Alle hjelpe er verdsatt, takk!

Publisert på 10/05/2016 klokken 15:31
kilden bruker
På andre språk...                            


2 svar

stemmer
0

I utgangspunktet er det ingen måte å gjøre for dine behov. Så er det ting du bare kan gjøre er å be brukeren om å skrive inn tekst med noen tegn i prefiks, for eksempel med en '?' eller '#' eller noe annet som du kan analysere.

Svarte 17/05/2016 kl. 06:34
kilden bruker

stemmer
1

Jeg har også prøvd i lang tid å finne en måte å lagre teksten som sendes av avsenderen hjelp beskjed IDer og meldings ganger til ingen nytte. Den eneste teknikk som fungerte for meg var å erklære en global variabel kalt 'state' og deretter på slutten av hver melding som jeg sender, jeg endre verdien av variabelen 'state' til noe sånt som '001' eller '002'. Som sådan, hvis jeg ønsket å få tilgang til svar på en bestemt melding jeg sendte, ville jeg satt if (state === '001'). Her er et eksempel:

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

Jeg håper dette hjelper!

Svarte 13/09/2017 kl. 00:04
kilden bruker

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