# 搭建对话流程

设计器提供两种并行的搭建方式：在左侧用**简单的语言描述你想要的内容**——例如"询问姓名、邮箱和公司。如果邮箱是 gmail，礼貌地拒绝。否则转给销售。"——AI 会为你更新流程；或者在右侧直接编辑**画布**，逐个模块地调整。

![Flow 设计器](../../.gitbook/assets/guides/flow-designer-canvas.jpg)

设计器现在以聊天的形式打开，它会问几个问题，然后为你搭建流程：详见[通过聊天设计你的智能体](/flow-agents/designing-your-agent-by-chatting)。上图是经典视图；在设计器中点击 **Switch to classic view** 即可使用。

## 观看教程

{% embed url="https://youtu.be/AY3gBpCeINw" %}

## 构建模块

* **发送消息** — 发送内容，如有需要可附带附件（图片最大 5 MB；参见[图片和文件大小限制](/settings/file-size-limits)）。
* **收集** — 提出问题并获取答案（姓名、邮箱、预算……）供后续步骤使用。
* **条件** — 根据客户所说的内容对对话进行分支。
* **知识查询** — 从你的**知识库**中获取答案。
* **工具步骤** — 使用实时数据：从**日历**中提供真实的空闲时段并预订所选时段，或从你的产品目录中推荐真实商品。
* **AI 任务** — 静默计算某项内容（例如分期付款估算），并将结果保存供后续模块使用。
* **结束** — 结束对话，或转交给人工客服。

之前收集的值可以在任何地方通过占位符（如 `{name}` 或 `{email}`）重复使用。

画布上的每个按钮和步骤面板里的每个字段，请参阅[流程设计器参考](/flow-agents/designer-reference)。

## 利用你已掌握的客户信息

联系人记录同样可以在流程中使用。在任何可以输入占位符的地方，`{contact.name}`、`{contact.phone}` 和 `{contact.email}` 会填入客户已保存的资料；`{contact.<field>}` 适用于你定义的任何自定义联系人属性，例如 `{contact.full_address}`。记录中没有值的字段会在消息中留空。

**条件**模块也可以检查联系人记录。用简单的语言描述检查并写出字段名：*"If {contact.phone} is present, route to has_phone; otherwise route to no_phone."* 智能体会判断该字段是否已填写并走对应的分支，因此你已经有号码的客户不会被再次询问，而没有号码的客户仍会被询问。在条件模块中，空字段显示为 "(not set)"。没有提到联系人字段的条件与之前完全一样。

要在 Playground 中试用这一功能，请设置一个包含你想测试的联系人资料的 **Scenario**——占位符和条件就会像在真实对话中一样使用这些资料（参见[测试并连接智能体](/flow-agents/testing-and-connecting-an-agent)）。

## 只向合适的客户展示某条路线

条件块可以决定向谁提供每个分支，以及谁可以直接进入该分支。点击分支上的筛选图标，按 **Add condition**，然后选择要应用的条件：

* **Meta ad IDs** —— 只有通过所列 Click-to-Message 广告进入的客户才会被提供这条路线。
* **Customer labels** —— 只有当对话或联系人带有所选标签中的至少一个时，才会提供这条路线。
* **Message keywords** —— 当客户的最新消息包含你列出的任一词语或短语时，对话会直接进入这条路线并跳过提问。匹配不区分大小写，关键词可以出现在消息的任何位置——"Is the PROMO still on?" 就能匹配关键词 *promo*。

条件可以自由组合。广告 ID 和标签都必须匹配，客户才能看到该路线；再加上关键词后，客户还必须提到其中一个，才会被直接送入该路线。在广告 ID 或标签条件下勾选 **Must go here on match**，可完全跳过提问，让每位匹配的客户直接进入该分支。将鼠标悬停在每个条件旁的信息图标上，可查看其工作方式的提示。

![条件分支上的路线规则](../../.gitbook/assets/guides/condition-branch-route-rule.jpg)

