首页 文章

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

提问于
浏览 1562
2

所以我在Node中构建一个响应一些用户命令的松弛应用程序 . 它通常以包含一些附件和按钮的交互式消息进行响应 .

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

事情是 I want to do it without having to request the chat:write:user scope or without having to create a bot .

  • 通过询问 chat:write:user 范围,我基本上可以删除用户创建的任何消息,但是在安装应用程序时会询问该范围并授予我的应用程序代表用户发布的权限,这大多数人都觉得不舒服 .

  • 通过创建一个机器人,我可以实现这一点,但它再次要求允许添加机器人到通道,我不希望这样 .

What I've tried

  • 使用chat.delete方法,但是我从Slack得到 { ok: false, error: 'missing_scope', needed: 'chat:write:user', provided: 'identify,commands' } ,即使我尝试将 as_user 设置为 false .

  • 对命令的空消息进行响应,如 res.send() ,或 res.send({ text: null }) ,或 res.send({ attachments: null }) 等 . 当您在Slack上回复用户命令时,它会默认覆盖以前的内容 . 我只想覆盖什么,基本上删除原始响应 . 然而,当我尝试这个时,它没有做任何事情,除非我提供 some 内容 .

我很确定#2是要走的路,我觉得我很接近,这很简单但不在我看来 .

Working example of what I want

我知道它可以完成,因为松弛的GIF Keyboard应用程序就是这样做的 . 在搜索Gif时,它们底部有一个"cancel"按钮,只删除当前命令/消息 . 此外,他们只询问命令范围 .

1 回答

  • 3

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

    只需将以下回复发送回Slack,您应用中的最后一条(短暂的)消息将被删除:

    {
        "response_type": "ephemeral",
        "replace_original": true,
        "delete_original": true,
        "text": ""
    }
    

相关问题