首页 > 解决方案 > 构建 slack slash 命令时如何管理冲突的开发环境?

问题描述

我有一个由 3-4 人组成的团队,他们使用斜杠命令为一个 slack 应用程序(使用 Bolt 构建)做出贡献。该应用程序基本上归结为以下几点:

from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

# Get SLACK_APP_TOKEN and SLACK_BOT_TOKEN

app = App(token=SLACK_BOT_TOKEN)

@app.command("/the-bot")
def the_bot_slash_command(ack, body, client, respond):
    ack()

    if body["text"] == "foo":
        do_foo()
    else:
        respond("HELP TEXT HERE")

slack = SocketModeHandler(app, SLACK_APP_TOKEN)

我们有一个免费的 slack 工作区可供测试,每个开发人员都设置了自己的应用程序版本。问题是现在我们有 3-4 个人运行不同的机器人,但使用相同的斜杠命令。并根据文档:

多个命令可能占用相同的名称。如果发生这种情况并且用户尝试调用该命令,Slack 将始终调用最近安装的命令。

那么:是否有正确的“The Slack Way”结构允许单个开发人员在同一个斜杠命令上进行开发工作?

显然,我不想让开发人员运行一个独特的命令,他们只需要记住不要意外提交。到目前为止,我所做的最好的事情是制作@app.command("/the-bot")更像@app.command(SLASH_COMMAND)并将 SLASH_COMMAND 从环境变量中提取出来,允许个人开发人员设置他们的个人测试斜杠命令?

标签: slack-api

解决方案


不幸的是没有。您拥有的最佳选择是全部设置您自己的工作区,或者在您的登台应用程序中使用不同的斜杠命令。Slack 无法通过应用程序中的环境变量提供此功能,这很痛苦,因此所有这些都需要在 api.slack.com 站点上进行配置。

这样做的一种方法可能是请求一个免费的测试企业网格实例,然后在其中设置编号的工作空间。如果您希望将来在企业环境中开发,这也可能有助于您了解仅在企业环境中出现的应用程序问题。

另一种更笨拙的处理方法可能是创建一个转发应用程序,该应用程序侦听斜杠命令的调用,然后根据消息的某些特征(例如,它是什么通道)将事件转发到正确的登台环境中调用)。


推荐阅读