构建火星通信上行链路

通过为火星探测器构建通信上行链路,掌握 Salesforce 的自定义对象、picklist 字段、Record-Triggered Flow 和 Chatter 自动化:让探测器根据消息内容自动发帖到群组。...

📅 2026/10/3 ✍️ ponybai 🏷️ salesforce, flow, automation, headless

学习目标

slide_2

在本项目中,你将:

  • 为火星探测器(Mars rover)创建 Chatter 个人资料。
  • 为通信创建 Chatter 群组。
  • 创建自定义对象、自定义选项卡和一组自定义字段,实现通信。
  • 创建 flow 自动化火星探测器的 Chatter 发帖。
  • 测试你的自动化。

项目背景

slide_3

「我一天需要更多时间!」更多时间是人人都想要、却又无法拥有的东西——真的无法拥有吗?

Trailhead 团队发现:火星上的一天比地球上的一天长大约 40 分钟。你可以用这额外的 40 分钟去赢取宝贵的徽章,于是我们决定率先推动人类定居火星。每位参与的 Trailblazer 每天都能多出 40 分钟——这就是科学!

不过,在你告别朋友、家人和所有地球财产之前,得先想好在哪里定居——毕竟有大量几乎一模一样的荒凉山谷可选。这就轮到探测器上场了!火星上现在有两台活跃的探测器,我们可以借助 Salesforce 连接它们,让它们当我们的房产中介,很快就能帮我们找到最好的锈红色火星土地作为 Trailhead 基地。

为了在 2040 年的目标日期前准备好人类定居点,我们必须立刻动工、全员上阵。在这个动手项目中,你将用 Chatter 和 Flow Builder 与探测器通信。

启动 Trailhead Playground

slide_4

你将在自己的 Trailhead Playground 中完成本项目。登录 Trailhead 后,点击页面底部 Launch,Playground 会在新标签页打开,完成步骤后回到本页点击 Verify step。

更新探测器 Chatter 个人资料

slide_5

探测器用 Chatter 从火星发来快讯,所以先设置探测器的个人资料:

  1. 在新 Trailhead Playground 中点击你的头像,选择你的名字。
  1. 点击 Edit。
  2. 输入:First Name=Mars、Last Name=Rover、Country=Mars。
  1. 点击 Save。
  2. (可选,不测试)更新头像:点击用户资料链接 → 点击头像 → Update Photo 上传图片(JPG/GIF/PNG、小于 16 MB),建议用下面的探测器图片。

创建 Chatter 群组

slide_6

现在为探测器创建一个集中的更新位置:

  1. 点击 App Launcher。
  2. 在 Search apps and items... 输入 Groups,选择 Groups。
  3. 点击 New(若创建时报错,把 org 语言改成英文:Setup > Company Information > Edit > Default Language = English)。
  4. Name 输入 Life on Mars。
  5. Access Type 选 Public。
  6. 点击 Save & Next,再点击 Next。
  7. (可选)接下来两步可添加照片和成员。
  8. 点击 Done。

至此,你已经为与火星建立通信打好了基础。下一步创建简单数据模型,与探测器通信并找到我们在红色星球上的新家。

创建数据模型

slide_7

本单元创建自定义对象 Communication、自定义选项卡和一组自定义字段,用于和探测器通信。

Red Rover, Red Rover, 发消息过来

slide_8

如果你试过和机器人对话(老实说,谁没试过呢?),就知道那全是哔哔啵啵和机器人舞步。但借助 Salesforce,我们可以把那些 0 和 1 翻译成人类语言的一部分——名词、形容词和动词。

我们从建立一个简单的对象模型开始,支持与探测器的通信。

创建自定义对象

slide_9
  1. 点击 setup gear,选择 Setup。
  2. 点击 Home 旁的 Object Manager 选项卡。
  3. 点击 Create,选择 Custom Object。
  4. 更新自定义对象定义:Label=Communication、Plural Label=Communications、Object Name=Communication。
  1. 勾选 Launch New Custom Tab Wizard after saving this custom object。
  2. 其余保持默认,点击 Save。

创建自定义选项卡

slide_10

注意:如果 tab wizard 没有自动启动,在 Quick Find 输入 Tabs 选 Tabs,在 Custom Object Tabs 部分点击 New。

  1. Object 选择 Communication。
  2. 点击 Tab Style 选择任意图标。
  3. 点击 Next、Next、Save。

创建自定义字段

slide_11

现在在 Communication 对象上创建字段。左列点击 Fields & Relationships → New,逐一创建以下 picklist 字段(都勾选 Always require a value in this field in order to save a record):

  • Adjective(Picklist):dry、dusty、freezing、gaseous、cosmic、moist、stinky。
  • Noun(Picklist):banana、alien、astronaut、asteroid、spacecraft、pineapple upside-down cake。
  • Verb(Picklist):red-dirt rolling、shimmy-shammying、whirling、two-stepping、moonwalking、doing the robot (literally)。
  • Proper Noun(Picklist):Cloudy、Astro、Codey、Earnie、Einstein、Blaze、Appy、Ruth、Hootie McOwlface。
  • Number(Picklist):1、2、3。
  • Direction(Picklist):backwards、sideways、north、in endless circles、south、in big figure eights、widdershins。

现在我们就有了一个和探测器对话的简单框架。接下来用自动化让探测器开口说话。

自动化流程

slide_12

