2017-05-08 4 views
0

Ich schreibe einen Bot für Facebook in PHP. Ich kann Text senden und schnelle Antworten senden und beantworten. Jedoch ist es mir unmöglich, auf ein Postback zu antworten. Ich benutze ngrok für localhost Testzwecke, aber ich weiß, dass es nicht das Problem seit 1. es funktioniert nicht auf meinem vps nicht 2. Alle anderen Funktionen funktionieren wie erwartet.Facebook Messenger Chatbot - Ich kann keinen Postback beantworten

Mein Code zum Senden der Post-back:

$jsonData = '{ 
     "recipient":{ 
     "id":"'.$sender.'" 
     }, 
     "message":{ 
     "attachment":{ 
      "type":"template", 
      "payload":{ 
      "template_type":"button", 
      "text":"What do you want to do next?", 
      "buttons":[ 
       { 
       "type":"postback", 
       "title":"Start Chatting", 
       "payload":"USER_DEFINED_PAYLOAD" 
       } 
      ] 
      } 
     } 
     } 
    }'; 
    $url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$access_token; 
$ch = curl_init($url); 

//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, $jsonData); 
//Set the content type to application/json 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
//Execute the request 

if(!empty($message_body['message'])){ 
    $result = curl_exec($ch); 
} 

Dann, wenn ich die Post-back erhalten bekomme ich dies von FB Bote:

{ 
    "object": "page", 
    "entry": [ 
     { 
      "id": "590445400970275", 
      "time": 1494251031827, 
      "messaging": [ 
       { 
        "recipient": { 
         "id": "590445400970275" 
        }, 
        "timestamp": 1494251031827, 
        "sender": { 
         "id": "1075794782546272" 
        }, 
        "postback": { 
         "payload": "USER_DEFINED_PAYLOAD" 
        } 
       } 
      ] 
     } 
    ] 
} 

und mein Code, um es zu analysieren:

Dies wird durch die Curl-Funktion als die Nachricht zuvor gesendet.

Doch der Bote nie eine Antwort erhält: enter image description here

Könnte jemand mir helfen herauszufinden, wo das Problem?

Vielen Dank

Antwort

0

Es an dieser Stelle einen Fehler in meinem Code war:

if(!empty($message_body['message'])){ 
    $result = curl_exec($ch); 
} 

da die $ message_body var nicht ‚Nachricht‘ ist, sondern ein ‚Postbacks‘, die Locke war nicht Senden der Antwort

Verwandte Themen