gpt4 book ai didi

node.js - 带有 Node js的facebook messenger bot api发送多个回复

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:01 24 4
gpt4 key购买 nike

我在使用消息机器人 API 时遇到错误。出于某种原因,它会在向特定用户发送消息时触发多个,例如 20 个。我在 Node 上使用 heroku。我不知道为什么要这样做?任何帮助将非常感激。 enter image description here

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

最佳答案

这可能是 Messenger 客户端中的错误。他们在使用 Android 应用程序时遇到了很多问题。检查this bugthis bug .

我建议您使用 rate limiter有一个低限制——例如每秒最多 1 个请求——来解决这个问题。这也将防止 Messenger 客户端将来可能出现的错误。或者您可以等待他们在客户端解决问题,但请记住,使用过时版本的用户会给您的机器人带来麻烦。

此外,考虑到您可以在消息事件中收到送达回执。考虑在您的代码中插入下面的代码片段以忽略这些事件。

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

...
}
...

关于node.js - 带有 Node js的facebook messenger bot api发送多个回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38004542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com