微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决识别我的应用在 Slack 中发布的消息

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

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

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

更新

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

解决方法

也许是因为 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>"
  }
}

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

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。