2017-02-09 5 views
0

Mit Facebook Messenger senden strukturierte Nachrichten mit generischen Vorlage auf der Grundlage der offiziellen Dokumentation here. verwende Java, um das JSON-Objekt zu konstruieren. Immer wenn ich den JSON an Facebook sende, bekomme ich eine Antwort "400- bad request" I. Ich habe versucht, mit einem Online-Tool zu vergleichen, das Java generiert JSON zu dem in der Dokumentation zur Verfügung gestellt und abgesehen von den Variablen Namen nichts anderes ist anders. Ich kann nicht verstehen, wo ich beim Aufbau des JSON falsch liege.Facebook Messenger API: Strukturierte Nachricht senden (Java)

JSON generiert aus Java-Code ..

 { 
"message": { 
    "attachment": { 
     "payload": { 
      "elements": [ 
       { 
        "buttons": [ 
         { 
          "title": "show website", 
          "type": "web_url", 
          "url": "https://google.com" 
         }, 
         { 
          "payload": "sample payload", 
          "title": "Hi There", 
          "type": "postback" 
         } 
        ], 
        "default_action": { 
         "fallback_url": "https://www.google.com/", 
         "messenger_extensions": true, 
         "type": "web_url", 
         "url": "https://www.google.com/", 
         "webview_height_ratio": "tall" 
        }, 
        "image_url": "https://s3-ap-southeast-1.amazonaws.com/primary-4495.png", 
        "subtitle": "Sample Sub Title", 
        "title": "Sample Title" 
       } 
      ], 
      "template_type": "generic" 
     }, 
     "type": "template" 
    } 
}, 
"recipient": { 
    "id": "988459377921053" 
} 

}

Entsprechende Java-Code ..

  JSONObject root1 = new JSONObject(); 
     JSONObject c01 = new JSONObject(); 
     JSONObject c11 = new JSONObject(); 

     JSONObject attachment = new JSONObject(); 
     JSONObject payload = new JSONObject(); 
     JSONArray arrayButton= new JSONArray(); 
     JSONArray arrayelements= new JSONArray(); 
     JSONObject elementsObj = new JSONObject(); 
     JSONObject defaultAction = new JSONObject(); 

     JSONObject buttons1 = new JSONObject(); 
     JSONObject buttons2 = new JSONObject(); 

     root1.put("recipient", c01); 
      c01.put("id", userId); 

     root1.put("message", c11); 
      c11.put("attachment", attachment); 
       attachment.put("type", "template"); 
       attachment.put("payload", payload); 
        payload.put("template_type", "generic"); 
        payload.put("elements", arrayelements); 
         arrayelements.put(elementsObj); 
          elementsObj.put("title", "Sample Title"); 
          elementsObj.put("image_url", "https://s3-ap-southeast-1.amazonaws.com/primary-4495.png"); 
          elementsObj.put("subtitle", "Sample Sub Title"); 
          elementsObj.put("default_action", defaultAction); 

           defaultAction.put("type", "web_url"); 
           defaultAction.put("url", "https://www.google.com/"); 
           defaultAction.put("messenger_extensions", true); 
           defaultAction.put("webview_height_ratio", "tall"); 
           defaultAction.put("fallback_url", "https://www.google.com/"); 



           buttons1.put("type", "web_url"); 
           buttons1.put("url", "https://google.com"); 
           buttons1.put("title", "show website"); 
          arrayButton.put(buttons1); 


           buttons2.put("type", "postback"); 
           buttons2.put("title", "Hi There"); 
           buttons2.put("payload", "sample payload"); 
          arrayButton.put(buttons2); 

          elementsObj.put("buttons", arrayButton); 

Wie Sie sehen können, wenn die oben json mit der Probe zu vergleichen einer vorgesehen in die offizielle Dokumentation, nur die Reihenfolge der Elemente ist unterschiedlich. Stuck auf dieses Problem für die letzten 2 Tage .. Bitte helfen ..

+0

Ich habe noch nie Messenger API verwendet, aber haben Sie versucht, die Elemente in der gleichen Reihenfolge/Namen zu erstellen? Vielleicht wartet die API die Namen in der gleichen Reihenfolge wie in den Dokumenten ... und Sie senden das access_token innerhalb der Anfrage? –

+0

Ich habe versucht, immer noch den gleichen Fehler – Lucy

+0

Also, ich schlage vor, Sie protokollieren die Fehler von Ihrer Antwort. Ich denke, 400 schlechte Anfrage ist nicht die ganze Fehlermeldung .. wahrscheinlich haben Sie mehr Informationen über den Fehler, der Ihnen helfen könnte. Versuchen Sie auch, Ihre 'root1' in JSON zu konvertieren, bevor Sie wie gesagt [hier] posten (http://stackoverflow.com/questions/36634453/facebook-messenger-api-send-structured-message?rq=1) –

Antwort

0

Gefunden meinen Fehler !!

Immer wenn wir versuchen, messenger_extensions Eigenschaft zu verwenden, müssen wir den Domain-Namen auf die weiße Liste setzen, ansonsten wird die Messenger-Plattform 400 Fehler zurückgeben. Da ich messenger_extensions Eigenschaft nicht brauchte, entfernte ich den gesamten Standardaktionsabschnitt, und jetzt gibt Messenger API 200 Code zurück. Falls Sie Ihre Domain auf die weiße Liste setzen möchten, können Sie dem folgenden Link folgen.

https://developers.facebook.com/docs/messenger-platform/thread-settings/domain-whitelisting

Verwandte Themen