facebook posel chyby kódování bot

hlasů
1

Napsal jsem vzorek echo zprávu bot pomocí aplikace Facebook Messenger API a wit.ai akce.

Mé poselství z facebookové stránce je přijímán a pořádná akční funkce definovaná pomocí vtip API je také stále volal. Avšak při návratu odpověď, já jsem stále followin chybu as -

Jejda! Došlo k chybě při předání odezvy na: Chyba: (# 100) Param zprávy [text] musí být kódování UTF-8 řetězec na fetch.then.then.json (/app/index.js:106:13) při procesu ._tickCallback (vnitřní / procesní / next_tick.js: 103: 7)

Zde je funkce, která se používá k návratu odpovědi -

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

I zkopírovali tuto funkci ze souboru messenger.js z dokumentace, protože já jsem jen snaží POC. Ověřil jsem si hodnoty pro text a id v této funkci a ověřit pomocí console.log příkazy a ty jdou správně.

Mohou někteří odborníci mi pomůže vyřešit tuto chybu?

Poznámka - Zkoušel jsem kódování textu pomocí text.toString ( „UTF8“); ale vrací kódovací řetězec jako [object Object] a to je odpověď získám z bot. tak ono doesnt práce.

Položena 16/08/2016 v 13:42
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Získejte nejnovější kód z uzlu-vtipu , kdy dojde ke změně v užívání facebook id,

podle Facebook:

Na Út 17. května formátu uživatelských a strana ID dodávaných přes webhooks se změní z int na řetězec lepší podporu výchozí JSON kodér v JS (který obruby dlouhých celých čísel). Prosím, ujistěte se, že vaše aplikace pracuje s smyčcových IDS vrátili z webhooks jakož is ints.

Stále jste získali problém s API pokusí přidat if(event.message && !event.message.is_echo)podmínku, jak je uvedeno níže kód.

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

Reference:
žádný odpovídající uživatel chyba
není odpovídající uživatelské opravu

Odpovězeno 28/08/2016 v 13:52
zdroj uživatelem

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