2016-11-03 4 views
1

Donc, actuellement je développe un chatbot simple, facebook messenger. J'utilise l'URL localhost pour le tunnel via ngrok. J'ai également créé une application facebook et une page sur laquelle bot devrait fonctionner. J'ai également créé un webhook pour cela. Tout a été fait avec succès sans aucun problème. Mais le problème est que je ne peux pas obtenir la réponse de bot pour travailler. Je reçois le message de l'utilisateur, mais je ne peux pas obtenir le bot pour répondre. Donc, l'utilisateur ne reçoit rien en guise de réponse. Bien que dans l'interface web de ngrok je puisse voir que la chaîne que je veux que le bot réponde est là, mais d'une façon ou d'une autre elle ne reçoit pas l'utilisateur comme réponse. Voici le code pour cela. Quelqu'un peut-il signaler l'erreur? voici le ngrok inspectentFacebook messenger chatbot question Reponse

enter image description here

Voici le code de mon fichier php qui est appelé.

<?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

Je pense que vous avez juste besoin d'être sûr que vous saisissez la sortie de curl_exec. dans cet exemple, vous n'êtes pas. – WEBjuju

+0

Je ne comprends pas votre suggestion. Pouvez-vous s'il vous plaît expliquer plus? Suggérez-vous que je devrais prendre curl_exec(); sortie dans une variable et le retourner? – LearningNew

+0

voir la solution .... $ output = curl_exec ($ ch); echo $ output; – WEBjuju

Répondre

0

Je l'ai enfin mis au travail. Voici le code pour cela.

<?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);}?>