facebook mensajero error bot codificación

votos
1

He escrito muestra el mensaje bot eco usando API de Facebook Messenger y acciones wit.ai.

Mi mensaje de la página de facebook se recibe y la función de la acción apropiada define utilizando el ingenio de API también está recibiendo llamados. Sin embargo, mientras que devolver la respuesta, estoy consiguiendo el error followin como -

¡Huy! Se ha producido un error al reenviar la respuesta a: Error: (# 100) el mensaje Param [texto] debe ser una cadena UTF-8 codificado a fetch.then.then.json (/app/index.js:106:13) en proceso de ._tickCallback (interna / proceso / next_tick.js: 103: 7)

Esta es la función que se utiliza para devolver la respuesta -

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

He copiado esta función desde el archivo de la documentación messenger.js desde que estoy tratando el POC. Revisé los valores de texto y la identificación de esta función y verifica por medio de declaraciones console.log y los que están llegando correctamente.

Algunos expertos pueden ayudar a solucionar este error?

Nota - He intentado codificar el texto utilizando text.toString ( UTF-8); pero devuelve la cadena de codificación que [object Object] y esa es la respuesta que recibo de bot. por lo que no funciona.

Publicado el 16/08/2016 a las 10:42
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Obtener el último código del nodo-ingenio , hay un cambio en el uso de ID de Facebook,

De acuerdo con Facebook:

En Tue May 17 de formato de los identificadores de usuario y la página entregados a través de WebHooks cambiará de un int a una cadena a una mejor codificador JSON por defecto apoyo en js (que recorta enteros largos). Por favor asegúrese de que su aplicación funciona con los identificadores de cadena devuelta desde WebHooks así como con enteros.

Todavía está recibiendo problema con la API intenta agregar if(event.message && !event.message.is_echo)condición como se muestra en código de abajo.

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

Referencia:
ningún error de usuario coincidente
ningún juego fix usuario

Respondida el 28/08/2016 a las 10:52
fuente por usuario

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