Webhook 传入事件订阅创建循环

Webhook incoming with event subscription create loop

我正在使用 Web 服务 api 从松弛通道(事件订阅)接收消息,并使用相同的 Web 服务 api 向用户发送消息(Incoming webhook)松弛通道。

但是,当我发送消息时,松弛事件订阅会将该消息发回我的 api。这会造成无限循环。

我如何声明我发送到频道的消息,当我通过事件订阅收到返回时我可以查看?

这是 Slack 的正常行为,无法通过任何配置更改。当您订阅消息事件时,您将收到 所有 条消息的事件,包括来自您自己的应用程序的消息。

因此,为避免无限循环,您需要在继续处理之前检测并过滤掉来自您自己的机器人的消息。这很容易完成,因为所有消息都包含发件人的姓名。例如您可以过滤掉所有具有您的 Slack 应用程序 bot_id 的消息或来自机器人的所有消息(具有 subtype = bot_message)。

以下是消息的一些示例,以及来自真实用户的消息与来自 Slack 应用程序的消息有何不同:

来自真实用户的示例消息:

 {
      "type": "message",
      "user": "U12345467",
      "text": "Good read for some of guys",
      "ts": "1531745292.000021"
 }

来自 Slack 应用或机器人的消息示例

{
      "text": "Hey guys",
      "bot_id": "B12345678",          
      "type": "message",
      "subtype": "bot_message",
      "ts": "1531700187.000049"
 }

另见 this answer