Webhook传入事件订阅创建循环

时间:2018-07-19 09:50:37

标签: webhooks slack slack-api

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

但是,当我发送一条消息时,同样的消息会通过slack事件订阅发送回我的api。那会造成无限循环。

我如何声明我要发送到频道的消息,以便在收到事件订阅后返回查看该消息?

1 个答案:

答案 0 :(得分:0)

这是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