Slack 机器人预格式化用户输入的结构化数据的通道响应

Slack bot to pre-format channel responses of structured data input from user

在工作中,我们有一个 Slack 频道,每个人都可以在其中发布他们的每日 Scrum 更新。格式是这样的:

Yesterday:

 - Did something
 - Did something else

Today:

 - Did something
 - Did something else

Blocks:

 - This is blocking my progress

现在,我正在尝试找到一种方法可以为我的同事预先格式化,例如 HTML

中的占位符文本

有没有办法在 Slack 中实现这一点?

到目前为止我考虑过的选项如所见here 1. 在 Slack 上创建一个 / 命令,当用户键入 /daily 并填充响应时,该命令将使用此文本进行响应(我不确定这是否可行,我只创建了斜线命令触发了外部进程,未返回任何文本 to Slack) 2. 创建自定义应用程序并与 Slack 集成

我知道这个问题的答案可能是自以为是的,社区不鼓励这样做,但我认为其他人可能也遇到过这个问题或将来会遇到这个问题,答案相对objective这里,不是纯主观的。

我一直在开发几个 Slack 应用程序并遇到了类似的需求。在我看来,Slack 目前没有提供输入结构化数据的好选项,所以我建议宁愿使用带有简单表单的 HTML 页面来输入数据,然后自动 posts 在 Slack 上更新.

带有纯 Slack 的选项

您可以使用 slash commands or a bot 来接收用户的输入,但在这两种情况下,用户都必须输入数据命令行样式,并且不可能使用 HTML 占位符之类的东西。您的选择是使用关键字或在用户和机器人之间进行对话。输入是自由文本,需要由您的应用程序解析。

带有关键字的斜杠命令示例:

/daily yesterday "this and that" 
/daily today "this and that" 
/daily blocks "this and that"

机器人对话示例:

@scrumbot daily
"What is your update for yesterday?"
@scrumbot this and that
"What is your update for today"
@scrumbot this and that
etc.

我一直在我的应用程序中使用这两种方法,但它们非常笨拙,而且对于输入大量结构化文本而言不是很友好。

Slack with HTML 页面

因此,我的建议是使用简单的 HTML 表单输入文本,然后在 Slack 频道中自动 post 结果。您可以使用 Sign-in with Slack 或让用户在 Slack 上单击生成的 link 以将生成的 HTML 页面连接到正确的 Slash 用户。前者提供更好的安全性,后者更人性化。

示例:

/daily
"Please click *here* to enter your daily update"

然后生成的 HTML 页面将在浏览器中打开,允许用户在表单中输入数据。提交后,输入 post 在正确的频道

上被 Slack 编辑

顺便说一句。 Slack 团队计划在未来为 Slack 实施输入字段,但目前计划在中期进行,因此我预计它不会在不久的将来可用。请参阅 Slack Plattform Roadmap 上的 "Interactive messages Stage 3"。

2017 年 9 月更新

Slack 团队引入了一种新方法,使用户能够输入名为 dialogs 的结构化数据。

对话框类似于 HTML 中的表单,并允许在 Slack 中创建具有多种类型(当前为文本、文本区域、select)的多个输入字段的模态对话框 windows。它们可以作为对斜杠命令或交互式消息(按钮、菜单)的响应而被触发。

新的对话框功能现在将是从用户那里获取结构化输入的最佳选择,就像这个问题中所要求的那样。