Bot提及的Slack事件API

时间:2017-01-26 01:50:09

标签: slack-api slack

我正在使用Slack App构建Slack bot。我已设法通过Event API授权并成功接收活动。

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

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

时,它应该触发事件

公共/私人Slack频道示例:

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

是否有松弛事件这样做?或者还有另一种方法吗?我不想将其硬编码到我的服务器端应用程序中,因为那时我将收到很多不必要的事件。

2 个答案:

答案 0 :(得分:5)

您可以选择在应用配置(事件订阅)中订阅团队活动或Bot事件。对于您的情况,我建议订阅bot事件。

然后您需要订阅一个事件类型。由于您希望机器人能够收听您想要订阅message.channelsmessage.groupsmessage.immessage.mpim的各种渠道。安装Slack应用程序时,请不要忘记请求相应的范围。

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

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

2018年10月更新

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

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

但是,如果您还希望向机器人发送直接消息,则仍需要订阅message.im

答案 1 :(得分:2)

订阅app_mention活动而不是message.channels来接收提及您的应用/机器人的活动。

以下是来自松弛的示例有效负载:

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

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

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

希望有帮助:)