2017-02-09 10 views
0

Facebookメッセンジャーを使用して、公式文書hereに基づく汎用テンプレートを使用して構造化メッセージを送信しています。 Javaを使用してJSONオブジェクトを構築しています。 JSONをFacebookに送信するたびに、「400-悪いリクエスト」というレスポンスが返されます。私は、オンラインツールを使って比較しようとしましたが、JavaはJSONを生成しました。 JSONを構築する際にどこに間違っているのか理解できません。 Javaコードを対応するJavaコードから生成Facebook Messenger API:構造化メッセージ(Java)を送信

JSON ..

 { 
"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" 
} 

}

..で提供されるサンプル1で上記のJSONを比較するとき、あなたが

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

を見ることができるように公式の文書、要素の順序だけが異なります。過去2日間、この問題に悩まされています。助けてください。

+0

私はメッセンジャーのAPIを使ったことがないけど、あなたは同じ順番/名前の要素を作成しようとしましたか?おそらく、APIがドキュメントで提供されているのと同じ順序で名前を待っているのでしょうか?リクエスト内でaccess_tokenを送信していますか? –

+0

私はそれでも同じエラーを取得しようとしました – Lucy

+0

あなたの応答からエラーを記録することをお勧めします。私は '400悪い要求'が全体のエラーメッセージではないと思う。おそらくあなたはあなたを助けるかもしれないエラーについてのより多くの情報を持っています。また、あなたの 'root1'をJSONに変換するようにしてみてください(ここでは、http://stackoverflow.com/questions/36634453/facebook-messenger-api-send-structured-message?rq=1) –

答えて

0

私の間違いが見つかりました!

我々はそうメッセンジャープラットフォームは400エラーを返します、我々は、ドメイン名をホワイトリストに登録する必要がmessenger_extensionsプロパティを使用しようとするたびに。 messenger_extensionsプロパティは不要なので、デフォルトアクションセクション全体を削除しました。今ではメッセンジャーAPIが200コードを返しています。ドメインをホワイトリストに登録する場合は、次のリンクをクリックしてください。

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

関連する問題