使用屏幕流将输入数据传递到动态 WhatsApp 流
屏幕流可以收集客户数据,并将其安全地传递给变量。然后,这些变量可以作为使用基于 Apex 的表单消息传递组件创建的动态 WhatsApp 流的输入。要将个性化内容添加到消息,请在基于 Apex 的表单消息传递组件中,添加对此输入数据的动态引用。例如,要安排兽医预约,屏幕流会收集特定详细信息,例如动物类型和问题,并将此信息动态传输到基于 Apex 的表单消息传递组件。
所需的 Edition
| 查看支持的版本。 | |
本文适用于:
|
增强 WhatsApp 渠道,Unified WhatsApp |
本文不适用于:
|
增强应用程序内聊天、增强 Web 聊天、标准和增强 Facebook Messenger、标准和增强 SMS、增强 Apple Messages for Business、增强 LINE 以及自带渠道 |
| 所需用户权限 | |
|---|---|
| 要创建消息传递组件: | 自定义应用程序权限和查看设置和配置权限 或者 系统管理员 |
| 要在消息中发送和接收消息: | 消息传递客服人员 |
在创建基于 Apex 的表单消息传递组件时,这些标准输入参数默认可用。
| 参数 | 描述 |
|---|---|
FormData |
存储传递到流的输入数据。数据存储为键值对的 JSON 字符串。要引用此数据,您必须在数据模型中定义数据的结构。数据模型的结构必须与 JSON 的结构相匹配。您可以使用 Apex 或屏幕流访问此数据。 |
FormEntryScreenId |
存储条目屏幕的 ID,这是消息传递最终用户看到的第一个屏幕。 |
您可以在“组件详细信息”部分的“参数”选项卡中找到这些默认参数。
为了帮助您了解如何使用这些参数和屏幕流来传递输入数据,让我们看一个示例。
-
打开基于 Apex 的表单消息传递组件的流格式。
-
在流格式中,单击管理数据,为从 FormData 参数传入的所有输入数据定义数据模型。
例如,FormData 参数存储此输入数据。
{“FirstName”:“Albert”,“LastName”:“Costa”,“isStudent”:“true”} -
要将字段添加到数据模型,请单击添加字段并配置其属性。
对 FormData 参数中的每个字段执行此步骤。要创建结构,请为字段选择对象数据类型,并添加嵌套字段。

- 定义完数据模型后,保存它。
-
在流格式中,单击管理数据,为从 FormData 参数传入的所有输入数据定义数据模型。
-
要在流属性中使用数据模型字段中的值,请添加动态引用。
-
打开流格式,并查找要使用动态引用的属性。
例如,您可以为正文屏幕元素的文本内容字段添加动态引用。
- 在类型字段中,选择动态引用。
-
在选择参考字段中,选择数据模型字段。

动态引用可以从数据模型字段或屏幕中定义的输入字段中提取数据。
-
在画布中,预览动态引用。

-
打开流格式,并查找要使用动态引用的属性。
-
要将数据传递到消息传递组件,请创建屏幕流。
屏幕流可以从消息传递会话收集数据,并将其用于基于 Apex 的表单消息传递组件。为了说明它的工作原理,让我们创建一个示例屏幕流。
-
定义屏幕流变量。
变量 值 sessionId存储消息传递会话记录 ID。 initialData存储基于 Apex 的表单的输入数据。此 JSON 字符串中的字段必须与添加到数据模型的字段名称相匹配。 initialScreenId存储基于 Apex 的表单的初始屏幕 ID。这是消息传递最终用户看到的第一个屏幕。 meuName存储消息传递最终用户的名称。 items此集合变量存储项目列表。 -
在屏幕流中,按此顺序添加这些操作。要从 Salesforce 对象检索数据,请添加获取记录操作。要将值分配到屏幕变量,请添加分配操作。
操作 描述 getSession 获取记录操作 根据会话 ID 获取消息传递会话。您可以从该消息传递会话获取相关数据。在这种情况下,它会检索并存储 ID 和 MessagingEndUserId 字段值。 getMEU 获取记录操作 根据 MessagingEndUserId 获取消息传递用户记录。 setMEUName 分配操作 将 meuName变量设置为消息传递用户记录中消息传递用户名字段的值。getDynamicFlowItem Get Records action 从 DynamicFlowItem 对象获取所有 DynamicFlowItem 记录,并将 ID、Id__c 和 itemTitle__c 字段存储在 items集合变量中。GenerateJson Apex 操作 将输入数据从 items和meuName变量转换为 JSON 格式。JSON 对象的字段映射到流数据模型中的字段。此操作基于 Apex 类。请参阅此表后的示例 Apex 类。setData 分配操作 将 InitialData变量设置为生成的 JSON 操作的值。此 Apex 类将结构化输入数据(用户名和 Salesforce 记录列表)转换为单个 JSON 字符串。然后,此 JSON 字符串用于将输入数据传递到基于 Apex 的表单消息传递组件。
public class FlowJSONBuilder { // 1. Input parameters public class FlowInput { @InvocableVariable(label='User Name' required=true) public String meuName; // CHANGE: Use List<SObject> instead of List<DynamicFlowItems__c> to avoid compile error @InvocableVariable(label='Flow Items' required=true) public List<SObject> items; } // 2. Output parameters public class FlowOutput { @InvocableVariable(label='Generated JSON') public String jsonString; } // 3. Internal Wrapper classes public class JSONStructure { public String greeting; public List<ItemWrapper> items; } public class ItemWrapper { public String id; public String title; } // 4. Main Method @InvocableMethod(label='Generate Custom JSON' description='Builds the JSON string from Flow items') public static List<FlowOutput> generateJson(List<FlowInput> requests) { List<FlowOutput> outputs = new List<FlowOutput>(); for (FlowInput request : requests) { FlowOutput output = new FlowOutput(); JSONStructure jsonRoot = new JSONStructure(); jsonRoot.greeting = 'Hello ' + request.meuName + '!'; jsonRoot.items = new List<ItemWrapper>(); if (request.items != null) { // Loop through generic SObjects for (SObject genericRec : request.items) { // CAST the generic SObject to your specific Custom Object DynamicFlowItem__c rec = (DynamicFlowItem__c)genericRec; ItemWrapper item = new ItemWrapper(); item.id = rec.itemId__c; item.title = rec.itemTitle__c; jsonRoot.items.add(item); } } output.jsonString = JSON.serialize(jsonRoot); outputs.add(output); } return outputs; } } -
将屏幕操作添加到屏幕流,然后将增强消息组件拖到屏幕。

-
要指定输入数据,设置这些增强消息组件属性,如图所示。
属性 值 消息传递会话 ID 选择 sessionId,即包含会话 ID 的屏幕流变量。消息传递组件名称 选择您创建的基于 Apex 的表单消息传递组件的名称。 Apex 表单数据 选择 initialData,即包含输入数据的屏幕流变量。Apex 表单条目屏幕 ID 选择 initialScreenId,即包含初始屏幕 ID 的屏幕流变量。在运行时,屏幕操作会调用基于 Apex 的表单消息传递组件,并将此输入数据传递给它。
-
保存并激活屏幕流。

-
定义屏幕流变量。
-
要使服务代表能够运行屏幕流,请在服务控制台页面中嵌入活动屏幕流。
例如,将流组件添加到消息传递会话记录页面。

在消息传递会话期间,要从页面启动屏幕流,服务代表可以单击下一步。
要将流的消息传递组件插入与客户的对话中,服务代表可以单击插入消息。

然后,服务代表可以向客户发送消息。
本文章是否解决您的问题?
请与我们共享您的想法,以便我们进行改进!



