【问题标题】:Slack Event API for Bot Mentions用于机器人提及的 Slack 事件 API
【发布时间】:2017-06-11 09:48:56
【问题描述】:

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

我正在尝试找出如何只听对机器人的直接提及。

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

时,它应该触发一个事件

公共/私有 Slack 频道示例:

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

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

【问题讨论】:

    标签: slack-api slack


    【解决方案1】:

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

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

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

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

    2018 年 10 月更新

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

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

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

    【讨论】:

    • 帮助澄清,谢谢。很遗憾,他们最终不支持这种过滤,因为这在我的 API 上是不必要的。
    • 是否可以使用任何其他类型的集成?例如。网络挂钩?
    • 乐于助人:-)。遗憾的是,传出 Webhook 仅适用于公共渠道。
    • 一个警告...除了提及之外,我希望我的机器人响应发送给它的 DM,但我很难弄清楚如何识别那些...
    • @wndxlori 你明白了吗?遇到同样的问题。
    【解决方案2】:

    订阅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"
    }
    

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

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

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2017-08-16
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多