为机器人用户创建 Slack 频道

Posted

技术标签:

【中文标题】为机器人用户创建 Slack 频道【英文标题】:Create Slack Channel for Bot User 【发布时间】:2017-03-18 10:25:49 【问题描述】:

我正在为我的平台创建一个网络集成,使用机器人用户来“记录”某些事件。

我想为每种事件类型创建一个新的频道/组,以便它们显示在一个列表中,而不是一起显示在一个频道中。为此,我使用 python Slacker 集成创建了一个机器人。

由于 slack API 拒绝让我以机器人用户的身份创建频道,我需要使用 oauth2 API 创建一个频道,然后让机器人在其中写入内容。这意味着我需要以用户身份进行身份验证才能使用我的平台。

这感觉有点骇人听闻,因为我将使用的用户(可能是我自己的)在代码中只是为了为机器人创建通道。

有没有更好的方法来做到这一点?这里有什么最佳做法?

谢谢!

【问题讨论】:

【参考方案1】:

是的,有更好的方法。

如果您将 Slack 应用程序用于您的应用程序,您将在安装过程中收到两个新的访问令牌。机器人访问令牌和通用访问令牌。两者都将具有您在安装期间指定的范围,但后者将不限于机器人子集。使用后者创建新频道。

您需要通过 oauth 流程为您的 Slack 团队安装您的应用程序,但只需安装一次。令牌将保持有效,当然应该由您的应用存储。

不确定您对 Slack 应用的熟悉程度,但您无需将应用发布到 Slack 应用目录。这是可选的。

请参阅official page 关于“添加到 Slack”按钮的“添加到 Slack 流程”部分。

【讨论】:

我似乎对流程有一个重大误解: 1.我创建了一个slack应用程序。这给了我一个私钥和一个公钥。 2. 不确定如何进行,如何为自己的团队安装自己的应用程序? (我假设这给了我可以在后端使用的 api-key) 是的。为了安装您的 Slack 应用程序并获取特定团队的访问令牌,您需要有一个带有“添加到 Slack 按钮”的自定义网站。该网站需要能够通过 Slack 的宣誓流程运行才能获得访问令牌。详情见docu 这对我来说很奇怪,我只需要这样做一次(因为该应用程序仅适用于一个管理网站的团队),因此现在访问该令牌比创建一个更简单的方法网站(页面)我只使用一次? 我在我的一些应用中使用了另一种方法。您可以创建一个专用于仅用于应用程序的新 Slack 用户。我的称为“Slack Admin”,在不需要完整的 Slack 应用程序的情况下,我使用该用户的令牌。 但无论如何我认为将访问令牌保存在配置文件中而不是将其放入代码中是一种很好的做法。

以上是关于为机器人用户创建 Slack 频道的主要内容,如果未能解决你的问题,请参考以下文章

基于Perfect用Swift语言编写Slack聊天机器人

如何激活 Slack 机器人

Can slack 频道链接不可见

Slack 机器人可以与另一个机器人交互并在频道中触发它的某些功能吗?

使用 Slack Bot 提及访客?

Zapier Slack 私人频道:仅当用户在频道中时才发送消息