我很想知道不同的实时信使应用程序的架构.他们使用任何通用协议/架构吗?
我正在寻找一个库来向Viber messenger服务器发出请求.我需要:
我知道Viber没有为开发人员提供开放API,但也许有人有反向生成Viber协议的经验或其他与Viber通信的方法.或者,如果有人能够做到,请写信给我,我有一个建议.
我目前正在尝试使用Messenger平台制作一个Messenger Bot.我有一个Facebook页面,应用程序,一切设置,它目前工作时我(应用程序的管理员)消息它.所以,我让一些测试用户用更多的用户来测试它.但是,每当我作为测试用户登录时,我似乎都无法向页面发送消息.作为测试用户,我无法访问该页面,直接Messenger链接会显示"拒绝访问"页面.
作为管理员,我尝试将此测试用户添加为角色下的"测试人员",但我也获得了更多"访问被拒绝"消息.
那么,有没有办法让Facebook测试用户与我预先批准的Messenger Bot进行交互?
在为Messenger bot配置欢迎消息时,我遇到了一个奇怪的错误.我一直在使用相同的代码(如下所示),它一直工作到昨晚.我和cURL和Postman一起尝试过.它们都不起作用.
curl -X POST -H "Content-Type: application/json" -d '{
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
{
"message":{
"text":"Welcome to My Company!"
}
}
]
}' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_ACCESS_TOKEN>"
Run Code Online (Sandbox Code Playgroud)
执行上述代码时出现错误消息:
{"error":{"message":"(#100) Invalid keys \"message\" were found in param \"call_to_actions[0]\".","type":"OAuthException","code":100,"fbtrace_id":"Hn42Wa+hapI"}}%
Run Code Online (Sandbox Code Playgroud)
我可以确认PAGE_ID和PAGE_ACCESS_TOKEN都正确,因为尝试删除欢迎消息时,以下代码正常工作.
curl -X POST -H "Content-Type: application/json" -d '{
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
{
"message":{
"text":"Welcome to My Company!"
}
}
]
}' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_ACCESS_TOKEN>"
Run Code Online (Sandbox Code Playgroud)
此外,我使用的代码与Facebook官方API文档中显示的完全相同.我不明白为什么它说"消息"不是有效的密钥.有人遇到过同样的问题吗?Facebook改变了他们的api吗?
任何帮助都感激不尽!
看来(未记录)对于Facebook Bots聊天系统中的按钮消息类型,最多有3个按钮.这似乎是武断和限制的.有谁知道有没有办法超过3个按钮?
要清楚,我指的是以下消息JSON:
{
"recipient":{
"id":"USER_ID"
},
"message":{
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"What do you want to do next?",
"buttons":[
{
"type":"web_url",
"url":"https://petersapparel.parseapp.com",
"title":"Show Website"
},
{
"type":"postback",
"title":"Start Chatting",
"payload":"USER_DEFINED_PAYLOAD"
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在玩一个简单的Facebook Messenger聊天机器人,我无法按顺序发送消息.
在上面的例子中,它应该按顺序打印"Hello!","1","2","3".我目前正在关注这里发现的Facebook文档来实现这个简单的文本消息功能.我在下面包含了我的Express Node.JS服务器代码:
定义sendTextMessage()
功能:
var request = require("request");
function sendTextMessage(user, text) {
messageData = {
text: text
};
request({
url: "https://graph.facebook.com/v2.6/me/messages",
qs: {access_token: PAGE_ACCESS_TOKEN},
method: "POST",
json: {
recipient: {id: user},
message: messageData
}
}, function(error, response, body) {
if (error) {
console.log("Error sending message: ", error);
} else if (response.body.error) {
console.log("Error: ", response.body.error);
} else {
console.log("Message successfully send.")
}
});
}
Run Code Online (Sandbox Code Playgroud)
用它来发送回复:
sendTextMessage(user, "Hello!");
sendTextMessage(user, "1");
sendTextMessage(user, "2");
sendTextMessage(user, "3");
Run Code Online (Sandbox Code Playgroud)
我甚至尝试实现一个对消息进行 …
我正在使用Facebook Messenger平台创建通用模板.我目前正在使用ngrok进行本地测试,而我为通用模板输入的image_url永远不会显示在Messenger中.发送通用模板,图像只是空白.使用Inspect,我可以看到图像的CSS是:
background-image: url("https://external.xx.fbcdn.net/safe_image.php?d=AQA1nM3pKJnllzq0&url=https%3A%2F%2Fdc3858ef.ngrok.io%2Fassets%2Fimages%2Fvideo_image.jpg&_nc_hash=AQAlBOE-vbT8cl-i");
Run Code Online (Sandbox Code Playgroud)
如果我打开这个URL,它只是一个黑色屏幕,中间有一个白色像素.这是我使用的消息数据:
messageData = {
recipient: {
id: senderID
},
message:{
attachment:{
type: "template",
payload: {
template_type: "generic",
elements: [
{
title:"Test Video Link",
image_url: MY-NGROK_DOMAIN + "/assets/images/video_image.jpg",
subtitle: "Check out this video!",
default_action: {
type: "web_url",
url: "www.google.com"
}
}
]
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
如果我在浏览器中打开它,这个image_url工作正常.同样,如果我创建"图像"类型的消息数据而不是"模板",则此图像将加载到Messenger中.
如何让我的image_url正确加载通用模板?
所以这是我一直试图思考大约16个小时的事情.我用PHP/CuRl/etc编写代码 - 机器人工作,一切都很好.我目前的问题是弄清楚如何禁用机器人并允许人们开始与客户/发件人聊天.
有没有人成功,为此创建了一条路线?我的意思是,从我看到的内容非常困难,你必须禁用等等.为我的客户付出了很多努力.
感谢您的任何意见.
有一种方法可以从移动客户端将我的位置发送到facebook-messenger,但是如何从机器人发送一些位置?(信使平台api)
当我尝试从bot发送类似的结构时,我收到一个错误:
(#100) Unsupported attachment type
有没有办法从机器人发送我的位置?
收到的bot消息示例:
{
"object": "page",
"entry": [{
"id": "1719442148306048",
"time": 1466780344978,
"messaging": [{
"sender": {"id": "123456789"},
"recipient": {"id": "987654321"},
"timestamp": 1466780344847,
"message": {
"mid": "mid.12345698875:c80066d69b6cee1779",
"seq": 65,
"attachments": [{
"title": "Dmitry's Location",
"url": "Link to bing.com through facebook redirect"
"type": "location",
"payload": {"coordinates": {"lat": 55, "long": 37}}
}]
}
}]
}]
}
Run Code Online (Sandbox Code Playgroud)
我尝试发送带附件的邮件,如下所示:
"attachment": {
"type": "location",
"payload": {"coordinates": {"lat": 55, "long": 37}}
}
Run Code Online (Sandbox Code Playgroud) 上下文
我正在研究facebook messenger机器人,并且遇到了工作流程问题.
为了创建它我使用ngrok在我的本地制作一个facebook测试应用程序挂钩,它工作正常.
现在,bot正在进行测试,另一个应用程序将webhook指向舞台服务器.
对于生产服务器,我打算做一个将webhook指向它的生产应用程序.
题
但是,由于必须将应用程序附加到页面以开始对话,我如何测试几个机器人?我需要3页(本地测试,分期测试和制作)吗?
或者有Facebook方式吗?(测试版的app目前在messenger bot上不起作用,已知错误)
或者也许是一个好习惯?