2016-05-27 18 views
0

Ich habe in den letzten paar Tagen mit der Facebook Messenger Platform herumgespielt und bin auf ein Problem gestoßen. PHP war die Hauptsprache.Facebook Messenger Bot - PHP cURL Nachrichten

Erfolgreich, ich bin in der Lage, ein paar APIs in das System zu implementieren, durch Klartext. (Siehe Bild unten)

enter image description here

Dies ist, was das System wie folgt aussieht:

$input = json_decode(file_get_contents('php://input'), true); 
$senderId = $input['entry'][0]['messaging'][0]['sender']['id']; 
$message = $input['entry'][0]['messaging'][0]['message']['text']; 
$answer = "I don't understand that. Is that another language? Type 'hi' to get started."; 

if($message == "hi") { 
    $answer = "Yo!"; 
} 

All dies kommt aus dem Facebook Messenger Getting Started, wenn Sie nicht vertraut sind.

Was ich jetzt versuche, ist ein Bild durch cURL auf JSON übergeben. Das ist etwas, mit dem ich nicht vertraut bin, aber ich habe zwei großartige Quellen gefunden, die mir bei dieser Aufgabe helfen. POSTing JSON Data With PHP cURL und Create nested list from Multidimensional Array. Hier

ist das Ergebnis:

if($message == "test") { 
$data = array("message" => array("attachement" => array('"type" => "image"'),"payload" => array('"url" => "http://example.com"')));                  
$data_string = json_encode($data);                     

$ch = curl_init('https://graph.facebook.com/v2.6/me/messages?access_token=TOKEN_GOES_HERE');                  
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',                     
    'Content-Length: ' . strlen($data_string))                  
);                            
$answer = curl_exec($ch); 
} 

Hier ist die Antwort, die ich erhalten: enter image description here

weiß ich sicher, dass die Parameter nicht richtig von cURL abgeholt. Allerdings, mein begrenztes Wissen über cuRL, suggeriert etwas anderes. Meine Frage ist, wie könnte ich das noch erreichen? Ich möchte in der Lage sein, ein Bild durch JSON in Messenger zu übertragen, mit PHP.

Antwort

1

Ich denke, Ihre Post-Anfrage funktioniert gut, aber aufgrund des Fehlers haben Sie nicht die gesamten JSON-Daten übergeben.

Im Folgenden sehen Sie, wie eine generische Nachricht aussieht, wo haben Sie den Empfänger in Ihre Daten eingetragen?

{ 
    "recipient":{ 
    "id":"USER_ID" 
    }, 
    "message":{ 
    "attachment":{ 
     "type":"image", 
     "payload":{ 
     "url":"https://petersapparel.com/img/shirt.png" 
     } 
    } 
    } 
} 

Referenz: https://developers.facebook.com/docs/messenger-platform/send-api-reference#guidelines

+0

Vielen Dank für immer zu mir zurück. Ich habe die Benutzer-ID über '$ senderId' übergeben. Das kam von dem ersten Codebeispiel, das ich zur Verfügung gestellt habe. Beide Beispiele sind miteinander kombiniert. Könnte es einen Konflikt mit beiden json_encode geben? – rniller

+0

Also haben Sie den Empfänger übergeben und es kam immer noch als "Der Parameter Empfänger ist erforderlich" zurück? – iownthegame

+0

ja, das ist richtig. – rniller

Verwandte Themen