2016-08-09 39 views
2

Ich versuche, einen sehr einfachen Bot einzurichten. Ich generierte ein Access Token, erstellte eine einfache index.php Datei auf meinem Webserver (SSL zertifiziert), richtete einen Webhook ein, der auf meine index.php Datei zeigt, abonnierte meinen Webhook zu meinen Seitenevents (alles auf developers.facebook.com), messaged my Bot und habe keine Antwort. Was könnte das Problem sein?Messenger Bot funktioniert nicht

(Ich habe überprüft alles: Beide Token, ich bin Admin etc.)

Hier ist mein Code:

<?php 
$access_token = "i-filled-this-out"; 
$verify_token = "i-also-filled-this-out"; 
$hub_verify_token = null; 

if(isset($_REQUEST['hub_challenge'])) { 
    $challenge = $_REQUEST['hub_challenge']; 
    $hub_verify_token = $_REQUEST['hub_verify_token']; 
} 

if ($hub_verify_token === $verify_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']; 
$message_to_reply = ''; 

$message_to_reply = 'Huh! what do you mean?'; 

//API Url 
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$access_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); 
} 

Antwort

0

Stellen Sie sicher, dass Webhook eine HTTP 200 Antwort auf die POST-Anfragen Rückkehr gesendet von Facebook.

Welchen Webserver betreiben Sie? Überprüfen Sie die Protokolle, um zu sehen, ob Ihr Webhook POST-Anfragen von Facebook erhält (und eine 200 zurückgibt).

Testen Sie Ihren Webhook am besten mit etwas wie Postboten, um die Standard-POSTs von Facebook zu imitieren und die Antworten zu überprüfen, die Sie bedienen.