用于Bot提及的Slack Event API



我正在使用Slack应用程序构建一个Slack机器人。我已通过事件API授权并成功接收事件。

我正试图找出如何只听直接提到机器人。

因此,当有人向公共或私人频道发送消息时,以及当机器人被直接标记为@bot时,它应该触发事件

公共/私人Slack频道示例:

Daniel: Hi there bot        (does not trigger)
Jeremy: @bot hi there       (triggers Event API)

有没有Slack Event可以做到这一点?或者有其他方法可以做到这一点吗?我不想把它硬编码到我的服务器端应用程序中,因为那样我会收到很多不必要的事件。

您可以选择在应用程序配置中订阅团队事件或Bot事件(事件订阅)。对于您的情况,我建议您订阅机器人事件。

然后您需要订阅一个事件类型。既然你想让你的机器人在各种频道上收听,你就想订阅message.channels、message.groups、message.im和message.mpim。安装Slack应用程序时,别忘了请求相应的作用域。

您的机器人现在将接收在您的机器人所属的任何渠道(公共、私人、直接消息、直接消息组)中发布的所有消息的事件请求。

作为最后一步,您必须过滤和解析这些事件请求,以便您的机器人只对@提及做出反应。

2018年10月更新

Slack现在还支持一种特殊的事件类型,只允许您订阅机器人提及:app_mention

因此,如果您只想接收机器人的提及,则无需再订阅任何其他事件(message.channels、message.groups、message.mpim)。

然而,如果你也想直接向你的机器人发送消息,你仍然需要订阅message.im

订阅app_mention事件而不是message.channels以接收提及您的应用程序/机器人的事件。

以下是来自slack的有效载荷示例:

{
"type": "app_mention",
"user": "U061F7AUR",
"text": "<@U0LAN0Z89> is it everything a river should be?",
"ts": "1515449522.000016",
"channel": "C0LAN2Q65",
"event_ts": "1515449522000016"
}

如果您想接收Direct消息事件,也可以订阅message.im

关于app_mention活动的更多信息-https://api.slack.com/events/app_mention

希望能有所帮助:)

最新更新