我正在尝试创建一个与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应用程序设置。非常感谢任何帮助。
答案 0 :(得分:0)
原来有一些问题。 cURL请求未在JSON中包含引号,因此引号必须使用\字符进行转义。 Chrome海报请求无效,因为"内容类型:application / json"没有设置在标题中。我的网络应用程序没有用,因为JSON有一个&#34 ;;"在它的最后。
因此,Facebook消息表明JSON格式不正确,只是不是一个非常直接的![/ p>]
答案 1 :(得分:0)
检查JSON有效负载是否格式正确。
我使用Postman.app来帮助我解决这个问题 - 它也可以在Windows上使用。
<强>步骤强>
access_token
GET
Content-Type
设置为application/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"