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。它们可以作为对斜杠命令或交互式消息(按钮、菜单)的响应而被触发。
新的对话框功能现在将是从用户那里获取结构化输入的最佳选择,就像这个问题中所要求的那样。
在工作中,我们有一个 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。它们可以作为对斜杠命令或交互式消息(按钮、菜单)的响应而被触发。
新的对话框功能现在将是从用户那里获取结构化输入的最佳选择,就像这个问题中所要求的那样。