我在php中有相对简单的Facebook Messenger bot用于研究目的:
$access_token = "xxxxxxx";
$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];
if ($verify_token === 'MY_VERIFICATION_TOKEN') {
echo $challenge;
}
$input = json_decode(file_get_contents('php://input'), true);
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
$message = $input['entry'][0]['messaging'][0]['message']['text'];
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$access_token.';
$ch = curl_init($url);
if($message=="hi")
{
$jsonData = '{
"recipient":{
"id":"'.$sender.'"
},
"message":{
"text":"hello!"
}
}';
}
$jsonDataEncoded = $jsonData;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
我的cron工作与开发人员指南相同
curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=xxxxxx"
基本上,除了连接和一个响应之外什么也没有
当我个人发送“hi”(作为页面所有者和应用程序所有者)时,我的机器人总是正确地响应,但当其他人试图打个招呼时 – 机器人有时会响应,有时不会(通常不会,在5个案例中机器人响应一次)
另外,当我访问我的脚本网址时,它会给我一个错误:
{"error":{"message":"(#100) The parameter recipient is required","type":"OAuthException","code":100,"fbtrace_id":"DvrO1UEw5BJ"}}
请帮我设置一下.
解决方法:
如果您忘记设置内容类型,也可能会发生这种情况.