如何通过Slack API实现报错后将用户输入的失败命令保留在聊天输入框中
Slack slash命令报错保留输入框原内容的实现方法
你之前返回普通的文本响应时,Slack会判定命令已经处理完成,所以会自动清空输入框内容。要实现和官方/remind一致的报错后保留原输入的效果,需要按Slack的命令校验错误规范返回特定结构:
- 收到Slack的slash命令请求后,3秒内返回同步的HTTP 200响应,不要返回普通文本消息
- 响应体中添加
response_action: "errors"字段,该字段会告诉Slack当前命令校验未通过,需要保留用户的原输入 - 错误提示内容放在
errors对象中,slash命令场景下errors的key固定为text,value为你要展示的错误提示文本
示例响应结构如下:
{ "response_action": "errors", "errors": { "text": "Bad command:请检查命令格式,示例:/remind 我 明天10点 提交周报" } }
补充注意事项:
- 该结构只能用于命令请求的同步响应,异步调用webhook推送的消息无法触发该效果
- 错误提示仅对触发命令的用户可见,不会公开展示在频道中,和普通ephemeral消息的可见范围一致
- 只要返回上述结构,Slack客户端会自动保留用户输入的整条原命令在输入框,用户可直接编辑后重新提交,和官方内置命令的体验完全一致
内容的提问来源于stack exchange,提问作者hhaamm
相关产品推荐
相关产品推荐

