2016-09-26 76 views
0

我試圖創建一個與Facebook Messenger交互的機器人。我設置了webhook,可以接收來自Facebook的消息。然而,當我嘗試發送郵件時,我收到以下錯誤回從Facebook:Facebook圖形API Messenger集成 - 參數收件人是必需的

{"error":{"message":"(#100) The parameter recipient is required","type":"OAuthException","code":100,"fbtrace_id":"F3iVNecj10i"}} 

不過,我肯定在我的請求得到了收件人ID。我使用我的漫遊器,cURL和Chrome海報擴展程序發送了請求,並且每次都獲得相同的結果。我發送JSON是:

{"recipient":{"id":"XXXXXXXXXXXXXX"},"message":{"text":"hello, world!"}} 

當使用捲曲,我直接從Facebook的文檔了榜樣,發送此:

curl -k -X POST -H "Content-Type: application/json" -d '{"recipient":{"id":"XXXXXXXXXXXXXXXX"},"message":{"text":"hello, world!"}}' "https://graph.facebook.com/v2.6/me/messages?access_token=ACCESS_TOKEN" 

在Facebook上這和例子之間的唯一區別是 - k停止cURL檢查SSL證書。我使用ngrok爲傳入的消息挖掘我的應用程序,但直接將請求發送到Facebook Graph API。事實上,它發生在我的應用程序,cURL和Chrome海報中,這讓我認爲這是與請求(但我看不到)或我的Facebook應用程序設置有關。任何幫助是極大的讚賞。

回答

0

原來有幾個問題。 cURL請求不包括JSON中的引號,因此引號必須用\字符轉義。 Chrome海報請求未能正常工作,因爲「content-type:application/json」未在標頭中設置。而我的webapp沒有工作,因爲JSON有一個「;」在它的結尾。

因此,Facebook消息表明格式不正確的JSON,只是不是一個非常直接的!

0

檢查JSON有效負載是否形成良好。

我用Postman.app來幫助我解決這個問題 - 它也可以在Windows上使用。

步驟

  • 複製網址進入 「輸入請求URL字段」。這將包括access_token
  • 更改HTTP動詞GET
  • 在「頭」頭,設置Content-Typeapplication/json
  • 在「體」標題下,選擇「原始」,並粘貼您的JSON有效載荷那裏。通過觀看行號旁邊顯示的錯誤指示器,確保此JSON有效負載形成良好。

一旦我修好了,我就可以繼續下一步了。