- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Facebook Messenger Bot API,并使用我的 Facebook 帐户(管理员)和一个作为测试人员添加的虚拟 Facebook 帐户来测试 Heroku 托管的 Node.js 机器人。每次我向聊天机器人发送消息时,聊天机器人都能回复我。但是当我检查 Heroku 日志时,我发现机器人正在为其收到的一条消息发送两条消息。我只收到了机器人的一条回复,但为什么机器人又发送了第二条消息?
这是 post web hook 和 sendMessage 函数的代码
app.post('/webhook', function (req, res) {
var events = req.body.entry[0].messaging;
for (i = 0; i < events.length; i++) {
var event = events[i];
var sender = event.sender.id
if (event.message && event.message.text) {
sendMessage(sender, {text: "Hey, did you just say: " + event.message.text});
console.log("sent message to: " + sender);
}
}
res.sendStatus(200);
});
function sendMessage(recipientId, message) {
request({
url: 'https://graph.facebook.com/v2.6/me/messages',
qs: {access_token: process.env.PAGE_ACCESS_TOKEN},
method: 'POST',
json: {
recipient: {id: recipientId},
message: message,
}
}, function(error, response, body) {
if (error) {
console.log('Error sending message: ', error);
} else if (response.body.error) {
console.log('Error: ', response.body.error);
}
});
};
这是我在 Heroku 中构建聊天机器人应用程序并从我的管理员帐户发送消息时的日志
2016-08-25T21:16:02.303705+00:00 heroku[web.1]: Restarting
2016-08-25T21:16:02.304448+00:00 heroku[web.1]: State changed from up to starting
2016-08-25T21:16:03.588649+00:00 heroku[web.1]: Starting process with command `node index.js`
2016-08-25T21:16:05.731964+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2016-08-25T21:16:06.609304+00:00 heroku[web.1]: Process exited with status 143
2016-08-25T21:16:07.266798+00:00 heroku[web.1]: State changed from starting to up
2016-08-25T21:16:39.746253+00:00 app[web.1]: sent message to: 1160285130676682
2016-08-25T21:16:40.082592+00:00 app[web.1]: sent message to: 284635001929051
2016-08-25T21:16:40.206265+00:00 app[web.1]: Error: { message: '(#100) No matching user found',
2016-08-25T21:16:40.206267+00:00 app[web.1]: type: 'OAuthException',
2016-08-25T21:16:40.206268+00:00 app[web.1]: code: 100,
2016-08-25T21:16:40.206268+00:00 app[web.1]: fbtrace_id: 'BSxdusFbWB6' }
2016-08-25T21:16:39.756640+00:00 heroku[router]: at=info method=POST path="/webhook" host=warm-depths-81393.herokuapp.com request_id=7035f788-f103-49d7-99ec-21cf58d30674 fwd="69.63.188.113" dyno=web.1 connect=1ms service=66ms status=200 bytes=196
2016-08-25T21:16:40.265285+00:00 heroku[router]: at=info method=POST path="/webhook" host=warm-depths-81393.herokuapp.com request_id=71deb2ab-f1db-40cc-a5d1-af926a35b6de fwd="173.252.120.112" dyno=web.1 connect=0ms service=8ms status=200 bytes=196
2016-08-25T21:16:40.084913+00:00 heroku[router]: at=info method=POST path="/webhook" host=warm-depths-81393.herokuapp.com request_id=61be8207-456c-4337-8c2b-ced6ff742f52 fwd="66.220.158.102" dyno=web.1 connect=0ms service=7ms status=200 bytes=196
这是日志的第二部分,显示我从我的虚拟帐户(测试人员)发送了另一条消息
2016-08-25T21:16:44.788335+00:00 app[web.1]: sent message to: 1107394752663896
2016-08-25T21:16:45.195498+00:00 app[web.1]: sent message to: 284635001929051
2016-08-25T21:16:45.307382+00:00 app[web.1]: Error: { message: '(#100) No matching user found',
2016-08-25T21:16:45.307384+00:00 app[web.1]: type: 'OAuthException',
2016-08-25T21:16:45.307385+00:00 app[web.1]: code: 100,
2016-08-25T21:16:45.307385+00:00 app[web.1]: fbtrace_id: 'GKqZtMZawEv' }
2016-08-25T21:16:45.194037+00:00 heroku[router]: at=info method=POST path="/webhook" host=warm-depths-81393.herokuapp.com request_id=fce94f53-bd7e-4020-a0b0-ff05638e0b25 fwd="173.252.120.121" dyno=web.1 connect=0ms service=12ms status=200 bytes=196
2016-08-25T21:16:44.786566+00:00 heroku[router]: at=info method=POST path="/webhook" host=warm-depths-81393.herokuapp.com request_id=3d650955-c9db-47c2-8b69-b919e70bb94e fwd="173.252.120.100" dyno=web.1 connect=2ms service=4ms status=200 bytes=196
2016-08-25T21:16:45.515394+00:00 heroku[router]: at=info method=POST path="/webhook" host=warm-depths-81393.herokuapp.com request_id=f497c7b2-a9ee-4f9c-83b9-c23a2e358cc1 fwd="66.220.158.111" dyno=web.1 connect=0ms service=2ms status=200 bytes=196
编辑:我刚刚发现机器人重复发送消息的第二个用户实际上是聊天机器人 Facebook 页面本身。聊天机器人也向自己发送消息是否有原因?
最佳答案
问题是 webhook 订阅了传递消息等。
关于node.js - Facebook Messenger Bot API 发送多条消息并显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155044/
我将一个用 TypeScript 编写的游戏上传到 Facebook Instant Games。我有一个 super 简单的调用来从我自己的服务器获取真实的 timestamp。 在将构建上传到 I
我正在尝试在 Facebook Messenger 中使用的对话流中添加建议信息 block 。但它不工作,我无法理解 这是我的自定义负载 { "facebook": { "attachm
我正在向 Facebook 发送一条结构化消息,其中包含指向图像文件(该文件位于 Amazon S3 中)的 URL。消息的结构根据 https://developers.facebook.com/d
我正在创建一个 FB Messenger 聊天机器人。发送图像 URL 链接时通过什么 JSON 格式生成预览。 在上面的截图中,你可以看到如果我手动发送一个 URL,FB messenger 会生成
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 2年前关闭。 Imp
我创建了一个 Facebook Messenger 机器人应用程序,我想知道当 1000 人或更多人使用时我的 Messenger 机器人应用程序是否能正常运行。有什么方法可以对其进行压力测试吗?例如
目前,这是我打开共享对话框以通过信使共享链接的代码: let invitationLink = NSURL(string:"http://somelink.com") if (UIAp
我创建了一个 Facebook 页面和 Facebook Messenger 机器人。当机器人按照我的个人资料设计工作时,我都被吓坏了。但是当我要求 friend 测试它时。我的页面名称不会出现在 M
我在尝试从 webview 获取用户上下文时收到错误代码 2018164。错误代码是2018164,但是我在文档中找不到。有人有这方面的任何信息吗? MessengerExtensions.getCo
我一直在构建一个 Facebook Messenger 机器人,但在我服务器上的 webhook 上接收来自 Messenger 的消息时遇到问题。我使用 Send API 和 Webhooks 已经
我的 Messenger 应用程序今天早些时候(几个小时前)获得了批准;应用管理页面说: Approved: pages_messaging 但是现在有人(以前不是测试人员)尝试使用它,我遇到了错误。
所有信使机器人是否一次只与一个用户直接交互?机器人可以加入两个或更多人的小组并与他们交谈吗? 最佳答案 目前,Facebook Messenger 机器人只能在一对一的基础上工作。 原因之一可能是隐私
我正在尝试读取未通过 Symfony Messenger 发送的排队消息(在 RabbitMQ 中)。似乎 Messenger 添加了一些标题,例如 headers: type: App\Me
我正在创建一个 Facebook 机器人,机器人在其中发送 5 个图像附件。 下面是发送 1 张图像的 Json 模板 "message":{ "attachment":{ "type":"ima
我正在尝试测试订阅 messaging_optins event 的 webhook ,但我正在努力手动触发该事件。 文档似乎表明使用“发送到 Messenger”插件应该会触发此事件,但在设置按钮后
我在我们的一个网站上集成了 Facebook 客户插件。我按照开发人员文档中的说明进行操作。当有活跃的 facebook session 时,它工作正常。但是,当没有事件的 fb session 时,
有一种方法可以将我的位置从移动客户端发送到 facebook-messenger,但是如何从机器人发送一些位置? (信使平台api) 当我尝试从 bot 发送类似的结构时,出现错误:(#100) Un
在开发机器人时,通常的做法是向用户显示打字指示器,而机器人在后台工作,但是是否可以检测相反的情况:用户是否正在打字或空闲?我在文档或谷歌中找不到任何信息。有人知道如何实现这一目标吗? 最佳答案 目前无
我的网站是用6角搭建的,在网站上,我得到了一个按钮和一个Facebook聊天信使。我希望当我点击按钮时,Facebook聊天将打开并聚焦光标。诸如此类的事情。有可能吗?。这是我的代码,在app.mod
我正在尝试在对 Dialogflow 的一个 Webhook 调用中发送多条消息,这些消息应传递给 Messenger。现在我的 Webhook 响应一个有问题的 JSON 正文: { 'fu
我是一名优秀的程序员,十分优秀!