facebook boodschapper bot Coderingsfoutmeldingen

stemmen
1

Ik heb monster echobericht bot geschreven met behulp van facebook messenger api en wit.ai acties.

Mijn boodschap van facebook pagina wordt ontvangen en de juiste actie functie gedefinieerd met behulp van wit api's wordt ook aangeroepen. Maar terwijl het terugzenden van de reactie, krijg ik followin error -

Oops! Fout bij het doorsturen van het antwoord op: Error: (100) Param bericht [text] moet UTF-8 gecodeerde string aan fetch.then.then.json (/app/index.js:106:13) en proces ._tickCallback (intern / proces / next_tick.js: 103: 7)

Hier is de functie die wordt gebruikt om de respons terug te keren -

const fbMessage = (id, text) => {  
  const body = JSON.stringify({
    recipient: { id },
    message: { text },
  });
  const qs = 'access_token=' + encodeURIComponent(FB_PAGE_ACCESS_TOKEN);
  return fetch('https://graph.facebook.com/v2.6/me/messages?' + qs, {
    method: 'POST',
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
    body
  })
  .then(rsp => rsp.json())
  .then(json => {
    if (json.error && json.error.message) {
      throw new Error(json.error.message);`enter code here`
    }   
    return json;
  });
};

Ik heb deze functie gekopieerd uit het bestand messenger.js van de documentatie aangezien ik probeer alleen maar de POC. Ik controleerde de waarden voor tekst en id in deze functie en gecontroleerd met behulp van console.log verklaringen en die goed zijn komst.

Kan sommige deskundigen me helpen om deze fout op te lossen?

NB - Ik probeerde de tekst met behulp van text.toString ( utf8) coderen; maar het geeft de codering string [object object] en dat is de reactie ik van bot. zo werkt het niet.

De vraag is gesteld op 16/08/2016 om 13:42
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Ontvang het laatste code van knooppunt-wit , is er een verandering in Facebook ID gebruik,

Volgens Facebook:

Op di 17 mei formaat van gebruikers en pagina-id's geleverd via webhooks zal veranderen van een int naar een string om betere ondersteuning standaard JSON encoder in js (die lang ints trims). Zorg ervoor dat uw app werkt met een touwtje ids terug van webhooks alsook met ints.

Toch u krijgt probleem met de api proberen toe te voegen if(event.message && !event.message.is_echo)toestand zoals weergegeven in onderstaande code.

 // Message handler
 app.post('/webhook', (req, res) => {
   const data = req.body;
    if (data.object === 'page') {
      data.entry.forEach(entry => {
        entry.messaging.forEach(event => {
         if (event.message && !event.message.is_echo) {
            const sender = event.sender.id;
           const sessionId = findOrCreateSession(sender);
           const {text, attachments} = event.message;
           if (attachments) {
             fbMessage(sender, 'Sorry I can only process text messages for now.')
             .catch(console.error);
           } else if (text) {
             wit.runActions(
               sessionId, // the user's current session
               text, // the user's message
               sessions[sessionId].context // the user's current session state
             ).then((context) => {
               console.log('Waiting for next user messages');
               sessions[sessionId].context = context;
             })
             .catch((err) => {
               console.error('Oops! Got an error from Wit: ', err.stack || err);
             })
           }
         } else {
           console.log('received event', JSON.stringify(event));
         }
       });
     });
   }
   res.sendStatus(200);
 });

Referentie:
Geen overeenkomende gebruiker bug
geen bijpassende gebruiker fix

antwoordde op 28/08/2016 om 13:52
bron van user

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