Facebook Graph API Messenger集成 - 参数收件人是必需的

时间:2016-09-26 10:05:06

标签: facebook facebook-graph-api facebook-messenger

我正在尝试创建一个与Facebook Messenger交互的机器人。我已经设置了我的webhook,可以接收来自Facebook的消息。但是,当我尝试发送消息时,我从Facebook收到以下错误:

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

但是,我的请求中肯定有收件人ID。我已经使用我的bot,cURL和Chrome Poster扩展程序发送了请求,并且每次都获得相同的结果。我发送的JSON是:

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

使用cURL时,我直接从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应用程序设置。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

原来有一些问题。 cURL请求未在JSON中包含引号,因此引号必须使用\字符进行转义。 Chrome海报请求无效,因为"内容类型:application / json"没有设置在标题中。我的网络应用程序没有用,因为JSON有一个&#34 ;;"在它的最后。

因此,Facebook消息表明JSON格式不正确,只是不是一个非常直接的![/ p>]

答案 1 :(得分:0)

检查JSON有效负载是否格式正确。

我使用Postman.app来帮助我解决这个问题 - 它也可以在Windows上使用。

<强>步骤

  • 将URL复制到“输入请求URL字段”。这将包括access_token
  • 将HTTP动词更改为GET
  • 在“标题”标题下,将Content-Type设置为application/json
  • 在“正文”标题下,选择“原始”并将JSON有效负载粘贴到那里。通过观察行号旁边显示的错误指示符,确保此JSON有效负载形成良好。

一旦我解决了这个问题,我就可以继续下一步了。

答案 2 :(得分:0)

一段时间以前,我也遇到类似的错误。尝试使用邮递员。我尝试了相同的请求,并替换了用户ID和页面访问令牌。工作正常。

单击顶部的Import按钮,并将您的卷曲请求粘贴在raw下。然后尝试运行该呼叫。如果您遇到相同的错误,请转到正文并对其进行修改。确保将其放在Postman请求的正文部分。将收件人ID替换为您的ID。

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

}

这是完整的cURL调用:更改收件人ID和页面访问令牌

curl -X POST -H "Content-Type: application/json" -d '{ "recipient":{"id":"1234567" }, "message":{ "text":"hello from bot" }}' "https://graph.facebook.com/v2.6/me/messages?access_token=PASTETHETOKENHERE"