【问题标题】:Facebook Messenger bot error: The parameter recipient is requiredFacebook Messenger bot 错误:参数接收者是必需的
【发布时间】:2016-06-05 20:36:09
【问题描述】:

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

我的错误信息是:

{"error":{"message":"(#100) 参数接收者是 必需","type":"OAuthException","code":100,"fbtrace_id":"EFqWAGq2ABs"}}

有大神怎么解决吗?

【问题讨论】:

  • 提供它告诉你的参数是必需的吗?
  • 实际上@jonrsharpe 我也有同样的问题,即使收件人可用,您也会收到此错误

标签: facebook-graph-api messenger


【解决方案1】:

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

所以我的总体建议是,

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

【讨论】:

  • 我必须添加请求标头参数并且工作! :)
  • 您为此添加了哪些标头参数?
【解决方案2】:

您需要发送收件人 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"

最好的问候。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      您正在使用消息端点。

      【讨论】:

      • 你能告诉我们一个提到这个的链接吗,因为使用thread_settings你需要把“setting_type”
      【解决方案5】:

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

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

      请检查您的代码逻辑,以确保您没有犯和我一样的错误。希望这对您有所帮助:) 祝您编程愉快。

      【讨论】:

        【解决方案6】:

        端点错误。而不是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#“设置开始按钮回传”下方。

        【讨论】:

        【解决方案7】:

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

        单击顶部的Import 按钮并将您的 curl 请求粘贴到 raw 下。然后尝试运行呼叫。如果您遇到相同的错误,请转到正文并对其进行修改。确保将其放在 Postman 请求的正文部分。将收件人 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"
        

        【讨论】:

          【解决方案8】:

          当您的代码有错误(语法或逻辑错误)时,也可能会出现此问题。就我而言,我的代码中有这部分 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;
          }
          

          【讨论】:

            猜你喜欢
            • 2017-02-03
            • 1970-01-01
            • 2019-06-04
            • 1970-01-01
            • 2018-06-24
            • 1970-01-01
            • 2017-05-02
            • 1970-01-01
            • 2017-05-26
            相关资源
            最近更新 更多