识别我的应用在 Slack 中发布的消息

Jac*_*cob 4 slack-api

我正在开发一个 Slack 应用程序,将警报应用程序发布到频道。我希望这个应用程序检查频道的历史记录以查找它之前发布的消息,以便它可以做出相应的响应。例如,如果有一个尚未“清除”的警报,它将更新所述警报而不是发布新消息。

我遇到的挑战是我不清楚如何识别我的应用程序发布的消息。我看到我可以用对话搜索一个频道,历史记录,这给了我消息事件。看起来有些消息有一个user属性。还有bot_message具有bot_id属性的子类型消息。但是,我看不到任何方法来识别我的应用程序 ID

每个应用程序都应该有一个关联的bot_id吗?userID?如果是这样,我从哪里获得这些 ID 以便我可以过滤对话历史记录?

更新

我尝试在bots.info没有机器人 ID 参数的情况下调用该方法,希望它能给我我的机器人 ID,但它除了“OK”状态之外没有返回任何数据。

Jac*_*cob 5

也许是因为 Slack 在不同 API 方面有着悠久的历史,我被误导了。显然,我可以找到我的机器人之前发布的消息,但无法找到我的想法。这是我的误解以及我在使用 Slack API 测试人员时发现的内容。

使用conversations.history,您可以获得在频道中发布的消息列表。文档说历史记录返回一个数组message events,并且这些有一个子类型字段。其中一种子类型是bot_message,所以我的假设是我的机器人发布的消息将具有这种子类型。的文档bot_message有一个bot_id,我不知道我的应用程序和username,我不知道它将匹配什么。

然而,事实证明,当我发布了一个测试消息,该消息并没有显示为一个bot_message; 相反,它出现在没有子类型的历史记录中并且具有似乎与任何文档都不匹配的属性:

{
  "bot_id": "B01HSBYRKUZ",
  "type": "message",
  "text": "Testing the Slack API; please ignore.",
  "user": "U01HDNUJ5EE",
  "ts": "1609878469.036400",
  "team": "<omitted>",
  "bot_profile": {
      "id": "B01HSBYRKUZ",
      "deleted": false,
      "name": "my-bot-name",
      "updated": 1608584973,
      "app_id": "<omitted>",
      "icons": {
          "image_36": "...",
          "image_48": "...",
          "image_72": "..."
      },
      "team_id": "<omitted>"
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,尽管针对未记录的格式进行编码是有风险的(或者我可能只是找不到合适的文档?),但我可以通过查看是否有bot_profile.app_id与我的应用程序 ID 匹配的 ID来过滤这些消息,我确实知道。