Facebook 聊天机器人以 "Action Unsuccessful" 错误响应持久菜单回发
Facebook chatbot responds with "Action Unsuccessful" error to Persistent Menu postback
直到几天前,我的 facebook Chatbot 的持久菜单都运行良好,当我点击一个持久菜单项时,每隔几次尝试就会出现一个弹出错误:
行动不成功
将您的消息传递给机器人时出错。
请稍后再试。
这种情况偶尔会发生,我检查过当这种情况发生时,我的 PHP 代码端没有收到来自 Facebook 的任何回传。如果没有错误,回发工作正常。还有其他人收到此错误吗?
我的永久菜单是这样设置的:
//-----------Persistent Menu
$url = 'https://graph.facebook.com/v2.6/me/messenger_profile?access_token='.$access_token;
$ch = curl_init($url);
$jsonData = '{
"persistent_menu":[
{
"locale":"default",
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"View in Chinese",
"type":"postback",
"payload":"mainMenu"
},
{
"title":"View in English",
"type":"postback",
"payload":"mainMenuEN"
}
]
},
{
"locale":"zh_TW",
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"View in Chinese",
"type":"postback",
"payload":"mainMenu"
},
{
"title":"View in English",
"type":"postback",
"payload":"mainMenuEN"
}
]
},
{
"locale":"en_US",
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"View in Chinese",
"type":"postback",
"payload":"mainMenu"
},
{
"title":"View in English",
"type":"postback",
"payload":"mainMenuEN"
}
]
}
]
}';
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
我遇到了同样的问题。它已通过以下更改修复:
App settings -> [Products] Messenger -> Settings -> Webhooks -> Edit events -> Add messaging_postbacks
您可能忘记添加事件,并且不允许 FB 向服务器发送任何按钮的回发/负载。
彻底检查按钮类型是否正确指定为以下之一:web_url
或 postback
小写。
还请记住,根据 FB Developers Doc
,永久菜单需要 pages_messaging permission
如果您已经启用 messaging_postbacks
但仍然收到此错误:
您正在使用的 Page Access Token
可能需要在您的 webhook 中更新。
返回开发者应用仪表板。 Select Messenger
>> Settings
。
向下滚动到 "Token Generation"
部分:
Select 从下拉列表中选择您的页面,并复制新的访问令牌以在您的网络钩子中使用。
我遇到了同样的问题,在到处寻找答案后这对我有用。
直到几天前,我的 facebook Chatbot 的持久菜单都运行良好,当我点击一个持久菜单项时,每隔几次尝试就会出现一个弹出错误: 行动不成功 将您的消息传递给机器人时出错。 请稍后再试。
这种情况偶尔会发生,我检查过当这种情况发生时,我的 PHP 代码端没有收到来自 Facebook 的任何回传。如果没有错误,回发工作正常。还有其他人收到此错误吗?
我的永久菜单是这样设置的:
//-----------Persistent Menu
$url = 'https://graph.facebook.com/v2.6/me/messenger_profile?access_token='.$access_token;
$ch = curl_init($url);
$jsonData = '{
"persistent_menu":[
{
"locale":"default",
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"View in Chinese",
"type":"postback",
"payload":"mainMenu"
},
{
"title":"View in English",
"type":"postback",
"payload":"mainMenuEN"
}
]
},
{
"locale":"zh_TW",
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"View in Chinese",
"type":"postback",
"payload":"mainMenu"
},
{
"title":"View in English",
"type":"postback",
"payload":"mainMenuEN"
}
]
},
{
"locale":"en_US",
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"View in Chinese",
"type":"postback",
"payload":"mainMenu"
},
{
"title":"View in English",
"type":"postback",
"payload":"mainMenuEN"
}
]
}
]
}';
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
我遇到了同样的问题。它已通过以下更改修复:
App settings -> [Products] Messenger -> Settings -> Webhooks -> Edit events -> Add messaging_postbacks
您可能忘记添加事件,并且不允许 FB 向服务器发送任何按钮的回发/负载。
彻底检查按钮类型是否正确指定为以下之一:web_url
或 postback
小写。
还请记住,根据 FB Developers Doc
,永久菜单需要pages_messaging permission
如果您已经启用 messaging_postbacks
但仍然收到此错误:
您正在使用的 Page Access Token
可能需要在您的 webhook 中更新。
返回开发者应用仪表板。 Select Messenger
>> Settings
。
向下滚动到 "Token Generation"
部分:
Select 从下拉列表中选择您的页面,并复制新的访问令牌以在您的网络钩子中使用。
我遇到了同样的问题,在到处寻找答案后这对我有用。