【发布时间】:2019-04-17 14:27:54
【问题描述】:
我有一个 Slack 机器人,它需要返回一条消息,其中包括 Slack 用户列表和一个用于直接向每个用户发送消息的按钮。
我希望用户的参与体验保持一致。如果用户通过桌面 Slack 应用程序与机器人交互,那么我希望用户留在应用程序中(不要被带到 Web 客户端——他们可能没有经过身份验证)。
类似:
Results:
User A - click link to view User A's profile in Slack
[Message] - click button to open direct message with user A
User B - click link to view User B's profile in Slack
[Message] - click button to open direct message with user B
我遇到了几个问题:
如何链接到用户的个人资料,因为我不知道他们使用的是 Slack 应用程序还是 Slack 网络(因此如何在显示
slack://user?team=&id=..或domain.slack.com/team/{id}方法之间做出决定?这是假设我使用title_link或author_link属性。如何创建一个消息按钮来向用户打开直接消息(甚至更好地打开它并预先填充消息)?我目前一直在玩链接操作,但没有运气。
我想我可以通过让机器人发送 DM 然后@提及原始用户来解决这个问题。从用户体验的角度来看不是很好。
更新
感谢 Adil 和 Erik 的 cmets,我认为我有 最佳 可能的解决方案。我最终为每个结果制作了一个消息附件,如下所示:
{
"fallback": `${user['name']} likes pizza`,
"text": `<@${user['uid']}>`,
"actions": [
{
"type": "button",
"text": "View Pizza Profile",
"url": url(`/directory/${user['id']}`),
"style": "primary"
},
{
"type": "button",
"text": "Order Pizza",
"url": `https://slack.com/app_redirect?channel=${user['uid']}`
}
]
}
此解决方案提供:
- 包含@提及用户的文本字段(单击它会在浏览器或本机中显示配置文件)。它使用文本作为邮件标题(并删除作者和标题字段)。
- 链接操作按钮以通过
app_redirect打开直接消息聊天
有几个严重的限制:
- 对于本机,直接消息链接会导致浏览器打开,然后(如果用户决定)重定向回应用程序。
- 用户必须使用一个浏览器窗口,该浏览器窗口已经通过与本地客户端相同的工作区的身份验证(这对于 UX 来说是一个巨大的问题,因为许多人打开了多个工作区,在这种情况下,重定向会失败并显示不明显错误消息)。
【问题讨论】: