因此,我正在Node中构建一个松弛的应用程序,以响应某些用户命令。它通常以带有一些附件和按钮的交互式消息作为响应。
对于某些按钮,我返回了不同类型的文本或其他附件,但我还想拥有一个“取消”按钮,该按钮基本上可以取消当前命令-从用户的聊天中将其删除。
问题是我想要执行此操作而不必请求chat:write:user范围或无需创建bot。
通过询问chat:write:user
范围,我基本上可以删除用户创建的任何消息,但是在安装应用程序时它会询问该范围,并授予我的应用程序代表用户发布的权限,这使大多数用户感到不舒服。
通过创建一个机器人,我可以实现这一目标,但是它再次请求将机器人添加到渠道的许可,但我不希望这样做。
我尝试过的
使用chat.delete方法,但是{ ok: false, error: 'missing_scope', needed: 'chat:write:user', provided: 'identify,commands' }
即使我尝试将其as_user
设置为,但我还是从Slack 获得的false
。
回应与空消息的命令,像res.send()
,或者res.send({ text: null })
,或者res.send({ attachments: null })
,等当上松弛回复用户的命令,它会替换默认情况下,以前的内容。我只想覆盖任何内容,基本上删除了原始响应。但是,当我尝试此操作时,它不会执行任何操作,除非提供一些内容。
我很确定#2是要走的路,我觉得我已经接近了,这很简单,但我看不到。
我想要的工作示例
我知道可以做到这一点,因为GIF键盘应用程序可以轻松完成此任务。搜索Gif时,它们的底部有一个“取消”按钮,仅删除当前的命令/消息。此外,他们只要求Commands范围。
您走在正确的轨道上。选项#2有效,因此无需请求作用域删除消息。
只需将以下响应发送回Slack,您应用中的最后一条(临时)消息将被删除:
{
"response_type": "ephemeral",
"replace_original": true,
"delete_original": true,
"text": ""
}
Run Code Online (Sandbox Code Playgroud)