【问题标题】:Slack Application : how to manage bot connections to different teams?Slack 应用程序:如何管理与不同团队的机器人连接?
【发布时间】:2017-09-12 21:32:37
【问题描述】:

我正在尝试构建一个使用机器人与用户交互的 Slack 应用程序。

我想在 Slack 应用目录中分发这个应用。我必须为每个团队获取一个 oauth 授权令牌,并将其存储在我的数据库中。

问题是我不确定我是否真的了解我应该如何管理 SlackClient 与每个团队的连接。让我解释一下我现在是如何看待事物的。

  • 我可以通过使用 Slack 按钮获取授权令牌来授权我的应用访问和发布不同团队中的内容。这为每个启用的团队提供了访问令牌和 bot_token。
  • 要在团队中发帖,我应该使用这些生成的令牌将 SlackClient 连接到这个特定团队,对吗?那么我的应用是否应该在每次收到来自不同团队的请求时断开/重新连接我的 SlackClient ?或者一个 SlackClient 可以同时连接到多个团队吗?

我最初是按照这个教程来做的,但它并没有真正解释我认为如何管理不同的团队联系 (https://github.com/slackapi/Slack-Python-Onboarding-Tutorial)。

谢谢

【问题讨论】:

    标签: slack-api slack


    【解决方案1】:

    没有。连接由运行 slackclient 的 Web 服务器管理。所以你不必和他们打交道。你的机器人只需要单独对他从 Slack 收到的每个事件请求做出反应。其他一切都由 Web 服务器管理。(*)

    这是它的详细工作原理:

    您提到的机器人正在使用 Slack 的 Events API 与 Slack 团队进行通信。为团队安装机器人后,只要您订阅的事件发生,Slack 就会开始向您的机器人发送事件请求。例如如果您订阅了message events,您的机器人将收到在您的机器人被邀请到的所有频道中发送的每条消息的请求。

    来自 Slack 的事件请求包含团队的团队 ID,因此您的机器人只需从其数据库中选择相应的访问令牌,其回复(例如使用所选令牌发送消息)将发送给正确的团队。在消息事件的情况下,事件请求还将包含频道和用户 ID,因此您的机器人可以将其回复发送到正确的频道和用户。

    以下是来自 Slack 的事件请求的示例:(来自官方文档)

    {
            "token": "z26uFbvR1xHJEdHE1OQiO6t8",
            "team_id": "T061EG9RZ",
            "api_app_id": "A0FFV41KK",
            "event": {
                    "type": "reaction_added",
                    "user": "U061F1EUR",
                    "item": {
                            "type": "message",
                            "channel": "C061EG9SL",
                            "ts": "1464196127.000002"
                    },
                    "reaction": "slightly_smiling_face"
            },
            "event_ts": "1465244570.336841",
            "type": "event_callback",
            "authed_users": [
                    "U061F7AUR"
            ]
    }
    

    (*) 从技术上讲,Web 服务器将生成您的机器人的多个实例来处理多个并行事件请求。

    【讨论】:

    • 事情开始变得清晰起来。但是我应该在什么时候进行API调用时输入相应的令牌,例如发布消息......:self.client.api_call("chat.postMessage", channel=message_obj.channel, username=name, icon_emoji=self.emoji, text=attachments)
    猜你喜欢
    • 2016-07-24
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2020-12-04
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多