尝试向此网址发送请求
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
但没效果。
答案 0 :(得分:14)
对API JSON主体进行POST调用,如下所示。
curl -X POST -H "Content-Type: application/json" -d '{
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
{
"payload":"USER_DEFINED_PAYLOAD"
}
]
}' "https://graph.facebook.com/v2.6/me/thread_settings?access_token=PAGE_ACCESS_TOKEN"
答案 1 :(得分:4)
您可以成功设置它,但是没有看到它,因为您已经与Facebook页面进行了现有对话。
成功设置"入门"线程,只有在删除现有会话线程并开始新线程时才会看到它。
只有当您第一次与Facebook页面进行交互时才会显示“开始使用”按钮,因此,如果您之前已向该页面发送了消息,则您将无法看到"开始使用"除非您从Facebook Messenger客户端(移动或桌面)删除该线程。
有一些条件可以看到欢迎屏幕和“开始使用”按钮:
- 它们仅在用户第一次与Messenger上的页面交互时呈现
- 只有应用的管理员/开发人员/测试人员才能在应用处于开发模式时看到它
- 您的应用必须订阅您的webhook上的回发
答案 2 :(得分:4)
目前的格式是, https://github.com/misterGF/CoPilot/tree/master/src/components
{
"get_started":{
"payload":"GET_STARTED_PAYLOAD"
}
}
答案 3 :(得分:3)
感谢有价值的评论,经过一些解决方法发现此解决方案正常工作,根据facebook指南
需要仅向ONCE发送一个独立的POST请求
https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN
使用邮递员发送这样的请求
here
如果成功设置了“入门”按钮,您将收到以下回复
{
"result": "Successfully added new_thread's CTAs"
}
答案 4 :(得分:2)
您必须运行适当的curl命令进行设置。检查这个链接,看看他们的例子。 https://developers.facebook.com/docs/messenger-platform/implementation#send_api
答案 5 :(得分:2)
npm中有一个库包含了POST / DELETE操作的功能:https://www.npmjs.com/package/fb-get-started-button
$ npm install -g fb-get-started-button
$ fb-get-started-button add <YOUR PAGE ACCESS TOKEN>
Adding "Get Started" button with the payload "GET_STARTED"
Successfully added new_thread's CTAs
$ fb-get-started-button remove <YOUR PAGE ACCESS TOKEN>
Removing "Get Started" button
Successfully deleted all new_thread's CTAs
答案 6 :(得分:2)
使用您的网页访问令牌发送帖子请求
https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR-TOKEN
以下数据
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
Facebook文档: Get Started Button
希望这种新方法能解决您的问题。不要忘记首先使用Facebook Web删除已发送的消息以查看操作中的按钮。
答案 7 :(得分:0)
我认为更好的解决方案是使用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')
}
}
这又调用了platforms.facebook.firstRun
platforms.facebook.firstRun = function (userId) {
return Promise.all([
platforms.facebook.sendThread(facebookTemplates.greet(), 'Greeting'),
platforms.facebook.sendThread(facebookTemplates.getStarted(), 'Get Started'),
platforms.facebook.sendThread(facebookTemplates.getPersistentMenu(), 'Persistent Menu'),
platforms.facebook.sendThread(facebookTemplates.getDomainWhitelisting(), 'Domain Whitelisting'),
platforms.facebook.getProfile(userId)
])
}
platforms.facebook.sendThread如下所示 //调用Facebook图形api来更改机器人设置
platforms.facebook.sendThread = function (template, cmd) {
return new Promise((resolve, reject) => {
// Start the request
request({
url: platforms.facebook.GRAPH_BASE_URI + '/me/thread_settings?access_token=' + endpoints.FACEBOOK_PAGE_ACCESS_TOKEN,
method: 'POST',
headers: { 'Content-Type': 'application/json' },
form: template
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
// Print out the response body
resolve({ status: response.statusCode, data: body })
} else {
// TODO: Handle errors
reject({ status: response.statusCode, data: error })
}
});
})
}
注意facebookTemplates.getStarted(),它实际上有json for get started,如下所示
templates.getStarted = function () {
return {
setting_type: "call_to_actions",
thread_state: "new_thread",
call_to_actions: [
{
payload: payloads.FACEBOOK_GET_STARTED
}
]
}
}
完全可插入的代码体系结构,用于在所有聊天机器人平台上执行首次运行操作。完全适用于我的机器人HERE
答案 8 :(得分:0)
在我们的案例中,以下工作:
点击thread_settings
API
https://graph.facebook.com/v2.6/me/thread_settings?access_token=<YOU FACEBOOK PAGE'S PAGE ACCESS TOKEN>
通过以下示例JSON
{ "setting_type": "call_to_actions", "thread_state": "new_thread", "call_to_actions": [ { "payload": "Start" } ] }
{ "result": "Successfully added new_thread's CTAs" }
答案 9 :(得分:0)
非常简单的解决方案,只需在终端中打开并转到您的主机文件夹位置(在我的/var/www/html/booking/public/facebookbot
中)并粘贴以下代码:
curl -X POST -H "Content-type: application/json" -d '{
"setting-type":"call_to_actions",
"thread_state":"new_thread",
"get_started":{
"payload":"GET_STARTED_PAYLOAD"
}
}' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=YOUR_ACCESS_TOKEN"
并按Enter,确保输入正确的访问令牌,也可以识别上述代码示例中从有效负载(即GET_STARTED_PAYLOAD)按下启动按钮的时间。