Facebook Messenger bot错误:参数收件人是必需的

时间:2016-06-05 20:36:09

标签: facebook-graph-api messenger

我用来连接机器人的bash命令是:curl -ik -X POST' https://graph.facebook.com/v2.6/me/messages?access_token=#AccessToken'

我的错误信息是:

  

{"错误":{"消息":"(#100)参数收件人是   所需""类型":" OAuthException""代码":100," fbtrace_id":" EFqWAGq2ABs&#34 ;}}

有人如何解决它?

8 个答案:

答案 0 :(得分:4)

万一有人错过了这个,我在意外使用错误的内容类型时遇到了这个问题 - 我使用的是application/x-www-form-urlencoded而不是application/json

所以我的建议是,

  • 检查您是否确实传递参数
  • 仔细检查字符和编码
  • 确保使用正确的端点
  • 并确保在发布JSON请求时使用正确的内容类型。

答案 1 :(得分:1)

您需要发送收件人ID参数。尝试:

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

最好的问候。

答案 2 :(得分:1)

请使用“thread_settings”端点“https://graph.facebook.com/v2.6/me/thread_settings”作为API端点。

您正在使用消息端点。

答案 3 :(得分:1)

归结为机器人的逻辑。我最近也遇到了这个错误,我花了几天时间来调试它。对我来说问题是我在编译callSendAPI(messageData)对象的函数之外调用了messageData方法。

显然,将messageData传递给编译它的函数之外会发送一个空对象而不是已编译的对象。因此错误消息(#100) The parameter recipient is required。仅仅因为空对象没有定义任何receipientId

请检查您的代码逻辑,以确保您没有犯同样的错误。希望这有帮助:)快乐编程。

答案 4 :(得分:1)

端点错误。而不是https://graph.facebook.com/v2.6/me/messages?access_token=#AccessToken,请使用此端点

https://graph.facebook.com/v2.6/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>

当我们不阅读文档时会发生这种情况。信息就在这里https://developers.facebook.com/docs/messenger-platform/discovery/welcome-screen#, 正好在&#34;设置入门按钮回发&#34;

答案 5 :(得分:1)

一段时间以前,我也遇到类似的错误。尝试使用邮递员。我尝试了相同的请求,并替换了用户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"

答案 6 :(得分:0)

如果代码中出现错误(语法或逻辑错误),也可能会出现此问题。在我的情况下,我在webhook.php的代码中有这部分(这是我在Facebook注册的回调页面)

$message = $input['entry'][0]['messaging'][0]['message']['text'];

"message":{
    "text":"Sorry, we currently do not have an article related to "'.$message.'"."
    }

当我将https://domain.com/webhook.php注册为回调时,它不会收到任何$message,因此会导致错误,并且不会接受我的回调网址。

检查您的代码并确保只回应挑战。

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'verify_token') {
    echo $challenge;
}

答案 7 :(得分:0)

此错误消息还有另一个原因:当您发送错误字符(如a -tab-)时,Facebook也会返回此错误,因此请检查特殊字符上的返回文本。