Customize Output UI: flightResponse CLT

ADG001 - 创建 Actions

📄 第 235 页 🎬 视频课程

课程章节介绍

同学你好,今天我们来继续聊聊 Agentforce 中一个非常实用的小技巧——如何把后台返回的航班数据,用我们自己设计的精美卡片展示出来。也就是定制那个 flightResponse 的输出渲染。别担心,我一步步用最直白的话讲给你听。 首先,我们要明白,Agentforce 对话结束时返回的数据,默认就是一个干巴巴的文本。比如你问“我下周一从伦敦飞东京有哪些航班”,它返回的数据可能就是一堆 JSON。用户看了肯定头疼。所以我们需要做一层“美颜”,把原始航班数据变成一个漂亮的卡片,有折扣、时间轴、宠物政策这些信息,让用户一眼就能看清。 这个过程靠什么实现的呢?就是通过一个自定义的 Lightning Web 组件(我们叫 LWC)来“接管”这个数据的渲染。这个组件名叫 flightDetails。 我们分三步来走通整个流程: 第一步,让系统知道我们要输出一个叫 flightResponse 的自定义类型。在 Salesforce 里,我们要建一个 schema.json 文件,里面引用一个 Apex 类的类型。你可以把它理解为:给这个“航班回复”的消息结构下个定义,告诉系统它长什么样。这样 Agent 的动作输出就可以声明为 flightResponse 类型。 第二步,在 Lightning Desk 的 GenPi 通道文件夹里,我们再放一个 renderer.json 文件。这个文件很关键,它就像是一个“指路牌”,说:“嘿,当遇到 flightResponse 这种输出时,别用默认的渲染,要用我指定的那个 LWC 组件,它叫 c/flightDetails。” 这里的 c 是默认命名空间,flightDetails 就是我们自己写的组件名。 第三步,就是写那个 flightDetails 组件本身。这个组件是针对 lightning__AgentforceExit 这个目标去设计的,意思是它会嵌在 Agentforce 对话结束的那个区域里。这个组件拿到后台传过来的原始航班数据 JSON,然后做几件贴心的事: - 它会用 JavaScript 把持续时间格式化,比如把分钟数算成“2小时30分”,并且根据起飞时间加上持续时间,算出预估到达时间。 - 它把这一堆原始数据变成一张视觉上很舒服的卡片布局,上面会有:航班 ID、折扣百分比、价格、飞行的总时长、出发和到达的时间轴(就是那种起点终点连线的样式)、中转停留次数,还有这趟航班允不允许带宠物。 - 最后用漂亮的 CSS 样式展现出来,让用户一眼就抓住重点。 那么,我们怎么把这一整套集成到 Agent 的动作里呢?很简单,你找到你 Agent 里那个叫 aFlight 的字段,在它的动作输出渲染参数里,编辑一下,选择 flightResponse 作为输出类型。这样,动作一执行,Agent 就知道:“哦,返回的数据是 flightResponse 类型,我要按照之前 renderer.json 的指引,用 flightDetails 这个组件去渲染它。” 这里还有一点小小的注意事项:你在配置的时候可能会看到一个黄色的警告,写着“不支持的数据类型”。很多同学一看到警告就紧张,但这个其实是纸老虎。它是因为你在引用自定义类型(比如我们定义的 flightResponse,它底层是基于 Apex 类的),平台在编译时暂时没有识别到具体的定义,所以打一个无害的警告。它完全不影响功能,你只管忽略它,继续保存就行。我们的组件和渲染都能正常工作。 所以总结一下:想给 Agentforce 回答加个个性化的卡片,你要做的事情就是:定义类型(schema.json)→ 指定渲染组件(renderer.json)→ 写好那个负责美化数据的 LWC 组件 → 最后在 Agent 的动作输出里挑选这个类型。一步不少,但一步也不难。 好了,今天这个 custom output renderer 的小课堂就到这里。有什么不明白的,随时来问。我们下次再见!

关键词

Agentforce Salesforce