私はPHPでメッセンジャーボットを構築しようとしています。http://blog.adnansiddiqi.me/develop-your-first-facebook-messenger-bot-in-php/とhttps://medium.com/@nadeem.manzoor0/facebook-messenger-platform-web-hook-setup-in-php-893ead06746b#.lcpp0jh9oです。Messenger Botのhub_verify_indexとhub_challengeエラー
そして私はコードをメッセンジャーボットから操作するためにnGrok v2.1.18
を使用しました。 localhost
には、すでにxampp control panel v3.2.1
がインストールされています。
<?php
/* validate verify token needed for setting up web hook */
if (isset($_GET['hub_verify_token'])) {
if ($_GET['hub_verify_token'] === 'here_is_my_token') {
echo $_GET['hub_challenge'];
return;
} else {
echo 'Invalid Verify Token';
return;
}
} else {
echo $_GET['hub_verify_token'];
echo $_GET['hub_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'];
/**
* Some Basic rules to validate incoming messages
*/
if(preg_match('[time|current time|now]', strtolower($message))) {
// Make request to Time API
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)');
$result = file_get_contents("http://www.timeapi.org/utc/now?format=%25a%20%25b%20%25d%20%25I:%25M:%25S%20%25Y");
if($result != '') {
$message_to_reply = $result;
}
} else {
$message_to_reply = 'Huh! what do you mean?';
}
print $message_to_reply;
//API Url
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token=<my-token>';
//Initiate cURL.
$ch = curl_init($url);
//The JSON data.
$jsonData = '{
"recipient":{
"id":"'.$sender.'"
},
"message":{
"text":"'.$message_to_reply.'"
}
}';
//Encode the array into JSON.
$jsonDataEncoded = $jsonData;
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
//Execute the request
if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ch);
}
?>
そして、私はすでにこのように私のFacebookアプリのページにURLウェブフックセット:
は、ここに私のwebhook.php
でhttps://903....ngrok.io/FunBot/webhook.php
ともトークン検証設定します。問題はない。
私のページからメッセージを送信すると、nGrok
の返信が200 OK
で表示されます。しかし、messegerボットでは、何も返信しません。
したがって、私はjson_decode(file_get_contents('php://input'), true)
からログに記録しようとしましたが、エラーはありません。
と"Undefined index: hub_verify_token in ......."
のエラーが発生しました。$_GET['hub_verify_token']
と$_GET['hub_challenge']
を印刷しようとするとエラーが発生します。
undefined index
のエラー結果はnGrok
です。
私はこれら2つの問題がボットの返信を引き起こす可能性があるとは確信していません。
me/messages?
を$url
からpage id
または他のIDに変更する必要がありますか。
私は既に、ボットの返信問題についてstackoverflow
に関する多くの投稿を読んでいますが、それは私のためには機能しません。私はボットで私にとって初めてのことなので、どの部分が間違っているのか分かりません。
私は非常に任意の提案に感謝しています。
エラーメッセージから行番号を削除しないでください。このスクリプトの先頭にある '$ _GET ['hub_verify_token']'のみを使用しています。これは 'isset'文でラップされています。そのコードで' Undefined index:hub_verify_token'というエラーを得ることはむしろ不可能です。 – CBroe
@CBroe私は 'isset()'でチェックせずにエコーを試みるときに、 'undefined index'エラーが出ます。私はそれが下位投票に値しないと思う。 – Cloud
@CBroe私はすでに私の質問を更新しました。もう一度私をチェックしてもらえますか? – Cloud