- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在使用消息机器人 API 时遇到错误。出于某种原因,它会在向特定用户发送消息时触发多个,例如 20 个。我在 Node 上使用 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);
最佳答案
这可能是 Messenger 客户端中的错误。他们在使用 Android 应用程序时遇到了很多问题。检查this bug和 this 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/
我将一个用 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
我是一名优秀的程序员,十分优秀!