Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 带有节点js的facebook messenger机器人api发送多个回复_Node.js_Heroku_Facebook Messenger_Chatbot_Facebook Chatbot - Fatal编程技术网

Node.js 带有节点js的facebook messenger机器人api发送多个回复

Node.js 带有节点js的facebook messenger机器人api发送多个回复,node.js,heroku,facebook-messenger,chatbot,facebook-chatbot,Node.js,Heroku,Facebook Messenger,Chatbot,Facebook Chatbot,我在消息bot api中出错。出于某种原因,它一次向某个用户发送多条消息,比如20条。我正在节点上使用heroku。我不知道它为什么这么做?任何帮助都将不胜感激。 “严格使用”; var express=要求(“快递”); var-app=express(); var bodyParser=require('body-parser'); var请求=要求(“请求”); use(bodyParser.json()); app.get('/',函数(req,res){ res.send('hell

我在消息bot api中出错。出于某种原因,它一次向某个用户发送多条消息,比如20条。我正在节点上使用heroku。我不知道它为什么这么做?任何帮助都将不胜感激。

“严格使用”;
var express=要求(“快递”);
var-app=express();
var bodyParser=require('body-parser');
var请求=要求(“请求”);
use(bodyParser.json());
app.get('/',函数(req,res){
res.send('hello');
});
app.get('/webhook',函数(req,res){
if(请求查询['hub.verify\u token']=='my\u voice\u is\u my\u password\u verify\u me'){
res.send(请求查询['hub.challenge'])
}
res.send('错误,错误令牌')
})
app.post('/webhook',函数(req,res){
让消息传递_events=req.body.entry[0]。消息传递;
for(设i=0;i
这可能是Messenger客户端的一个bug。他们在Android应用程序上有很多问题。检查并确认

我建议您使用具有较低限制(例如,每秒最多1个请求)的方法来解决此问题。这也将防止将来Messenger客户端中可能出现的bug。或者,您可以等待他们解决客户端中的问题,但请记住,版本过时的用户会给您的bot带来麻烦

也可以考虑在消息事件中接收递送收据。考虑在代码中插入下面的代码段以忽略这些事件。

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

    ...
}
...
。。。
for(设i=0;i
您的代码看起来正常。您发送的所有值是什么?按什么顺序发送?有人找到了解决此问题的方法吗?目前,我正在缓存每条消息,并检查下一条消息之间的时差。如果以微秒为单位,我将忽略它。这似乎解决了我现在的目的。
...
for (let i = 0; i < messaging_events.length; i++) {
    let event = req.body.entry[0].messaging[i]
    if (event.hasOwnProperty('delivery')) {
        continue;
    }

    ...
}
...