我正在编写一个自定义的 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>
slack-action://
:类似于“协议(protocol)”的前缀,让 Slack 知道这是一个聊天操作 URL。BSLACKBOT
:将接收有效负载的机器人(谁?)。只能是机器人用户,且 ID 必须以 B 开头,否则 API 请求将失败并返回invalid_bot
。- URL 的其余部分:传递给机器人的有效负载。看起来这并不是由 Slack 专门解析或处理的。
这实际上不是一个新功能,因为他们在 2013 年底或 2014 年初就曾拥有 API URL(我记不太清了),但出于“安全原因”,他们将其删除。
看看我们是否可以将聊天操作与自定义机器人一起使用,如果可以,我们可以用它做什么,这可能会很有趣。
关于slack-api - 我的 slack 自定义命令如何生成/提醒我类似的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33975024/