在构建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)

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

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

那么:是否存在正确的"The Slack Way";允许单个开发人员在同一个slash命令上进行开发工作

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

很遗憾没有。最好的选择是设置自己的工作区,或者在暂存应用程序中使用不同的斜杠命令。令人遗憾的是,Slack无法通过应用程序中的环境变量提供这一功能,因此所有这些都需要在api.Slack.com网站上进行配置。

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

另一种更为棘手的处理方法可能是创建一个转发应用程序,该应用程序侦听slash命令的调用,然后根据消息的某些特性(例如在哪个通道中调用(将事件转发到正确的暂存环境。

最新更新