业务卡片
后端想在回答里显示订单卡片、引用来源、图表时,用业务卡片:后端返回数据,界面按数据类型找登记的组件来显示。
一条链路
用法
组件拿到的参数
数据类型的命名
- 形如
业务名.类型:至少两段,用点号分隔;每段以小写字母或数字开头,后续可含小写字母、数字、连字符。例如acme.order、acme.citation-list。 chatkit.开头的名字保留给内置显示(chatkit.run-status、chatkit.notice……)。- 没有登记的类型不显示,不会自动展示 JSON。关键结果不能只放在尚未登记的卡片里,否则用户看不到。
- 登记成
null表示不显示,也可以用来关掉某个内置显示。
适配器:transformOutput
内置适配器都有 transformOutput 选项:适配器处理完后端的一段输出之后调用,返回默认内容与业务变更,由运行时统一校验并应用。
adk.ts
openai.ts
transformOutput 返回内容变更,不直接返回片段。保留默认内容时展开 context.defaultChanges;undefined 保留默认内容,[] 隐藏本事件的默认内容。set-part 在已存在的消息里新增或替换 data,update-part 更新标题或附加数据。
函数必须同步且无副作用。独立接口异步返回的数据使用 runtime.updateContent。历史要保留业务字段,并使用稳定的片段 id。完整参数、返回值、失败处理和可运行示例见 适配器扩展 API。
配置项
配置项类型默认说明
说明
- 业务卡片按消息里的片段顺序显示。
transformOutput和runtime.updateContent不负责持久保存业务数据;历史需要返回或重新构造同样的片段及稳定 id,否则刷新后卡片可能消失。 data的类型是unknown,类型断言不会校验后端数据。组件应检查必要字段,对不完整数据提供占位或返回null。- 卡片里要发消息、操作输入框、打开面板,用公开 hooks,见 Hook 参考。
- 卡片渲染抛错由所在助手消息的错误边界处理,可能使整条消息回退为文本预览,并调用
onError;不是逐卡片隔离。需要只替换单张卡片时,由业务组件自行提供错误边界。 - 工具调用的显示不用业务卡片,见工具展示;对话里的系统提示见失败卡片与系统提示。