* 没有条件的分支对所有客户可见——请至少保留一个开放分支作为日常路径。
* 带有规则的分支会在画布上显示一个小徽章：受限路线显示筛选图标，匹配客户可跳过提问的路线显示快进箭头。
* 已经进入某条路线的客户总能走完它，即使规则在对话中途发生了变化。
* Playground 会展示完整流程，并且只应用关键词条件，方便你在搭建时测试每条路线——输入一个关键词，就能看到它的快捷路线触发。要以特定客户身份试用广告和标签条件，请在 Playground 中设置 **Scenario**——参见[测试并连接智能体](/flow-agents/testing-and-connecting-an-agent)。

## 关闭某个步骤，或只在一段时间内运行它

只有一个下一步的 **Send message**、**Collect**、**Knowledge query** 或 **AI task** 步骤，可以在不删除的情况下关闭，也可以设置为只在两个日期之间运行。点击该步骤，在其面板顶部找到 **Run this step**。

![带有 From 和 Until 时段的 Run this step](../../.gitbook/assets/guides/flow-step-run-period.jpg)

* 关闭 **Run this step** 会跳过该步骤：客户从上一步直接进入下一步，就像这一步不存在一样。步骤里的所有内容都会保留，之后可以随时重新打开。
* **Only run between** 接受 **From** 和 **Until** 两个日期时间。一侧留空表示不设限制。在 **From** 之前或 **Until** 之后，该步骤同样会被跳过。时间按字段下方标明的公司时钟计算：收件箱开启了营业时间时用它的时区，否则用你账户的时区。
* Off 优先。开关关闭时，时段不会生效，直到你把步骤重新打开。字段下方的那句话会说明这个步骤现在的状态。
* **Start**、**End**、条件步骤、AI 对话步骤和重复列表步骤不能关闭，因为它们决定流程接下来走向哪里。没有连接到恰好一个下一步的步骤也不能关闭。要暂时拿掉整条分支，请关闭分支里的各个步骤。

![带有 Off 标记的灰色步骤卡片](../../.gitbook/assets/guides/flow-step-off-badge.jpg)

* 在画布上，当前不运行的步骤会显示为灰色并带有标记：**Off**、**Starts …** 或 **Ended …**。在时段内运行的步骤会显示 **Until …**，有截止日期的促销一眼就能看出来。
* 步骤被关闭时已经停在该步骤上的客户会把这一步走完；不会再有新客户进入。被跳过的步骤不会启动它的跟进提醒。
* 在 Playground 中，测试经过该步骤时会出现一行系统提示 **Skipped this turn: …**，写明步骤名称和原因，这样缺少的消息不会被误认为流程出错。要在时段开始前试一试，请在 **Scenario** 中设置一个假定时间（见[测试并连接智能体](/flow-agents/testing-and-connecting-an-agent)）。

![Playground 标注了它跳过的步骤](../../.gitbook/assets/guides/flow-step-skipped-playground.jpg)

* AI 设计器替你编辑流程时不会改动这个开关和时段。根据新描述完整重建时，所有步骤都会处于打开状态。

## 让客户点按回答

当问题只有少数几个可选答案时，把答案做成按钮，客户点一下即可，无需打字。选中 **Condition** 或 **Collect** 块，在 **Answer buttons** 下最多添加 13 个答案，每个标签不超过 20 个字符。在 Condition 块上，每个按钮对应一条分支，点按后客户直接进入该分支；在只有一个字段的 Collect 块上，点按即可填入该字段。

![Condition 块上的回答按钮，已勾选 WhatsApp 显示的三个](../../.gitbook/assets/guides/flow-answer-buttons-editor.jpg)

Messenger、Instagram、Telegram、Line 和网页聊天的客户会在问题下方看到全部按钮。WhatsApp 只能显示三个，所以当问题的按钮超过三个时，每个按钮旁会出现一个勾选框：勾选 WhatsApp 应显示的三个——前三个已为你勾好——列表下方的一行会显示已勾选的数量。WhatsApp 客户仍然可以打字回答其余任何选项，所以请把问题写清楚，让他们知道还可以回答什么。其他渠道看到的是同一个问题，答案以编号列表呈现；在所有渠道上打字仍然有效——客户不点按钮而是自己写出答案，智能体也会像以前一样理解。

![Playground 中带回答按钮的问题](../../.gitbook/assets/guides/flow-answer-buttons-playground.jpg)

* **先在 Playground 里试一试**——按钮在那里同样可以点按，你无需打字就能走遍每条路线。Playground 会显示全部按钮，包括 WhatsApp 不会显示的那些。
* **客服也能看到这些选项。** 在会话中，问题会显示提供给客户的答案；当渠道把点按记录在问题本身上时，被选中的那个会高亮显示；在 WhatsApp、Messenger 和 Telegram 上，点按会作为客户的回复出现在下方。
* **标签要简短。** 标签最多 20 个字符，画布上的块会把每个按钮显示为一个小标签，让你一眼看出哪些问题带有按钮。

![会话中显示提供给客户的选项](../../.gitbook/assets/guides/flow-answer-buttons-conversation.jpg)

## 以轮播方式展示图片

带有多张图片的 **Send message** 区块可以把图片以轮播方式展示：顾客左右滑动的一条消息，每张卡片都有标题、简短说明和按钮。在 **After message** 下添加 2 至 10 张图片，然后把 **Show images** 设为 **Carousel**。每张图片会变成一张卡片，包含 **Title**（必填，最多 80 个字符）、**Description**（选填，最多 80 个字符）和最多 3 个 **Buttons**。

![Send message 区块上的卡片栏位和 Show images 选项](../../.gitbook/assets/guides/flow-carousel-editor.jpg)

* **带链接的按钮**会打开该页面，例如产品页面，对话会停在原处。
* **不带链接的按钮**是一个回答：点击后会发送按钮文字和卡片名称，例如"Choose this — Deluxe Room"，让下一步知道顾客选了哪张卡片。
* **Messenger 和 Instagram** 会显示真正的轮播。在 Instagram 上，它出现在应用程序里，而不是 Instagram 网站上。
* **其他渠道**（WhatsApp、网页聊天、Telegram 等）会收到每张图片，后面跟着它的标题和说明；链接会直接写出，如果渠道支持按钮，回答按钮会出现在最后一张卡片下面。
* **顾客会以自己的语言看到卡片文字**，和这一步的其他内容一样。

在画布上，卡片会并排显示，Playground 也会显示同一排卡片，你可以点击回答来测试下一步。

![对话中的轮播以及下方顾客的点击](../../.gitbook/assets/guides/flow-carousel-conversation.jpg)

## 客户不再回复时继续跟进

客户在某个问题上停止回复，并不等于流失。选中 **Collect** 模块，在 **Follow up** 下点击 **+ Add follow-up step**。每一步先等待你在 **Follow up after** 下设定的时间，然后执行你在 **Then** 下选择的动作：发送提醒并继续等待、继续到下一步、转接给真人客服，或走 **No reply** 路线。各步骤依次触发，所以流程可以先提醒一次、再提醒一次，然后才往下走。

![一个问题上的跟进步骤，最后一步走 No reply 路线](../../.gitbook/assets/guides/flow-no-reply-path-panel.jpg)

**No reply** 路线是专为始终没有回答的客户准备的另一条路：换一个优惠、换一个更简单的问题，或干净利落地结束，而不是和其他人一样走同一个下一步。在最后一个跟进步骤选择 **Continue on the No reply path**，并在 **Go to step** 下选择它通向哪里——一个已有的步骤，或者用 **+ New message step**、**+ New question step** 或 **+ New end** 当场写一个新步骤。画布上会有一条琥珀色的 **No reply** 线从问题模块底部引出，连到那个步骤；蓝色的线仍然表示回复了的客户会去哪里。

