【问题标题】:Facebook webhook, how to get conversation id from mid idFacebook webhook,如何从中间 id 获取对话 id
【发布时间】:2019-08-30 07:56:28
【问题描述】:

大家好,我正在构建一个聊天机器人,我遇到了一个问题,即当用户向我的应用发送消息时,我没有得到像“t_31231231231231”这样的对话 ID,而是得到“mid ",我不知道如何从 "mid" 中获取对话,我试图找到该文件,但也许我还没有找到它。 :(

{
  "object": "page",
  "entry": [
    {
      "id": "553014938133297",
      "time": 1567149324484,
      "messaging": [
        {
          "sender": {
            "id": "2112675102192095"
          },
          "recipient": {
            "id": "553014938133297"
          },
          "timestamp": 1567149323879,
          "message": {
            "mid": "n89QDNpjbh7UUZjDj7mkfk-Mqd_vry00MlXChtxjo-ZLokFwJAtZ6udnPZibQjzAZpuqsN64UVjTly5cTCEKTQ",
            "text": "dasddsad",
            "nlp": {
              "entities": {},
              "detected_locales": [
                {
                  "locale": "vi_VN",
                  "confidence": 0.8299
                }
              ]
            }
          }
        }
      ]
    }
  ]
}

【问题讨论】:

  • 您找到解决方案了吗?我也遇到了同样的问题。
  • 这里也有同样的问题。如果您找到任何解决方案,请分享它。非常感谢
  • 这个运气好吗?
  • 遇到了同样的问题!

标签: facebook facebook-graph-api facebook-javascript-sdk chatbot facebook-webhooks


【解决方案1】:

这可能不是理想的解决方案,但可以作为即兴创作。由于您拥有message_id,因此您可以获取message 以确定参与者是谁,然后您可以将它们与conversations.participants 中的participants 匹配。
我所做的是用他们的participants 字段获取所有conversations。 即

curl -i -X GET \
 "https://graph.facebook.com/v8.0/me/conversations?fields=participants&access_token=your-access-token-goes-here"

返回

{"data"=>
  [{"participants"=>
     {"data"=>
       [{"name"=>"Masroor Hussain",
         "email"=>"3275685679217538@facebook.com",
         "id"=>"4275685679217538"},
        {"name"=>"Testpage",
         "email"=>"115083020351552@facebook.com",
         "id"=>"115083020351552"}]},
    "id"=>"t_781422919067688"}],
 "paging"=>
  {"cursors"=>
    {"before"=>
      "QVFIUlRKd1RBYmtvVXlicm95QUNZAbjVKUW5LbU5lYzhQM24ycmY1aTBXM1NTbnRSLURhc2xnSlBnOWE3OTJ4ZAy1KbS1LLVhUUEdqYmM0MmVzZAXZAZAX2xRdzJCbXpJSEowMmxzUHc0NlBXQ0FTVEdRSEZAZASmI2SGxsNlNOdC1XOWNSZADl0",
     "after"=>
      "QVFIUkdEUjNPek5jbE9RNUhzZAXpJTm9hWERvQVdGYVV5cHlfcDl6cEJyZAG5NaGpjR1NkUHI4R0JDd1VkWEU0RUh2ZADFOQUVzN0RwQ2tyYmpXcThEV0hjUDM2QXAxbFRLWDVzUGoyNmFjbkcyUzl3X0Myc1AtanRYUndjMDBSdVZAJZAnI0"
    }
  }
}

participants.data 中,一个参与者是页面,另一个是page_scoped_user。您可以解析响应以匹配您的参与者并获取对话id,例如这里的对话 id 将是 "t_781422919067688"

【讨论】:

    【解决方案2】:

    这里有点晚了,但我遇到了同样的问题,实际上在 Instagram API 文档中找到了解决方案。我在 facebook graph api 中尝试过,效果很好。

    在 webhook 事件中,您拥有消息 ID 和发送者 ID。使用发件人 ID,您可以使用以下端点调用 Graph API(是的,仍然是一个额外的 API 调用):

    /{page_id}/conversations?access_token={access_token}&user_id={user_id}
    

    这将只返回您的页面与指定用户之间的对话。

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2021-12-19
      • 2013-06-22
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2011-11-13
      相关资源
      最近更新 更多