Исключение зависания сокета на Facebook Graph Api при вызове POST к сообщениям с использованием nodejs - PullRequest
0 голосов
/ 30 мая 2018

Ниже приведен код, который я использую для отправки ответа на сообщение в приложении nodejs (экспресс), которое подписано на webhooks.

Я получаю успешные случайные сообщения от apiAiClient при отправке любого из сообщенияна Fb Messenger со страницы fb, но после его обратного вызова на страницу fb выдается следующая ошибка:

{ Error: socket hang up
at TLSSocket.onHangUp (_tls_wrap.js:1135:19)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)
at TLSSocket.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
code: 'ECONNRESET',
path: null,
host: 'graph.facebook.com',
port: 443,
localAddress: undefined }

Ниже приведен код для отправки звонка в Facebook api:

const sendTextMessage = (senderId, text) => {
  let req = {
    url: 'https://graph.facebook.com/v2.6/me/messages',
    qs: { access_token: FACEBOOK_ACCESS_TOKEN },
    method: 'POST',
    json: {
      messaging_type: "UPDATE",
      recipient: { id: senderId },
      message: { text: text }
    }
  };
  request(req, response => {
    console.log(response);
  });
};

module.exports = (event) => {
  const senderId = event.sender.id;
  const message = event.message.text;
  const apiaiSession = apiAiClient.textRequest(message, { sessionId: 'total-poc-bot' });
  apiaiSession.on('response', (response) => {
    const result = response.result.fulfillment.speech;
    sendTextMessage(senderId, result);
  });
  apiaiSession.on('error', error => console.log(error));
  apiaiSession.end();
};

Вот мое приложение для узла

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

const verificaton = require('./controllers/verification');
const messageWebhook = require('./controllers/messageWebhook');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.listen(3000, () => console.log('Webhook server is listening, port 3000'));
app.get('/', verificaton);
app.post('/', messageWebhook);

Заранее спасибо.с нетерпением жду ответов.

1 Ответ

0 голосов
/ 25 июня 2018

Проблема решена, я обнаружил, что Facebook заблокирован на моем IP, поэтому выдает Error: socket hang up.Я разблокировал Facebook и API ответил,

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...