![No reply 线从画布上的问题模块引出](../../.gitbook/assets/guides/flow-no-reply-path-canvas.jpg)

* **直接在画布上搭建。** 每个问题模块的下方连接点都有一个琥珀色的 **+**。点击它并选择 **New message**、**New question** 或 **End**，就能在 No reply 路线上添加一步。如果这个问题还没有 No reply 步骤，它最后一个“continue”或“hand off”步骤会变成 No reply 步骤，否则会添加一个 1 小时后触发的步骤；等待时间可在面板里修改。消息、问题、AI task 或 knowledge query 模块右侧连接点上的灰色 **+** 以同样的方式添加下一步。
* **或者直接让设计器来做。** 在设计器的聊天里写下你想要的——“如果他们一天后还没回复，就改为提议把价格发到这里”——设计器会替你加上跟进步骤和 No reply 路线。聊天和经典视图都可以这样做。
* **只有没回复的客户才会走这条路。** 回复了的客户，哪怕是在提醒之后才回复，仍然沿着平常的线往下走，剩余的跟进步骤会被取消。
* **提醒可以带消息和文件。** 发送提醒的步骤可以带一条可选消息，以及拖到 **Media** 里的文件；没有消息时该步骤静默触发。转入 No reply 路线的那一步也可以带一条消息，在流程继续时发出。
* **每一步都需要等待时间**，没有等待时间的步骤面板不会保存。“continue”“hand off”或“No reply path”步骤之后的步骤永远不会运行，面板会提示你。
* 跟进不会在智能体 Settings 里的 **Quiet hours for follow-ups** 期间发出。

在 Playground 里用较短的等待时间试一试——跟进在那里会真实运行，你可以看到提醒到达，然后流程沿着这条路线继续。

## 让智能体只回答对的 FAQ

当你的 [AI Knowledge](/flow-agents/managing-ai-knowledge) 条目带上分类后，任何一个块都可以收窄智能体的作答范围。打开该块的 **Actions → FAQ category scope**，选择 **Restrict to selected categories**，再挑选属于这段流程的分类——从这一步起，智能体只回答这些 FAQ 里的问题。勾选 **Include general FAQs** 可以同时允许没有分类的条目。

![流程步骤上的 FAQ 分类范围](../../.gitbook/assets/guides/faq-category-scope.jpg)

* 范围会一直生效，直到另一个块改变它——在对话重新放开的地方，添加一个设为 **Reset to all categories** 的范围动作。
* 带范围的块会在画布上显示琥珀色的 **FAQ** 徽章，每次范围变化都会在对话中（以及测试时的 playground 中）显示为一条备注，你的团队随时都能看到智能体的作答来源。
* 分类只能从条目上已有的分类中挑选——如果某个分类后来从所有条目中移除，流程会要求你先更新范围，才能保存或发布。

## 转接消息

每个流程都有一个默认的**结束**步骤，用于将对话转交给你的团队，并在智能体无法进一步提供帮助时发送一条简短的转接消息（例如"让我为你联系一位团队成员。"）。

默认**结束**步骤上的操作（例如 **Actions** 下的 **Add label**），在智能体未到达结束步骤就把对话转给你的团队时也会运行。添加你的团队用来筛选的标签（例如 *Handoff*），这些对话也会被打上该标签。转接消息仍然只发送一次，客户不会收到两次"让我为你联系"的消息。你自己设计的转接**结束**步骤只运行它们自己的操作。

想让团队在接手时就拿到电话号码或订单编号？在智能体的 **Settings** 中开启 **Try to help before handing off**，并列出 **Details to collect before handing off**——参见[测试并连接智能体](/flow-agents/testing-and-connecting-an-agent)。

