facebook Messeger личинка апи с узлом JS отправляет несколько ответов

голоса
3

Я имею ошибку с сообщением бота апи. По какой-то причине пожаров мультипликатора как 20 в момент сообщений к определенному пользователю. Я использую Heroku на узле. Я не имею ни малейшего понятия, почему он делает это? Любая помощь приветствуется. введите

use strict;
var express = require(express);
var app = express();
var bodyParser = require('body-parser');
var request = require('request');

app.use(bodyParser.json());

app.get('/', function(req, res){

   res.send('hello'); 

});


app.get('/webhook', function (req, res) {
    if (req.query['hub.verify_token'] === 'my_voice_is_my_password_verify_me') {
        res.send(req.query['hub.challenge'])
    }
    res.send('Error, wrong token')
})
app.post('/webhook', function (req, res) {
    let messaging_events = req.body.entry[0].messaging;
    for (let i = 0; i < messaging_events.length; i++) {
        let event = req.body.entry[0].messaging[i]
        let sender = event.sender.id
        if (event.message && event.message.text) {
            let text = event.message.text
            sendTextMessage(sender, Text received, echo:  + text.substring(0, 200))
        }
    }
    res.sendStatus(200)
})

function sendTextMessage(sender, text) {
    let messageData = { text:text }
    request({
        url: 'https://graph.facebook.com/v2.6/me/messages',
        qs: {access_token: process.env.PAGE_ACCESS_TOKEN},
        method: 'POST',
        json: {
            recipient: {id:sender},
            message: messageData,
        }
    }, function(error, response, body) {
        if (error) {
            console.log('Error sending messages: ', error)
        } else if (response.body.error) {
            console.log('Error: ', response.body.error)
        }
    })
}







app.listen(process.env.PORT || 8080);
Задан 24/06/2016 в 01:58
источник пользователем
На других языках...                            


1 ответов

голоса
1

Это, вероятно, ошибка в клиенте Посланника. Они имеют много проблем с Android приложения. Проверьте эту ошибку и эту ошибку .

Я рекомендую вам использовать ограничитель скорости с низким пределом - не более 1 запроса в секунду, например , - чтобы решить эту проблему. Это также позволит предотвратить возможные ошибки в клиентах Посланника в будущем. Или вы можете ждать их , чтобы решить эту проблему в клиентах, но имейте в виду , что пользователи с устаревшей версией, может возникнуть проблема с бота.

Кроме того, считает, что вы можете получить квитанции о доставке в ваших событиях сообщений. Рассмотрим, чтобы вставить фрагмент кода ниже в коде, чтобы игнорировать эти события.

...
for (let i = 0; i < messaging_events.length; i++) {
    let event = req.body.entry[0].messaging[i]
    if (event.hasOwnProperty('delivery')) {
        continue;
    }

    ...
}
...
Ответил 25/06/2016 в 02:23
источник пользователем

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