首页 文章

Bot提及的Slack事件API

提问于
浏览
2

我正在使用Slack App构建一个Slack bot . 我已设法通过Event API授权并成功接收事件 .

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

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

公共/私人Slack Channel示例:

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

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

2 回答

  • 5

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

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

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

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

    UPDATE October 2018

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

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

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

  • 2

    订阅 app_mention 事件而不是 message.channels 以接收提及您的app / bot的事件 .

    这是松弛的示例有效负载:

    {
        "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

    希望有帮助:)

相关问题