Slack block_id更新规则咨询:文档表述矛盾及唯一性范围疑问
核心结论:两条文档规则不存在冲突,适用场景完全不同
- 第一条要求更新时更换
block_id的规则,仅适用于消息(Message)类场景:包括频道/私信发送的普通消息、临时消息、富文本交互消息等,这类内容调用chat.update更新时,必须更换所有block_id,避免Slack端状态同步出错。 - 第二条要求保留
block_id的规则,仅适用于视图(View)类场景:包括模态框(Modal)、工作流步骤视图、App Home侧边栏视图等,和消息属于完全独立的两类承载载体,规则互不通用。
具体问题解答
更新Modal时是否需要修改
block_id?
不需要。只要是逻辑上同一个输入块,更新视图时必须保留完全一致的block_id和action_id,这样Slack才会自动保留用户已经输入/选择的内容,也能保证后续交互回调、错误返回的键值和你预设的对应关系不变。block_id的唯一性范围到底是什么?block_id的唯一性要求完全跟随使用场景变化,没有统一的全局规则:
- 消息场景下:单条消息内部的多个块之间
block_id必须唯一;同一条消息更新后的新版本,所有block_id不能和旧版本重复。 - 视图场景下:仅要求单个视图内部的多个块之间
block_id唯一,跨视图、同个视图更新前后的同逻辑块都不需要做唯一性区分(反而要求保持一致),不存在团队全局唯一的要求,和需要全局唯一的external_id属于完全不同的规则。你已知的action_id仅需单个视图内唯一的规则是正确的,block_id的限制比external_id宽松很多。
内容的提问来源于stack exchange,提问作者Daniel Roseman
相关产品推荐
相关产品推荐

