【问题标题】:Facebook Graph API Messenger integration - The parameter recipient is requiredFacebook Graph API Messenger 集成 - 参数接收者是必需的
【发布时间】:2017-02-03 15:00:56
【问题描述】:

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

{"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!"}}

在使用 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 应用程序设置有关。非常感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

    原来存在一些问题。 cURL 请求不包含 JSON 中的引号,因此必须使用 \ 字符对引号进行转义。 Chrome 海报请求不起作用,因为标题中未设置“内容类型:应用程序/json”。而且我的 webapp 没有工作,因为 JSON 有一个“;”在它的最后。

    因此,Facebook 消息表明 JSON 格式不正确,只是不是很直接!

    【讨论】:

      【解决方案2】:

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

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

      步骤

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-02
          • 2022-10-06
          • 1970-01-01
          • 1970-01-01
          • 2015-04-10
          • 2016-11-05
          相关资源
          最近更新 更多