想要静默转接？在默认结束步骤上勾选 **Leave handoff message blank (silent handoff)**——消息字段会被清空，当智能体退出时客户不会收到任何自动提示；他们看到的下一条内容就是你团队成员的回复。由于对话在有人回复之前会保持沉默，第一次发布该智能体时，系统会准确展示客户将体验到的内容，并要求你确认。你的姓名和日期会记录在该步骤上，方便团队随时了解是谁批准的。重新输入转接消息会将智能体切换回宣布转接的方式。

![默认结束步骤上的静默转接](../../.gitbook/assets/guides/silent-handoff-end-step.jpg)

晚上已经关门了？任何**结束**步骤都可以在 **Final message** 旁边多带一条消息：**Outside business hours**。当这次聊天到达的收件箱在那一刻处于营业时间之外时，智能体会改为发送这条消息，让下班后来访的客户知道何时能得到回复，而不是听到"让我为你联系一位团队成员"。留空则该步骤始终发送主消息。在画布上，同时带有两条消息的结束步骤会并排显示它们，分别标为 **During hours** 和 **Outside hours**。

![同时带有营业时间内消息和营业时间外消息的结束步骤](../../.gitbook/assets/guides/end-step-canvas-two-messages.jpg)

这里的营业时间就是收件箱自己的营业时间，你无需离开设计器即可设置。该步骤的面板会在 **Business hours of this agent's inboxes** 下列出连接到该智能体的每个收件箱及其时间表和时区：点击 **Set hours** 或 **Edit**，开启 **Business hours on for this inbox**，选择时区和工作日，然后按 **Save hours**。智能体 **Settings** 中的 **Business hours** 下也有同样的列表；由于这就是收件箱真实的营业时间，你在这里的任何更改都会对该收件箱处处生效。当 Flow 智能体接管某个收件箱时，该收件箱自己的不可用消息会保持沉默，因此客户只会收到智能体的下班消息，而不会同时收到两条。要查看下班消息的效果，打开 Playground，点击 **Scenario**，选择该收件箱以及一个营业时间之外的假定时间——参见[测试并连接智能体](/flow-agents/testing-and-connecting-an-agent)。

![显示两条消息以及收件箱营业时间的结束步骤面板](../../.gitbook/assets/guides/end-step-outside-business-hours.jpg)

设计器中的每一次更改都会创建一个**快照**——打开 **History** 标签页即可恢复任意较早的版本。你也可以将画布下载为 PDF，与团队分享该流程。

随时保存你的进度，并使用 [playground](/flow-agents/testing-and-connecting-an-agent) 像客户一样试用该流程。

## 查看客户去了哪里

智能体上线后，设计器可以展示真实客户在流程中的实际走向。管理员会在画布右侧的工具栏看到一个火焰按钮——点击即可开启热力图。每个步骤都会按最近 30 天内到达该步骤的客户会话占比上色：冷门的角落是绿色，最繁忙的路线是红色，并且颜色会从每个步骤向周围的画布扩散，让客户真正走过的路线一眼就能看出来。

![流程画布上的客户到达热力图](../../.gitbook/assets/guides/flow-heatmap-canvas.jpg)

* **每个步骤都标有数量和占比**——`34 · 85%` 表示有 34 个会话到达了这一步，占所有开始对话客户的 85%。将鼠标悬停在数字上，即可看到完整的文字说明。
* **没有任何人到达的步骤会变淡**，方便你发现没用上的路线。
* **汇总和图例位于左下角**——显示最近 30 天的客户会话总数，以及一条从 **Fewer customers** 到 **More customers** 的颜色条。没有会话的步骤显示为灰色的 **None**。
* **只统计真实对话。** Playground 中的测试不会被计入；同一位客户聊了两次会算作两个会话。

用它来找出对话在哪里开始流失。当到达某一步的客户远少于上一步时，最先需要改写的就是那一步的问题或菜单。再次点击火焰按钮即可回到普通画布。想查看客户在流程中给出的回答，请参阅[机器人报表、流程提交与导出](/reports/bot-flow-submissions-and-exporting)。

---
Source: https://help.mampuai.com/zh/flow-agents/building-the-conversation-flow
