【问题标题】:Restrict permissions for bot with "subscribe to bot events"使用“订阅机器人事件”限制机器人的权限
【发布时间】:2018-02-13 20:06:59
【问题描述】:

情况:

  • 我们的机器人应该为松弛团队中的选定用户提供管理信息
  • 因此,我们希望将机器人的访问权限限制为由 slack 团队的管理员定义的用户
  • 我们希望机器人只能通过私人渠道或多方直接消息对话进行寻址
  • 我们了解机器人应用程序本身无法创建这样的私人频道
  • “默认”机器人事件是 im_created、message.channels、message.groups、message.im

问题:

  1. 我们尝试通过事件限制对机器人的访问是否正确?
  2. 如果我们只订阅 message.groups 和 message.im 就足够了吗?
  3. 当我们不订阅 im_created 和 message.channels 时,我们的机器人不会回复发送给它的直接消息,这是否正确?

【问题讨论】:

    标签: slack-api


    【解决方案1】:

    您在技术上是正确的,如果不订阅与某些对话类型相关的事件,您的机器人将不会收到来自这些对话的消息,因此显然无法对其做出反应。

    但是,在我看来,这不是一个好方法,因为您希望您的机器人始终能够响应用户并且不会显得“死机”。至少要告诉用户他没有被授权。还要考虑您的机器人用户仍然可以被邀请参加所有对话类型。

    相反,您的机器人应该订阅所有相关事件,然后根据他收到的事件做出反应并应用限制。

    只需检查调用用户是否经过身份验证,即可限制对您的机器人的访问。例如消息事件始终包含用户 ID。您可以通过检查当前请求的通道 ID 来进一步限制,例如指明它是用于公共频道还是私人频道。

    消息事件示例:

    {
        "type": "message",
        "channel": "C2147483705",
        "user": "U2147483697",
        "text": "Hello world",
        "ts": "1355517523.000005"
    }
    

    请注意,订阅 message.groups 之类的事件意味着您的机器人将接收发送到您的机器人用户所属的这些频道的所有消息。然后,您的机器人应用程序需要过滤它们并选择正确的消息来做出反应。如果您只想对@botuser 做出反应,您可以考虑只订阅app_mention

    一个更正:虽然您无法使用机器人令牌创建新的私人频道,但您的 Slack 应用程序将始终收到机器人令牌和用户令牌。使用后者,您可以代表安装用户创建新的私人频道。

    请注意,您可能还需要考虑将slash commands 用于您的机器人(例如/mgmtbot info),而不是机器人用户/事件。您可以根据调用者的用户 ID 和频道(类似于事件)限制您的响应,并且用户可以使用斜杠命令,而无需先邀请您的机器人用户加入对话/频道。

    【讨论】:

    • 谢谢!需要澄清的附加问题:我认为我定义了我的应用程序需要哪些权限,用户接受它并邀请机器人加入他/她的团队。我将如何检查该团队的用户是否经过身份验证?
    • 将应用程序安装到 Slack 工作区时需要接受的 Slack 应用程序 Oauth 权限是全局性的,并且对于团队的每个用户都是相同的。如果您想区分用户,您需要依赖 Slack 中的角色(例如管理员或所有者)或实施您自己的用户管理。
    • 或者您可以使用私人渠道来管理对您的机器人的访问。因此,作为特定私人频道成员的每个人都可以访问您的机器人。使用这种方法,您无需实施自己的用户管理。顺便说一句,这也是我为我的 Slack 团队做这件事的方式。
    • 额外的澄清请求:您能否指定机器人如何使用用户令牌创建私人频道?谢谢
    • 当然。安装 Slack 应用程序后,您将获得两个令牌。一个机器人令牌和一个用户令牌。使用后者,您可以通过 group.create 创建新的私人频道,假设您的 Slack 应用程序具有必要的范围 (groups.write) 并且安装 Slack 应用程序的用户具有必要的权限(这些权限可以限制为具有管理员或权限的用户)所有者角色)。
    猜你喜欢
    • 1970-01-01
    • 2022-11-01
    • 2019-03-06
    • 2022-12-11
    • 2017-10-24
    • 2012-10-12
    • 1970-01-01
    • 2021-11-25
    • 2021-02-14
    相关资源
    最近更新 更多