产品与设计
设计 Sent 模板编辑器 UI 时如何组织草稿模型、变量…
为面向租户的 Sent 模板构建器设计表单、变量、渠道覆盖、预览、校验和提交审核流程。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
设计 Sent 模板编辑器 UI 时如何特定
解决思路
- 围绕 Sent v3 `definition` 契约设计界面;UI 可以导入 Meta 素材,但规范保存和提交的模型绝不能是 Meta 的 `components[]` 载荷。
- 使用单一草稿对象,包含:可选的 `category` 和 `language`;必填的 `definition.body.multiChannel`;可选的 `sms`、`whatsapp`、`rcs` 完整正文覆盖;可选的 `definition.header`、`footer`、`buttons`、`definitionVersion`、`authenticationConfig`;以及 `creation_source`、`submit_for_review`、`sandbox` 提交控制字段。
- 不要暴露名为 `name`、`channels`、`body`、`header`、`buttons` 的顶层创建字段;如果产品需要内部显示标签,将其放在 Sent 创建载荷之外。
- 按推荐编辑顺序组织界面:1) 捕获意图和类别;2) 编写 `multiChannel` 正文;3) 以结构化实体插入变量;4) 添加可选的按渠道覆盖;5) 在支持的位置添加 header、footer 和 buttons;6) 审查实时预览和无障碍;7) 本地校验并用 `sandbox: true` 校验;8) 保存草稿,然后显式提交供提供商审核。
- 类别不应阻止第一次输入,但必须在提交前可见,因为它影响认证规则和 WhatsApp 政策审核。
- 插入变量时同时创建:占位符(如 `{{0:variable}}`)和匹配实体(含 `id`、`name`、`type`、`props.sample`)。
- 变量移动时原子化重新编号;绝不让用户独立于实体表编辑占位符语法;对裸 `{{1}}` 或无定义的 ID 显示明确错误。
- 应用 `references/template-validation-matrix.md` 中的精确规则,包括:每个正文最大 1,024 字符;header 和 footer 最大 60 字符;footer 不允许变量;按钮总数最多 10 个;按钮类型 `QUICK_REPLY`、`URL`、`VOICE_CALL`、`PHONE_NUMBER`、`COPY_CODE` 及其按类型限制;不要臆造 quick-reply 与 CTA 的互斥性;`authenticationConfig` 和认证限制;渠道覆盖必须完整且各自独立有效。
- 对序列化 JSON 运行捆绑的 `waba-template-author` linter;服务器校验仍是权威。
- SMS 预览:显示纯文本和估算的 GSM/UCS-2 分段数;明确分段估算影响计费,不是模板正文限制。
- WhatsApp 预览:显示 header、body、footer 和 buttons;展示示例值、类别、语言和提供商审核影响。
- RCS 预览:当前 Sent RCS 指南支持文本加最多四个建议 chip;富卡片、轮播和媒体附件是路线图能力,不是当前 Sent 构建器控件;不要为不可用功能生成能力声明。
- 渠道路由属于发送流程,不属于模板编辑器;如果在模拟器中显示路由:省略 `channel` 或 `["sent"]` 表示自动路由和回退;`["rcs"]` 固定 RCS 且无跨渠道回退;多个显式值表示广播和分别计费的消息;绝不要把显式 RCS 加 SMS 数组描述为有序回退。
- 保存和审核行为:使用 `sandbox: true` 进行校验;以 `submit_for_review: false` 保存;在切换为 `true` 之前,显示类别和语言、带示例值的渲染预览、渠道覆盖、按钮操作、任何警告,以及提供商审核是外部状态变更这一事实;不要在保存时自动提交。
- 生命周期 UX:资源状态值当前包括 `DRAFT`、`PENDING`、`APPROVED`、`REJECTED`、`PAUSED`;保留未知状态渲染器。
- WhatsApp 模板 webhook 事件使用 `field: "templates"`,没有 `sub_type`,没有 `event`;状态在 `payload.status`;提供商值可能包括 `CATEGORY_UPDATED`、`DISABLED` 和其他未来字符串;参见 `references/template-status-handling.md`。
- 无障碍和失败恢复:将每个错误关联到字段和摘要;不要仅依赖预览颜色;校验失败后保留用户编辑;为高级用户保留原始 JSON 检查;在转换前将导入的 Meta JSON 标记为“Meta Cloud API source”;为服务器规范化和提供商驱动的类别/状态变更提供 diff。
- 使用 `references/template-ui-wireflows.md` 处理状态转换;使用 `waba-template-author` 进行文案和政策判断;使用 `sent-templates` 进行现有资源操作;使用 `rcs-agent-onboarding` 进行 RCS 启动准备。
适用边界 · 注意事项
- 不适用于不围绕 Sent v3 `definition` 契约构建的模板系统。
- 不适用于不需要面向租户的模板编辑器、预览、校验或提交审核流程的场景。
- 不适用于无法使用 `sandbox`、`submit_for_review` 或 `waba-template-author` linter 的环境。