在我看来,更好的解决方案是使用Microsoft Bot Framework并使用其/ firstRun发送messenger get started按钮
function firstRun(session) {
console.log('This user is running our bot the first time')
createUser(session)
platforms.firstRun(session.message.user.id, session.message.address.channelId)
.then((values) => {
for (let value of values) {
if (value.data.firstName && value.data.lastName) {
session.userData.user.profile = value.data
}
}
})
.catch((errors => {
console.log(errors);
}))
reply(session)
session.endDialog()
}
platforms.firstRun看起来如下所示
platforms.firstRun = function (userId, channel) {
switch (channel) {
case platforms.channels.emulator:
return Promise.reject('none')
case platforms.channels.facebook:
return platforms.facebook.firstRun(userId)
case platforms.channels.skype:
return Promise.reject('none')
default:
return Promise.reject('none')
}
}
9 回答
对API JSON主体进行POST调用,如下所示 .
参考:Facebook messenger get started button
Postman screentshot
您可以成功设置它,但是没有看到它,因为您已经与Facebook页面进行了现有对话 .
成功设置“Get Started”主题后,只有在删除现有会话主题并开始新主题时才会看到它 .
只有在您第一次与Facebook页面交互时才会显示“开始”按钮,因此,如果您之前已向该页面发送消息,除非您从Facebook Messenger客户端删除该主题,否则您将无法看到“开始使用”(无论是移动还是桌面) .
来自FB Messenger Docs:
目前的格式是,https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN
{“get_started”:{“payload”:“GET_STARTED_PAYLOAD”}}
感谢有 Value 的评论,经过一些解决方法发现这个解决方案工作,根据Facebook指南
需要仅向ONCE发送一个独立的POST请求到此URL
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
用邮递员发送这样的请求here
如果成功设置了“入门”按钮,您将收到以下响应
你必须运行一个适当的curl命令来设置它 . 检查这个链接,看看他们的例子 . https://developers.facebook.com/docs/messenger-platform/implementation#send_api
npm中有一个库包含POST / DELETE操作的功能:https://www.npmjs.com/package/fb-get-started-button
使用您的页面访问令牌发送帖子请求
以下数据
Facebok Docs: Get Started Button
希望这种新方法能解决您的问题 . 不要忘记首先使用Facebook Web删除已发送的消息以查看操作中的按钮 .
在我看来,更好的解决方案是使用Microsoft Bot Framework并使用其/ firstRun发送messenger get started按钮
platforms.firstRun看起来如下所示
这反过来调用platforms.facebook.firstRun
platforms.facebook.sendThread如下所示//调用Facebook图形api来更改机器人设置
注意facebookTemplates.getStarted(),它实际上有json for get started,如下所示
完全可插拔的代码体系结构,用于在所有聊天机器人平台上执行首次运行操作 . 在我的机器人上完美运行HERE
在我们的例子中,以下工作:
thread_settings
APIhttps://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>