我的松弛自定义命令如何产生/提醒我像链接

Dio*_*des 5 slack-api slack

我正在编写一个自定义松弛命令,它实现了一个像界面一样的任务管理器(我知道......那里有很多:-),我的接口有odesk/upwork来外包我的微任务:-)).

无论如何,我非常喜欢/ remind命令在其输出中包含完全删除等链接,以方便后续与输入命令的用户交互,我试图弄清楚如何做同样的技巧.

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

我没有尝试过,但我认为这些网址只会打开另一个窗口,以便路径不会正常工作......

以前有人试过这样的事吗?

Léo*_*Lam 4

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

\n\n
You asked me to remind you to \xe2\x80\x9ctest\xe2\x80\x9d.\n\xe2\x80\x8b_<slack-action://BSLACKBOT/reminders/complete/D01234567/1234//0/0/5678|Mark as complete>\nor remind me later: <slack-action://BSLACKBOT/reminders/snooze/D01234567/1234//0/0/5678/15|15 mins> [...]\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
bot: BSLACKBOT\npayload: reminders/complete/D01234567/1234//0/0/5678\ntoken: xoxs-tokenhere-nowayiampostingithere\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

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

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

\n\n

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

\n