本单元用 Record-Triggered Flow 自动化处理探测器发来的消息——创建 Communication 记录时,根据 Number 字段自动发帖到 Chatter 群组。

机器人 Rover 登场

slide_13

探测器替我们在火星上勘察基地位置。用自动化流程让探测器告诉我们它的发现:

  1. 点击 App Launcher。
  2. 在 Search apps and items 输入 auto,选择 Automation。
  3. 在 Flows 面板点击 New。
  4. 在 Frequently Used 下选 Record-Triggered Flow。
  5. Objects 输入 communication,选 Communication (Communication__c)。
  6. 选 A record is created。
  7. Condition Requirements 选 Any Condition Is Met (OR)。
  8. Field 搜索 number 选 Number,Operator=Equals,Value=1。
  9. 点击 Add Condition:Number=Equals、Value=2。
  10. 再 Add Condition:Number=Equals、Value=3。
  1. 点击 Save,Flow Label 和 API Name 都设为 Mars,Save(忽略任何警告)。
  2. 在 flow 画布 Run Immediately 路径点击 +,搜索并选 Decision,Label 设为 Mars Messaging,Outcome Order 确保选 New Outcome。
  1. 第一个 outcome:Label=Message 1、API Name=Message_1、Condition Requirements to Execute Outcome=All Conditions Are Met (AND)、Resource=Triggering Communication__c → Number、Operator=Equals、Value=1。
  2. 点 Outcome Order 旁的加号添加第二个 outcome:Label=Message 2、API Name=Message_2、Number=Equals、Value=2。
  3. 点 Default Outcome,Label 改为 Message 3。

点击 Save。

消息设置

slide_14

现在为每个消息设置 Post to Chatter 动作。先从 Message 1 开始:

  1. 在 Message 1 路径点击 +,搜索 chatter 选 Post to Chatter。
  2. Label=Message from Mars 1、API Name=Message_from_Mars_1。
  3. Message 粘贴以下内容(含 merge fields):
Hey, it's your friendly rover real estate agent here. Today I'm doing some serious {!$Record.Verb__c} over to an area on lower Mount Sharp, heading {!$Record.Direction__c} from my starting location. Since the dune field is an active sand field, it is this Rover's guess that the terrain is {!$Record.Adjective__c} and therefore unsuitable for the Trailblazer basecamp. You know what they say, "Location, location, location." I will make my final stop for the day at the super {!$Record.Adjective__c} bedrock at the base of Mount Sharp. Roger, Rover. Rover out. P.S. Tell {!$Record.Proper_Noun__c} I said hi.
  • Target Name or ID=Life on Mars。
  • Target Type 切换到 Include,文本框输入 Group。

点击 Save。接下来 Message 2(Label=Message from Mars 2、API Name=Message_from_Mars_2,Target 同样为 Life on Mars 群组):

New! Mars fixer on majestic Olympus Mons. Bring your hydrospanner and your imagination and make this home your own. What this charmer lacks in curb appeal it more than makes up for in protecting you from the freezing, never ending dust storms. You'll be happier than a {!$Record.Adjective__c} {!$Record.Noun__c} {!$Record.Verb__c} {!$Record.Direction__c}. Drinking water DIY. Serious buyers only. Contact Listing Agent {!$Record.Proper_Noun__c} for details.

最后是 Message 3(Label=Message from Mars 3、API Name=Message_from_Mars_3):

This planet might be cold, but these deals are hot, hot, hot! Today I was {!$Record.Verb__c} {!$Record.Direction__c} over the hill and found a fabulous new listing for you. It's ideally situated, Schiaparelli Crater-adjacent, with lots of potential. Good natural light and in the best area on Mars. Let's talk soon because {!$Record.Proper_Noun__c} is interested, too. This place is better than a {!$Record.Adjective__c} {!$Record.Noun__c} and is priced to move.

(如果每个 message action 后各有一个 End 元素也没关系,flow 仍能正常工作。想让分支合并到一个 End 元素,可在 Message from Mars 1 后点 + 选 Connect to element,连接到 Message 2 路径的 End,再重复把 Message 3 连到同一 End。)

3、2、1…激活!

slide_15

现在激活 flow:

  1. 点击 Save。
  2. 点击 Activate。
  3. 点击左上角的 Back。

flow 已激活!下一步创建 Communication 记录并查看探测器发的 Chatter 帖子,测试通信链路。

准备火星生活

slide_16

本单元测试通信链路——创建 Communication 记录,查看探测器根据 Number 字段自动发到 Life on Mars 群组的 Chatter 帖子。

彩虹彼岸的 Rover

slide_17

远在火星的探测器已准备好帮我们找基地位置。测试通信链路:

  1. 点击 App Launcher。
  2. 输入 Communication,选择 Communications。
  3. 点击 New。
  4. 任意命名,用你选的值填满所有字段。
  5. 点击 Save & New。
  6. 再创建几条记录,每次务必选择不同的 Number。
  7. 点击 App Launcher,输入 Groups 选 Groups。
  8. 选择 Life on Mars,查看探测器创建的 Chatter 帖子。

你做到了!你建立了与太空的通信,现在能直接从探测器收到火星最佳居住地的最新房源。此外,还有个有趣的玩法:给探测器创建自己的消息,往 picklist 里添加你自己的名词、形容词和动词——整个太阳系的机会都在等着你。红色星球见,Trailblazers!


文章来源:Trailhead - Build a Mars Communication Uplink