Slack api 提及机器人的松弛事件API

Slack api 提及机器人的松弛事件API,slack-api,slack,Slack Api,Slack,我正在使用Slack应用程序构建Slack机器人。我已成功通过事件API授权并成功接收事件 我试图找出如何只听直接提到机器人 因此,当有人向公共或私人频道发送消息,并且机器人被直接标记为@bot 公共/私人松弛通道示例: 是否存在这样的松弛事件?还是有其他方法可以做到这一点?我不想将其硬编码到我的服务器端应用程序中,因为这样我将收到许多不必要的事件。您可以选择在应用程序配置中订阅团队事件或机器人事件(事件订阅)。对于您的情况,我建议订阅bot事件 然后您需要订阅一个事件类型。因为你想让你的机器人

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

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

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

公共/私人松弛通道示例:
是否存在这样的松弛事件?还是有其他方法可以做到这一点?我不想将其硬编码到我的服务器端应用程序中,因为这样我将收到许多不必要的事件。

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

然后您需要订阅一个事件类型。因为你想让你的机器人监听你想订阅的各种频道,然后。安装Slack应用程序时,不要忘记请求相应的作用域

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

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

2018年10月更新

Slack现在还支持一种特殊的事件类型,允许您仅订阅bot提及:

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


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

订阅
app\u-ntide
事件,而不是
message.channels
来接收提及你的app/bot的事件

下面是来自slack的有效负载示例:

{
    "type": "app_mention",
    "user": "U061F7AUR",
    "text": "<@U0LAN0Z89> is it everything a river should be?",
    "ts": "1515449522.000016",
    "channel": "C0LAN2Q65",
    "event_ts": "1515449522000016"
}
{
“类型”:“应用程序”,
“用户”:“U061F7AUR”,
“文本”:“这就是河流应该具备的一切吗?”,
“ts”:“1515449522.000016”,
“频道”:“C0LAN2Q65”,
“事件”:“1515449522000016”
}
如果您想接收直接消息事件,也可以订阅
message.im

有关
应用程序的更多信息请参见
事件-


希望有帮助:)

有帮助的澄清,谢谢。遗憾的是,他们最终不支持这种过滤,因为这对我的API来说是不必要的偷听。有可能与其他类型的集成一起使用吗?例如webhooks?很乐意帮助:-)。不幸的是,即将发布的Webhook只能在公共频道中使用。需要注意的是。。。我想让我的机器人回复发送给它的DM,除了提及,但我很难弄清楚如何识别这些…@wndxlori你弄明白了吗?有同样的问题。
{
    "type": "app_mention",
    "user": "U061F7AUR",
    "text": "<@U0LAN0Z89> is it everything a river should be?",
    "ts": "1515449522.000016",
    "channel": "C0LAN2Q65",
    "event_ts": "1515449522000016"
}