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

Identifying messages posted by my app in Slack

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

我遇到的挑战是我不清楚如何识别我的应用程序发布的消息。我发现我可以使用 conversations.history 搜索频道,这会给我消息事件。看起来有些消息有 user 属性。还有 bot_message 个具有 bot_id 属性 的子类型消息。但是,我没有找到任何方法来识别我的 app ID

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

更新

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

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

使用 conversations.history, you can get a list of messages posted in a channel. The docs say that the history returns an array of message events, and that these have a subtype field. One of the subtypes is 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>"
  }
}

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

如果使用上下文,您可能知道您的机器人的 ID。示例:const {botUserId} = context