一、开始使用 Data 360 与 AI(Get Started with Data 360 and AI)
欢迎来到 Coral Cloud Resorts(Welcome to Coral Cloud Resorts)
每个人都需要时不时度个假。那么下次旅行,何不考虑一下 Coral Cloud Resorts?Coral Cloud Resorts 以提供丰富多样的精彩目的地活动、并竭尽全力确保客人住宿愉快而闻名。这种对卓越服务的执着,让 Data 360 与 Salesforce 进入了 Coral Cloud 的视野。
Salesforce 管理员 Becca Cloudier 刚获得了 Data 360 Quick Look 徽章,学会了 Data 360 如何统一来自众多来源的数据;她最近也获得了 Agentforce Basics 徽章,见识到生成式 AI 的强大威力。现在 Becca 心里很清楚:Data 360 与 Salesforce 就像阳光与沙滩一样相得益彰。
Becca 开始规划她的第一个「Data 360 + 生成式 AI」项目:简化办理入住(check-in)流程,同时保持个性化体验。这样一来,度假村员工可以更贴心地服务客户,而客户也能少在入住前台前排队等待。
完成这个徽章后,你就能亲眼见证来自外部源的少量数据如何一路贯穿 Salesforce 与生成式 AI 功能。收拾好行李吧,因为你即将前往 Coral Cloud Resorts,开启一场 Data 360 与 Agentforce 的精彩冒险!
注册包含 Data 360 与 Agentforce 的自定义 Playground:要完成这个徽章,你需要一个包含 Data 360、Agentforce 和样本数据的自定义 playground。点击 Create Playground,新 org 会自动关联到你的 Trailhead 账户。请记下 org 的过期日期,并在那之前完成徽章。注意:这个徽章共有三个单元,你必须在同一个 playground org 中完成全部三个单元的所有步骤;如果 playground 过期,你将失去访问权限,必须从头开始。
二、将外部数据带入联系人页面布局(Bring External Data into the Contact Page Layout)
启用数据流与设置身份解析(Enable Data Streams & Set Up Identity Resolution)
Becca 迫不及待地开始她的第一个「Data 360 + AI」组合项目。但在动手之前,她知道先盘点现有系统与流程很重要。简化入住流程涉及 Coral Cloud 当前的预订系统——一个略显陈旧的方案,名叫 Reserv-o-matic。这个外部系统允许客人在单个档案(profile)下创建多条预订。
每位客人都有若干字段来存放姓名、邮箱地址、电话号码等信息。其中一位客人 Sofia Rodriguez 创建了几条预订,每条都带有入住/退房日期、房型与预订状态。
目前,所有这些信息都与 Coral Cloud 的 Salesforce org 完全分离。该 org 中有 Sofia 的 Contact 记录,以及大量已有的相关数据。Data 360 能够在 Salesforce 中的 Sofia 与 Reserv-o-matic 中的 Sofia 之间建立联系。一旦建立了这种关系,Becca 就能做各种有趣的事——例如,先把预订相关列表直接放进 Contact 页面布局。
为此,Becca 需要完成三个步骤:
- 让 Data 360 认识 Reserv-o-matic 的数据。
- 在外部客人与内部联系人之间找到匹配。
- 更新 Contact 页面以显示外部预订。
(小提示:Reserv-o-matic 实际上并不存在,因此本徽章没有真正的外部数据源。Team Trailhead 把「外部」客人与「外部」预订数据放进了你特殊 org 里的自定义对象中。所以在整个徽章里,你需要假装这些数据存在于 org 之外。)
为现有 Coral Cloud 数据启用数据流:在这个故事里,Team Trailhead 已经为你省了点事——他们已经创建了 Data 360 与 Reserv-o-matic 之间的连接。不过,Data 360 还不知道外部系统中存在哪些数据,更不知道它们如何与内部对象关联。所以 Becca 要做的第一步,是明确应该把哪些数据带入 Data 360。这就需要创建数据流(data stream),它是 Data 360 管理的基础组成部分。
数据流描述了在给定连接中从哪里找到数据。每条数据流会创建一个相关的数据湖对象(data lake object,DLO),它是存放来自数据流源数据的存储容器。但新的 DLO 又如何与 Data 360 中已有的其他数据相关联呢?答案是数据模型对象(data model objects,DMO),它描述数据的结构,有点像元数据。例如,名为 Contact Point Email 的 DMO 记录了如何正确存储邮箱地址的细节,无论它来自哪里。因此 Becca 可以把外部客人数据中的 email 列映射到 DMO 中的 email 地址字段。
正是这个映射让 Data 360 能够巧妙地使用数据。在本徽章中,Data 360 利用邮箱地址来判断:Reserv-o-matic 里的 Sofia 就是 Salesforce 里的同一个 Sofia。
创建数据流并做映射本身是个大话题。在本徽章中,Team Trailhead 把 Coral Cloud 的所有数据流和映射打包成了一个 data kit,并且已经加载进你的特殊 org。你只需启用这些数据流即可。首先启动你的 Data 360 与 Agentforce playground。
启用数据流的步骤:
- 打开 App Launcher,搜索并选择 Data Cloud。
- 点击 Data Streams 标签页。
- 点击 New。这里需要你「假装」一下,选择一个内部数据源而不是外部数据源。
- 点击 Salesforce CRM。
- 点击 Next。
- 向下翻到 Custom Bundles,点击 AIPlusData。
- 点击 Next。
- 注意字段已经被预选,bundle 中包含的所有字段都已列出。保持选择不变,点击 Next。
- 点击 Deploy。这一步可能需要几分钟。如果出现无法部署的错误,再点一次 Deploy。
- 刷新浏览器页面。
- 点击每条数据流右侧的下拉箭头,选择 Refresh Now。
- 选择 Full Refresh,点击 Refresh Now。
- 验证新数据流的 Success 状态。
所有数据流的 Last Run Status 都需要显示 Success,且 Total Records 列中要有数字(不能是零)。耐心是关键——这可能需要等一会儿。数据流通常会很快摄入样本记录,但偶尔可能需要长达 15 分钟。
设置身份解析(Identity Resolution):Becca 知道 Reserv-o-matic 中的许多客人,与 Salesforce 里拥有 Contact 记录的是同一批人。既然客人与联系人已经映射到共同的数据模型对象,她就可以使用 Data 360 的一项强大功能,把 Salesforce 里的 Sofia 与 Reserv-o-matic 里的 Sofia 匹配成一个统一的 Sofia。这个功能就是身份解析(identity resolution),它是弥合 Salesforce Contacts 与外部预订数据之间鸿沟的关键。首先导航到 Identity Resolutions 标签页,创建身份解析规则集:
- 点击 Identity Resolutions 标签页。
- 点击 New。
- 点击 Create New Ruleset,然后点击 Next。
- Data Space 菜单保持默认选择。
- Primary DMO 选择 Individual。
- Ruleset ID 输入
ccid(代表 Coral Cloud Identification)。 - 点击 Next。
- Ruleset Name 输入
Guest Name and Email。 - Description 输入
Reconcile Reserv-o-matic contact data with Salesforce contact data。
- 禁用 Run jobs automatically(稍后手动启动任务)。
- 点击 Save。规则集框架已保存,现在来配置匹配方式。
- 点击 Configure。
- 点击 Next(或在这里暂停,阅读 Match Rule Instructions)。
- 点击 Configure。
- 选择 Fuzzy Name and Normalized Email——这决定了用于匹配的主要数据片段。
- 点击 Next。虽然有很多精细调整匹配方式的方法,但这里先使用默认值。
- 点击 Next。
- 点击 Save。
- 点击右上角的 Run Ruleset。
- 刷新浏览器,查看 Last Job Status 显示 In Progress 或 Succeeded。
现在 Data 360 知道了如何用规则集判断两个人实际上是同一个人。你的 org 里有几十位客人和联系人可以使用该规则集匹配。
验证外部预订关系:确认 ExternalReservation 数据模型已添加以下关系并处于激活状态:
- 点击 Data Model 标签页。
- 点击 ExternalReservation。
- 点击 Relationships 标签页。
- 确认关系已存在。如果存在,跳到「用 Enrichment 连接 Data 360 与 CRM」。
如果没有列出关系,点击 Edit,若出现未激活的 ExternalReservation Contact ID,将 Active 切换为 On:Field 为 Contact ID,Cardinality 为 N:1,Related Object 为 Individual,Related Field 为 Individual Id,然后点击 Save & Close。
Data Cloud 相关列表:在联系人页面显示预订(Data Cloud Related List)
把所有数据集中到一处的一个绝妙好处是,你可以创建无缝融合所有来源数据的体验。在 Coral Cloud 的例子中,Becca 希望把外部预订数据展示在酒店员工查找客人其他相关信息的地方:Contacts 页面。
乍一看,你很容易以为这张截图展示的是一个普通的相关列表——它融合得天衣无缝!但它实际上是一种特殊的相关列表,叫做 Data Cloud Related List。创建它需要在 Setup 下进行。
- 点击 Setup 图标,然后选择 Setup。
- 点击 Object Manager。
- 点击 Contact(注意不是 Contract)。
- 点击 Data Cloud Related List。
- 点击 New。
- Data Cloud Object 选择 ExternalReservation。
- 点击 Next。
- 将 Child Relationship Name 改为
Reservations。 - 点击 Next。
- 将 Related list label 改为
Reservations。 - 点击 Next。
好了,Data Cloud Related List 已存在,但它还没出现在任何页面布局上。于是 Becca 更新 Contact 的 Lightning 记录页面,并配置它的显示方式。
- 在左侧菜单点击 Lightning Record Pages。
- 点击 Contact Record Page。
- 点击 Edit。
- 把一个 Dynamic Related List - Single 拖到 Related 标签页中 Opportunities 的上方。
- 在右侧菜单的 Related List 下,选择 Reservations。
- 在 Related List Fields 下,点击 Add Field。
- 找到并选择 Check-in Date。
- 点击 Done。
- 对 Check-out Date、Room Type、Reservation Status 重复上述步骤。
- 点击列表顶部 Record ID 字段的 X 将其删除。
- 在 Related List Filters 下,点击 Add Filter。
- Field 选择 Check-in Date。
- Operator 选择 not equal to(即:只要入住日期非空,就显示该预订。如果不加过滤器,只会显示最近 7 天的数据,而你的 org 里的数据可能更早)。
- 点击 Done。
- 点击 Save。
- 关闭 Lightning App Builder 浏览器标签页,返回 Data Cloud 应用。
太棒了,Data Cloud Related List 已准备就绪!查看 Sofia 的 Contact 记录,验证她的预订是否已列出:
- 点击 Identity Resolutions 标签页,然后点击 Guest Name and Email 规则集。刷新浏览器,确认 Last Job Status 显示 Succeeded,且 Total Unified Profiles 有结果数字。如果没有,等一分钟再刷新。
- 在 App Launcher 中搜索并选择 Sales。
- 点击 Contacts 标签页。
- 点击 List View(最右侧),然后点击 Recently Viewed 并选择 All Contacts。
- 在「Search this list…」中搜索并选择 Sofia Rodriguez。
Sofia 现在应该有三条预订,正好出现在 Contact 页面布局中。没有比「计划一步步落地」更棒的感觉了。数据流已创建、身份已解析、页面布局已增强——这是个很棒的开端。接下来,Becca 要用预订数据教会 Agentforce 一项全新技能。
三、用对话语言增强 Agentforce 处理数据(Enhance Agentforce to Act on Data with Conversational Language)
完成一个 Flow 来记录住客事件(Finish a Flow to Log Guest Events)
在 Coral Cloud Resorts,每天都有来自世界各地的客人抵达,他们通常已准备好开始放松。但在此之前,他们必须到前台办理入住。所以 Becca 要让这最后一道小关卡对员工来说尽可能轻松,好让客人尽快开始度假。
每当有人办理入住,Coral Cloud 的员工会在名为 Guest Event 的自定义对象上创建一条记录来记录该事件。他们用它跟踪很多事情,比如客人何时请求客房服务、何时参加社交活动。目前员工必须手动创建入住记录,但 Becca 看到两个升级方向:第一,她用 flow 基于 Data 360 中的最新预订数据创建 Guest Event 记录;第二,她教会 Agentforce 如何通过对话语言启动该 flow。这样,当 Sofia Rodriguez 抵达开始住宿时,前台任何人都可以简单地对 Agentforce 说「Check in Sofia Rodriguez」,剩下的事交给 Agentforce 完成!
多亏了 Data 360,Becca 拥有制作一个 flow 所需的全部信息:它从一位联系人(如 Sofia Rodriguez)开始,并基于预订数据创建记录。不过两者之间的路径有点曲折。正如你在上一单元学到的,身份解析会自动创建连接相关数据模型对象的桥接对象(bridging objects)。为了做出入住 flow,Becca 需要两次跨过其中一座桥。
这座桥名为 Unified Link Individual ccid,它把 Salesforce 中的 Sofia 连接到 Reserv-o-matic 中的 Sofia。下面是该桥数据的简化版本:
| Full Name | Data Source | Source ID | Unified ID |
|---|---|---|---|
| Sofia Rodriguez | Salesforce | 003bn… [1] | ca636977… |
| Sofi Rodriguez | Reserv-o-matic | 10008155 [2] | ca636977… |
注意,两个 Sofia 的 Unified ID 是相同的。所以如果你知道 Sofia 的 Salesforce ID [1],就能通过 Unified ID 找到她的 Reserv-o-matic ID [2]。这一点很重要,因为预订只通过 Reserv-o-matic ID 与客人关联。下面是一个简化版本:Sofia 有三条预订(房型均为 Suite,状态 Completed,入住日期分别为 2021-05-31、2023-10-19、2024-04-27),它们都通过 Reserv-o-matic ID 10008155 [2] 关联。
基于以上理解,我们来拆解这个 flow 做了什么:
- 知道来自 Salesforce 的 Source ID [1],查询桥接表找到 Unified ID。
- 知道 Unified ID,再次查询桥接表找到 Reserv-o-matic ID [2]。
- 知道 Reserv-o-matic ID [2],查询预订数据找到最新预订详情。
- 知道最新预订详情,用这些详情更新一个 flow 变量。
- 用该变量创建一条入住 Guest Event 记录。
听起来步骤很多,但有个好消息:Team Trailhead 已经创建了 flow 的大部分内容,剩余部分只涉及那些在你创建了数据流并设置身份解析之后才存在的对象。所以,去完成那个 flow 吧!(下面的步骤细节很多,未提及的字段保持原样即可。)
- 打开 App Launcher,搜索并选择 Flows。
- 选择 All Flows 列表视图。
- 点击 Create Check-in Guest Event。
- 点击 Open Flow。
- 点击 Unified Link 1 元素。
- Data Source 选择 Data Cloud Object。
- Data Space 选择 default。
- Object 选择 Unified Link Individual ccid(务必选对对象——有几个名字很相似)。
- 在 Filter Records 部分,Field 选择 Individual Id(这是第一张表中 Source ID 列的实际名称)。
- Value 选择变量 ContactRecordId(这是 Team Trailhead 预先创建的变量,代表 Contact 记录的 Salesforce ID)。
- 点击 Save。
好,flow 已经定位到 Unified Link 表中的第一条记录。现在用那条记录里的 Unified ID 来找 Reserv-o-matic ID。
- 点击 Unified Link 2 元素。
- Data Source 选择 Data Cloud Object。
- Data Space 选择 default。
- Object 选择 Unified Link Individual ccid(实际上与第一个元素是同一个对象)。
- 在 Filter Records 部分,Field 选择 Unified Individual Id(这是第一张表中 Unified ID 列的实际名称)。
- Value 复制粘贴
{!Unified_Link_1.UnifiedRecordId__c}(这是指向第一次查询所得 Unified ID 的指针)。
- 点击 Add Condition。
- Field 选择 Data Source Object。
- Operator 选择 Starts With。
- Value 输入
External。
数据模型对象(DMO)其实叫 ExternalReservation,而不是简化表中的 Reserv-o-matic。通过添加这个额外条件,flow 会忽略 Sofia 的 Salesforce ID,而找到第一张表中的 10008155。
- 点击 Save。
现在你知道 Sofia 的 Reserv-o-matic ID,就能找到她最近的预订了。
- 点击 Reservation 1 元素。
- Data Source 选择 Data Cloud Object。
- Data Space 选择 default。
- Object 选择 ExternalReservation。
- 在 Filter Records 部分,Field 选择 Contact ID。
- Value 复制粘贴
{!Unified_Link_2.SourceRecordId__c}(指向前一次查询的指针)。 - Sort Order 选择 Descending。
- Sort By 选择 Check_in_Date_c__c。
- 点击 Save。
这样排序会把最近的预订放在结果顶部,供 flow 后续使用。最后一块拼图,是用预订详情设置一个变量(EventSummary)的值,最终放入新的 Guest Event 记录。
- 点击 Event Summary 元素。
- Value 复制粘贴:
Check-in date of {!Reservation_1.Check_in_Date_c__c}, check-out date of {!Reservation_1.Check_out_Date_c__c}, for room type {!Reservation_1.Room_type_c__c}。 - 点击 Value 框外部让 Save 按钮可用,然后点击 Save。
- 点击 Activate。
- 关闭 Flow 标签页。
创建 Agentforce 动作并测试(Create Agentforce Action & Test)
还有更多好消息:让 Agentforce 使用一个 flow 非常简单。
- 点击 Setup 图标,然后选择 Setup。
- 在 Setup Quick Find 中搜索并选择 Salesforce Go。
- 在 Search features… 文本框中输入并选择 Agentforce Studio。
- 点击 Get Started。
- 点击 Turn On。
- 点击 Confirm。
现在创建 Agent Action:
- 打开 App Launcher,搜索并选择 Agentforce Studio。
- 点击 Connect Data 360。
- 点击 New Version。
- 在 Subagents 下,把鼠标悬停在 General CRM 上,点击 +。
- 选择 New Action。
- Action Name 输入
Create Check-in Guest Event。 - Description 输入
This action creates a Guest Event record to capture when a contact completes check-in for a reservation. - 点击 Create and Open。
- Reference Action Type 选择 Flow。
- Reference Action 选择 Create Check-in Guest Event。
- Inputs 中的 ContactRecordId,勾选 Require Input to execute action。
- Outputs 中的 EventSummary,勾选 Show in conversation。
- 点击 Save。
- 点击 Commit Version。
- 再次点击 Commit Version。
- 点击 Activate。
- 再次点击 Activate。
就是这样——Agentforce 已经准备好帮助办理入住了。剩下的就是实际试一试。
- 在 Sales 应用中点击 Contacts 标签页。
- 导航到联系人 Sofia Rodriguez。
- 刷新浏览器窗口。
- 点击 Agentforce 图标打开 Agentforce 面板。
- 在 Agentforce 面板输入
Check in Sofia Rodriguez,然后按 Enter/Return。片刻之后,Agentforce 应回复入住已完成,并附带一些入住详情。Guest Event 记录也已经创建。 - 向下滚动找到 Guest Events 相关列表,点击新创建的 GE 记录。
太棒了,入住事件正如预期被记录下来了。关闭 Agentforce 面板。
Becca 计划的第二阶段取得了成功。度假村员工非常喜欢办理入住如此轻松,社交协调员已经在请 Becca 教 Agentforce 为他的活动创建 Guest Event 了。就这样,Becca 对自己的项目相当满意——它把 Data 360 与 Agentforce 结合起来,同时改善了客人与员工的体验。短暂回味项目成功之后,Becca 动身去找社交协调员,开启他们下一段 AI + Data 的冒险。







