krs*_*ung 8 slack-api slack botkit
我有一个 Slack 机器人,它需要返回一条消息,其中包括 Slack 用户列表和一个按钮来向每个用户发送消息。
我希望用户的参与体验保持一致。如果用户通过桌面 Slack 应用程序与机器人交互,那么我希望用户留在应用程序中(不要被带到网络客户端——他们可能没有经过身份验证)。
就像是:
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
Run Code Online (Sandbox Code Playgroud)
我被困在几个问题上:
如何链接到用户的个人资料,因为我不知道他们使用的是 Slack 应用程序还是 Slack 网络(因此如何在显示slack://user?team=&id=..
或domain.slack.com/team/{id}
接近之间做出决定?这是假设我使用title_link
或author_link
属性。
如何创建一个消息按钮来向用户打开直接消息(甚至更好地打开它并预填充消息)?我目前一直在玩链接动作,但没有任何运气。
我想我可以通过让机器人发送 DM 然后 @mention 原始用户来解决它。从用户体验的角度来看不是很好。
更新
感谢 Adil 和 Erik 的评论,我认为我有最好的解决方案。我最终为每个结果制作了一个消息附件,如下所示:
{
"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']}`
}
]
}
Run Code Online (Sandbox Code Playgroud)
该解决方案提供:
app_redirect
有几个严重的限制:
添加到 Adil 关于链接到用户个人资料的好答案
以下是如何提供链接以打开当前用户和其他用户之间的直接消息:
您可以使用Slack 的频道重定向功能创建一个链接,该链接将为用户打开任何频道。通过提供目标用户的 ID,这也适用于直接消息渠道。
用户示例U12345678
:
https://slack.com/app_redirect?channel=U12345678
Run Code Online (Sandbox Code Playgroud)
您可以通过链接按钮或文本链接提供此链接。
请注意,这将始终打开一个新的浏览器选项卡/窗口,即使用户使用的是 Slack 本机客户端(不,没有办法确定用户是使用本机客户端还是浏览器)。
另一种方法是仅在您的消息中提供用户提及并让用户单击它以获取包含“直接消息”的菜单。这将适用于每个用户和每个平台/客户端类型:
只需在文本中包含一个标准的用户提及,并向用户提供一些说明:
<@U12345678>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3144 次 |
最近记录: |