【问题标题】:How can my slack custom command produce /remind me like links我的松弛自定义命令如何像链接一样生成/提醒我
【发布时间】:2015-11-28 18:40:54
【问题描述】:

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

无论如何,我非常喜欢 /remind 命令如何在其输出中包含 Complete Delete 等链接,以方便与输入命令的用户进行后续交互,我正在尝试找出如何做同样的技巧。

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

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

以前有没有人尝试过类似的方法?

【问题讨论】:

    标签: slack-api slack


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我猜想知道的事情: - 自定义 slack 命令的输出是否可以包含带有slack-action 协议的 url - 假设上面是“是”,当这样的 URL 被点击时,它是否会像提醒一样被处理我的操作链接(即使用您描述的表单数据发布到ezhome.slack.com/api/chat.action?t=xxxxxx。-不知道之后是什么-我找不到有关 chat.action API 方法的更多信息
    • 您绝对可以发送这些链接,它们会被解析为有效的操作链接——然而,我不知道机器人用户如何回复甚至接收它们。 chat.action API 方法目前完全没有文档记录,所以我没有更多信息。出于某种原因,当我尝试将其发送给机器人用户时,我总是收到action_failed,但没有更多详细信息。这就是我们现在所知道的一切¯_(ツ)_/¯
    【解决方案2】:

    我从 Slack 支持中得到了答案:

    关于您最初的问题:目前 Slack 不提供 在我们的自定义集成中嵌入“动作”链接的能力。仅有的 /remind 等内置功能目前可以使用这些功能。为了 外部服务,您需要链接到在 外部网络浏览器。

    我们确实希望为自定义集成提供类似的功能 未来,允许交互式消息。

    谢谢,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多