2016-11-03 8 views
1

Also ich entwickle gerade einen einfachen Facebook Messengerbot. Ich benutze localhost URL, um über ngrok zu tunneln. Ich habe auch eine Facebook-App und eine Seite erstellt, auf der der Bot laufen soll. Ich habe auch einen Webhook dafür erstellt. Alles wurde erfolgreich ohne Probleme durchgeführt. Aber das Problem ist, ich kann nicht die Antwort von Bot zur Arbeit bekommen. Ich empfange die Nachricht des Benutzers, aber ich kann den Bot nicht dazu bringen, zu antworten. Der Benutzer erhält also nichts als Antwort. Obwohl in Ngrok Web-Interface kann ich sehen, dass die Zeichenfolge, die ich den Bot antworten möchte, ist da, aber irgendwie wird es nicht an den Benutzer als Antwort gesendet. Hier ist der Code dafür. Kann jemand den Fehler aufzeigen? hier ist dieFacebook Messenger Chatbot Antwort Ausgabe

enter image description here

Hier ist der Code meiner PHP-Datei ngrok zu inspizieren, die aufgerufen wird.

<?php 
if (isset($_GET['hub_verify_token'])) { 
if ($_GET['hub_verify_token'] === 'verify_token') { 
    echo $_GET['hub_challenge']; 
    return; 
} else { 
    echo 'Invalid Verify Token'; 
    return; 
}}$input = json_decode(file_get_contents('php://input'), true);if (isset($input['entry'][0]['messaging'][0]['sender']['id'])) { 

$sender = $input['entry'][0]['messaging'][0]['sender']['id']; 
$message = $input['entry'][0]['messaging'][0]['message']['text']; 

$jsonData = [ 
    'recipient' => [ 'id' => $sender], 
    'message' => [ 'text' => $message] 
]; 

$url = "https://graph.facebook.com/v2.8/me/messages?access_token=EAAQlAQ9iGz8BABZATCZAN0hd5eyJ2mCFZBR9rDuZARkEmeqh8obC0yZBpiGxFuNbAyi6HHFI2lZCCiILeFNFDuiy2Sb9OHpLfDSIBhCsv7FgglOrzZAqy9yDFlUTZCEHfRfXBYjZCQOj42Vhl4muvyGIqqqsGDP1a0FYcGo9on3QlzgKp5JL8XbZBx"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($jsonData)); 
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); 
curl_exec($ch); 
curl_close($ch);}?> 
+0

Ich denke, Sie müssen nur sicher sein, dass Sie die Ausgabe von curl_exec greifen. In diesem Beispiel bist du nicht. – WEBjuju

+0

Ich verstehe Ihren Vorschlag nicht ganz. Kannst du bitte mehr erklären? Schlägst du vor, dass ich curl_exec() nehmen sollte? Ausgabe in einer Variablen und zurückgeben? – LearningNew

+0

siehe die Lösung .... $ output = curl_exec ($ ch); echo $ output; – WEBjuju

Antwort

0

ich es endlich zu arbeiten. Hier ist der Code dafür.

<?php if (isset($_GET['hub_verify_token'])) { 
if ($_GET['hub_verify_token'] === 'new_verify_token') { 
    echo $_GET['hub_challenge']; 
    return; 
} else { 
    echo 'Invalid Verify Token'; 
    return; 
}}$input = json_decode(file_get_contents('php://input'), true);if(isset($input['entry'][0]['messaging'][0]['sender']['id'])){ 

$sender = $input['entry'][0]['messaging'][0]['sender']['id']; 
$message = $input['entry'][0]['messaging'][0]['message']['text']; 

$jsonData = [ 
    'recipient' => [ 'id' => $sender], 
    'message' => [ 'text' => $message] 
]; 

$url = "https://graph.facebook.com/v2.8/me/messages?access_token=EAAQlAQ9iGz8BAI5woul1IjMJFVcLW21ZBoZBbeBNaF80wvaPzdZBuDfEJ8NK7PPozUiVNfEjfhZAoWRJAqYHc7yiTA4J1wFOHZCs6DJYcMoPtEBuz6Icw22gNZCSjunjBcUMssXXnkmPEde4J5nU2AarXTUVxsujYPRS7ew97tCiYPDUY4tJSh"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($jsonData)); 
curl_exec($ch); 
curl_close($ch);}?> 
Verwandte Themen