webhooks - 带有事件订阅的 Webhook 传入创建循环
问题描述
我正在使用 Web 服务 api 从松弛通道(事件订阅)接收消息,并使用相同的 Web 服务 api 在同一松弛通道上向用户发送消息(传入 webhook)。
但是当我发送一条消息时,这条消息会通过 slack 事件订阅发送回我的 api。这会创建一个无限循环。
如何声明我发送到频道的消息,当我收到事件订阅返回时可以检查?
解决方案
这是 Slack 的正常行为,不能通过任何配置更改。当您订阅消息事件时,您将收到所有消息的事件,包括来自您自己的应用程序的消息。
因此,为避免无限循环,您需要在继续处理之前检测并过滤掉来自您自己的机器人的消息。这可以很容易地完成,因为所有消息都包含发件人的姓名。例如,您可以过滤掉所有具有bot_id
Slack 应用程序的消息或来自机器人的所有消息(具有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"
}
另请参阅此答案。
推荐阅读
- python - 使用深度优先搜索在 python 中遍历二维列表
- racket - 如何将列表的第一个元素应用于列表的其余部分?
- apache-spark - 使用 Group By 结束 Spark 窗口的问题
- python - 如何在 Python3 中生成堆积条形图?
- css - 带有 id 的表在 css 上不显示 td 和 tr 周围的边框
- python-3.x - 平均数据框中的重复值
- php - 在保持 div 打开的同时更改整个页面
- javascript - 如何在 json 模型导出中保留自定义层名称并避免“TensorFlowOpLayer”
- swift - 简单的获取请求不适用于 AlamoFire
- javascript - 过渡元素在 SSR Nuxt.js 中不起作用