slack-api - 我的 slack 自定义命令如何生成/提醒我类似的链接

标签 slack-api slack

我正在编写一个自定义的 slack 命令来实现 类似任务管理器的界面(我知道......有很多:-),我的界面与 odesk/upwork 外包我的微任务:-) )。

无论如何,我非常喜欢/remind 命令在其输出中包含“完全删除”等链接,以方便与输入命令的用户进行后续交互,我正在尝试找出如何执行相同的技巧。

到目前为止,我的想法是在输出中包含以下链接:GET/slack-link?method=POST&token=xxx&team_id=xx&command=.. 即在其查询字符串中携带slack 从普通自定义命令生成的完整 json 有效负载。 slack-link 充当“代理”,其唯一作用是将 POST 提交回我的正常 slack 端点。我什至可以为这些命令链接重复使用相同的response_url。

我还没有尝试过,但我认为这些 URL 只会打开另一个窗口,因此该路径无法正常工作...

以前有人尝试过类似的事情吗?

最佳答案

正如您所知,这些目前仅适用于内置命令。然而,由于我很好奇并想知道这些是如何完成的,我查看了 API,发现 URL 只是正常格式化,但有一个特殊的“协议(protocol)”:

You asked me to remind you to “test”.
​_<slack-action://BSLACKBOT/reminders/complete/D01234567/1234//0/0/5678|Mark as complete>
or remind me later: <slack-action://BSLACKBOT/reminders/snooze/D01234567/1234//0/0/5678/15|15 mins> [...]

单击此类链接会产生对方法 chat.action 的 API 请求,其中包含以下参数:

bot: BSLACKBOT
payload: reminders/complete/D01234567/1234//0/0/5678
token: xoxs-tokenhere-nowayiampostingithere

看起来这些 URL 分为三个部分:

<slack-action://BSLACKBOT/reminders/complete/[...]|Mark as complete>
  1. slack-action://:类似于“协议(protocol)”的前缀,让 Slack 知道这是一个聊天操作 URL。
  2. BSLACKBOT:将接收有效负载的机器人(谁?)。只能是机器人用户,且 ID 必须以 B 开头,否则 API 请求将失败并返回 invalid_bot
  3. URL 的其余部分:传递给机器人的有效负载。看起来这并不是由 Slack 专门解析或处理的。

这实际上不是一个新功能,因为他们在 2013 年底或 2014 年初就曾拥有 API URL(我记不太清了),但出于“安全原因”,他们将其删除。

看看我们是否可以将聊天操作与自定义机器人一起使用,如果可以,我们可以用它做什么,这可能会很有趣。

关于slack-api - 我的 slack 自定义命令如何生成/提醒我类似的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33975024/

相关文章:

javascript - 对 slack 的 JSON post 请求返回 invalid_auth

Slack API 获取用户加入团队的日期

c# - 尝试将消息从 C# 发布到 Slack 时出现 SSL/TLS 问题

slack - 如何在我的工作区之间共享我的 Slack 应用程序?

python - 如何以编程方式链接 slack 消息

javascript - 如何在 slack api 中没有 cron 作业的情况下安排诸如更改状态之类的操作

api - 如何通过用户 token 和 Slack API 向 Slack 发布消息

slack - 使用 https ://slack. com/api/chat.postMessage 向 Slack 发布消息

attachment - 松弛附件宽度和包裹问题

python - 如何在代码负载中传递我创建的 slackbot 的用户名/图标?