我正在为我的机器人尝试Handover Protocal,但我无法得到
关于passing thread control
虽然我仍然阅读文档,但我很困惑
curl -X POST -H "Content-Type: application/json" -d '{
"recipient":{"id":"<PSID>"},
"target_app_id":123456789,
"metadata":"String to pass to secondary receiver app"
}' "https://graph.facebook.com/v2.6/me/pass_thread_control?access_token=<PAGE_ACCESS_TOKEN>"
示例pass_thread_control事件
{
"sender":{
"id":"<PSID>"
},
"recipient":{
"id":"<PAGE_ID>"
},
"timestamp":1458692752478,
"pass_thread_control":{
"new_owner_app_id":"123456789",
"metadata":"Additional content that the caller wants to set"
}
}
我想知道这里PSID
是什么,target_app_id
是什么。
任何人都可以用适当的例子来帮助我。
答案 0 :(得分:1)
我花了一点时间弄明白,所以我完全明白你的挫败感!在使用切换协议时,没有足够的文档。
我目前的用例是机器人,如果无法理解用户,可以选择与代表交谈。这是通过使用回发按钮完成的,这意味着用户激活切换。用户单击该按钮后,将运行以下代码:
graph.setAccessToken(<YOUR_APP_ACCESS_TOKEN>);
graph.setAppSecret(<YOUR_APP_SECRET>);
graph.setVersion("2.12");
graph.post(
`me/pass_thread_control?access_token=${functions.config().messenger.token}`,
handoverMessage,
(err, res) => {
if(err) {
console.log('HANDOVER ERROR:', err);
return;
}
console.log('HANDOVER SUCCESS:', res);
});
switcMessage变量是放置psid和target_app_id的地方:
let handoverMessage = {
"recipient": {
"id": <PSID>
},
"target_app_id": <YOUR_TARGET_APP_ID>
}
调用此代码会将对话的控制权交给您的target_app_id。
如果您想知道“图形”是什么,它是一个名为“fbgraph”的节点包,在处理facebook图形api时我发现它非常有用。它当然不是唯一的封装器,并且可能有更好的封装,但它到目前为止对我有用。