只需使用 Slack Commands API 即可删除交互式消息(命令响应)

2024-01-03

所以我正在 Node 中构建一个 slack 应用程序来响应一些用户命令。它通常会回复一条包含一些附件和按钮的交互式消息。

对于某些按钮,我返回不同类型的文本或其他附件,但我还想要一个“取消”按钮,该按钮基本上会取消当前命令 - 将其从用户的聊天中删除。

事情是这样的我想在不必请求 chat:write:user 范围或无需创建机器人的情况下执行此操作.

  1. 通过询问chat:write:user我基本上可以删除用户创建的任何消息,但它在安装应用程序时要求该范围,并授予我的应用程序代表用户发布的权限,这让大多数人感到不舒服。

  2. 通过创建一个机器人,我可以实现这一点,但它再次请求许可将机器人添加到频道,而我不希望这样。

我尝试过的

  1. Use 聊天.删除 https://api.slack.com/methods/chat.delete方法,但我得到{ ok: false, error: 'missing_scope', needed: 'chat:write:user', provided: 'identify,commands' }来自 Slack,即使我尝试使用as_user set to false.

  2. 使用空消息响应命令,例如res.send(), or res.send({ text: null }), or res.send({ attachments: null }), ETC。 当您在 Slack 上回复用户命令时,它默认会覆盖之前的内容。我只想什么都不覆盖,基本上删除原始响应。然而,当我尝试这个时,它不会做任何事情,除非我提供some内容。

我很确定#2 是可行的方法,我觉得我已经很接近了,它非常简单,但在我的视线之外。

我想要的工作示例

我知道这是可以做到的,因为GIF 键盘 http://slack.tenor.co/settings?source=slackslack 的应用程序就是这样做的。搜索 Gif 时,底部有一个“取消”按钮,仅删除当前命令/消息。此外,他们只要求命令范围。


你走在正确的轨道上。选项 #2 有效,因此无需请求范围来删除消息。

只需将以下响应发送回 Slack,应用程序中的最后一条(临时)消息就会被删除:

{
    "response_type": "ephemeral",
    "replace_original": true,
    "delete_original": true,
    "text": ""
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

只需使用 Slack Commands API 即可删除交互式消息(命令响应) 的相关文章

随机推荐