2016-10-26 13 views
0

私は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.phphttps://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です。 undefine index result image

私はこれら2つの問題がボットの返信を引き起こす可能性があるとは確信していません。

me/messages?$urlからpage idまたは他のIDに変更する必要がありますか。

私は既に、ボットの返信問題についてstackoverflowに関する多くの投稿を読んでいますが、それは私のためには機能しません。私はボットで私にとって初めてのことなので、どの部分が間違っているのか分かりません。

私は非常に任意の提案に感謝しています。

+0

エラーメッセージから行番号を削除しないでください。このスクリプトの先頭にある '$ _GET ['hub_verify_token']'のみを使用しています。これは 'isset'文でラップされています。そのコードで' Undefined index:hub_verify_token'というエラーを得ることはむしろ不可能です。 – CBroe

+0

@CBroe私は 'isset()'でチェックせずにエコーを試みるときに、 'undefined index'エラーが出ます。私はそれが下位投票に値しないと思う。 – Cloud

+0

@CBroe私はすでに私の質問を更新しました。もう一度私をチェックしてもらえますか? – Cloud

答えて

0

最後に、解決策が見つかりました。主な問題はSSL問題です。 SSL証明書を使用しないと、コードが正常であってもボットは何も返信しません。私にはSSLがありません。だから、私は奇妙な問題で立ち往生しました。

私はを使用して自分のコードリポジトリをアップロードし、urlでHerokuを再度設定しました。 Herokuを使用すると、SSLを心配する必要はありません。さて、すべては問題ありません。

このlinkは、メッセンジャーボットを作成するのに非常に役立ちます。

私の答えが誰かに役立つことを望みます。

関連する問題