问题描述
我创建了一个 Slack 机器人,允许同事向某些渠道报告问题,但偶尔有人误点击或希望他们的报告(由机器人通过 chat.postmessage 在 Slack 中报告)被删除。据我所知,这只能由机器人本身通过消息快捷方式或带有 chat.delete 的交互式消息来完成。我希望用户可以像删除他们自己的消息一样删除它,方法是单击帖子上的省略号并在上下文菜单中选择删除消息。有没有办法通过 OAuth 范围或 Slack/工作区/通道管理员权限来完成?
解决方法
不幸的是,无法通过用户可能删除自己的消息的传统途径来做到这一点。
实现此目的的唯一方法是将按钮或某种其他类型的菜单附加到消息(可能看起来相似,但实际上不是同一个菜单),并附加一个事件,然后调用您的应用程序删除消息。
例如你可能有
{
"blocks": [
{
"type": "section","text": {
"type": "mrkdwn","text": "Here is a message to delete"
},"accessory": {
"type": "overflow","options": [
{
"text": {
"type": "plain_text","text": "Delete message","emoji": true
},"value": message.timestamp
}
],"action_id": "delete-action"
}
}
]
}
作为您的消息,其中 message.timestamp
是消息的 ts
值。
然后是一个对该消息 ID 调用 chat.delete
方法的处理程序。