## 开始之前

如果这是你第一次使用 Mini App，请先阅读 [什么是 Mini App？](/docs/what-is-a-mini-app)。它会说明 Mini App 的作用，以及你的客户在 WhatsApp 中会看到什么。然后回到这里，了解如何编辑 Mini App。

## 编辑器的两侧

- **左侧**是手机的实时预览。它会准确显示你的客户将看到的内容。 

- **右侧**是你构建表单的地方。

<Callout type="note" title="📝 注意">
如果你是从现成模板开始，屏幕、区块和页脚操作已经为你设置好了。通常你只需要根据自己的业务调整问题、标签和选项。
</Callout>

![Mini App 编辑器，左侧显示手机预览，右侧显示屏幕编辑器](https://cdn.easybizcloud.app/knowledge/cfc245fa-ffb6-4bc6-989c-d675d2924dc9.png)

---

## 屏幕

在右侧顶部，你会看到屏幕按顺序排列，就像进度条中的步骤。每个屏幕都是客户在点击继续之前需要填写的一页。

1. 如需更改顺序，抓住屏幕的拖动手柄并向左或向右滑动。
2. 如需重命名屏幕，双击屏幕名称并输入新名称。
3. 如需改用菜单重命名或删除屏幕，点击该屏幕上的 <Badge>⋮</Badge> 图标。
4. 如需添加屏幕，点击这一行末尾的 <Badge>+</Badge>。

![编辑器顶部的横向屏幕条，其中一个屏幕的拖动手柄和 ⋮ 菜单可见](https://cdn.easybizcloud.app/knowledge/982b0f7d-08e3-490f-857d-6a8a2b86b82c.png)

---

## 添加屏幕

点击 <Badge>+</Badge> 后，你会看到六个选项。

| 选择这个 | 它的作用 | 屏幕名称为 |
| --- | --- | --- |
| <Badge>Contact Form</Badge> | 收集客户姓名、电话号码和电子邮件 | Contact |
| <Badge>Address Form</Badge> | 收集地址，并支持邮政编码查询 | Address |
| <Badge>Service Options</Badge> | 让客户选择他们想要的服务，价格来自你的目录 | Service Options |
| <Badge>Pickup Options</Badge> | 让客户选择取件日期和时间段 | Pickup Date & Time |
| <Badge>Delivery Options</Badge> | 让客户选择配送日期和时间段 | Delivery Date & Time |
| <Badge>Blank</Badge> | 一个由你自己构建的空屏幕 | 你输入的任何名称 |

<Callout type="note" title="📝 注意">
此列表中的名称和它创建的屏幕名称并不总是相同。你选择 <Badge>Pickup Options</Badge>，而屏幕标题是 **Pickup Date & Time**。
</Callout>

<Callout type="tip" title="💡 提示">
选择最接近你所需信息的现成屏幕。当五个现成屏幕都不适合你想问的问题时，使用 <Badge>Blank</Badge>。
</Callout>

![“添加屏幕”抽屉，按顺序显示全部六种屏幕类型卡片](https://cdn.easybizcloud.app/knowledge/cdda9d98-c90e-47bd-ab0d-3c3102f404f6.png)

---

## 区块

每个屏幕内都有一个区块列表。一个区块就是客户要回答的一个字段或问题，例如他们的姓名或电话号码。点击任何区块旁边的箭头图标（ <Badge>⌄</Badge> ）即可打开其设置。

![什么是屏幕区块](https://cdn.easybizcloud.app/knowledge/dc5fc0c2-273d-4c80-acfd-dc1f83a39b99.png)

**Input Data Field** 会将区块链接到 EasyBiz 中的某个字段，让系统知道要把答案保存到哪里。例如，客户姓名区块会保存到客户资料中的 Name 字段。你可以在 <Badge>Settings</Badge>、<Badge>Library</Badge> 部分、<Badge>Custom Fields</Badge> 中创建自己的字段。

**Label** 是客户在手机上看到的文字。你可以自由更改它，而不会影响答案保存的位置。

**Required**

| 选择这个 | 会发生什么 |
| --- | --- |
| <Badge>Always Required</Badge> | 客户必须回答后才能继续 |
| <Badge>Not Required</Badge> | 客户可以跳过 |
| <Badge>Conditional</Badge> | 只有在你设置的条件为真时才必填 |

**Visibility**

| 选择这个 | 会发生什么 |
| --- | --- |
| <Badge>Always Visible</Badge> | 每位客户都会看到此区块 |
| <Badge>Conditional</Badge> | 只有在你设置的条件为真时，此区块才会出现，例如仅当客户选择 HDB 或 Condo 时显示单元号 |

<Callout type="note" title="📝 注意">
大多数区块用于收集答案。有些区块只显示信息或提供链接，因此可能不需要 Input Data Field。
</Callout>

<Callout type="tip" title="💡 提示">
如需移除问题，点击该区块旁边的 <Badge>⋮</Badge> 并选择 <Badge>Delete</Badge>。如需移动问题，向上或向下拖动该区块。
</Callout>

### 条件可见性如何工作

选择 <Badge>Conditional</Badge> 时，设置以下三个部分：

- <Badge>When</Badge>-> 选择 EasyBiz 应检查的问题或字段。
- <Badge>Operator</Badge>-> 选择 EasyBiz 应如何检查答案。
- <Badge>Value</Badge>-> 选择让条件成立的答案。

| Operator | 简单含义 |
| --- | --- |
| <Badge>Is</Badge> | 答案必须正好是此值。 |
| <Badge>Is Not</Badge> | 答案必须不是此值。 |
| <Badge>Is Any of</Badge> | 答案可以匹配你选择的任意一个值。 |
| <Badge>Has Any of</Badge> | 对于允许多个答案的问题，至少一个已选答案必须匹配。 |
| <Badge>Has Value</Badge> | 客户已经输入或选择了答案。 |
| <Badge>Is Empty</Badge> | 客户尚未输入或选择答案。 |

EasyBiz 只会显示适用于你所选字段的运算符，因此你可能不会看到此表中的每个选项。

<Callout type="tip" title="💡 示例">
如需仅为适合的住宅显示单元号，请选择 <Badge>When</Badge> Property Type，<Badge>Operator</Badge> Is Any of，然后选择 HDB 和 Condo 作为 <Badge>Value</Badge>。
</Callout>

---

## 页脚操作

每个屏幕底部都有 **Footer Action**。这是客户点击以继续前进的按钮，并决定 EasyBiz 在那一刻执行什么操作。

它有两个设置：

- <Badge>Button Label</Badge> 是客户在按钮上看到的文字，例如 **Continue**、**Book Pickup** 或 **Confirm Reschedule**。
- <Badge>Action Type</Badge> 决定客户点击按钮时 EasyBiz 实际执行什么。

更改 Button Label 只会更改按钮上的文字。它不会更改按钮执行的操作。

<Callout type="tip" title="💡 提示">
使用简短的 Button Label，告诉客户接下来会发生什么。后面还有另一个屏幕时使用 **Continue**，在最后一个屏幕上使用 **Book Pickup** 或 **Create Order** 这类最终操作文字。
</Callout>

### 操作类型

EasyBiz 只会提供适合当前屏幕的 Action Type，因此你不会在每个屏幕上都看到所有选项。

| Action Type | 客户点击后会发生什么 | 何时使用 |
| --- | --- | --- |
| <Badge>Next</Badge> | 移动到下一个屏幕，不保存任何内容 | 只需要让客户继续前进的中间屏幕。 |
| <Badge>Save Customer</Badge> | 创建或更新客户资料，然后继续 | Contact 屏幕。 |
| <Badge>Save Address</Badge> | 将地址保存到该客户，然后继续 | Address 屏幕，在客户详情已保存之后。 |
| <Badge>Schedule Job</Badge> | 在已存在的订单上预约取件或配送，然后关闭表单 | Schedule Delivery 或 Reschedule Mini App 的最后一个屏幕。 |
| <Badge>Create Order</Badge> | 在 EasyBiz 中创建新订单并关闭表单 | New Order Mini App 的最后一个屏幕。 |
| <Badge>Fetch Booking Options</Badge> | 不离开屏幕，重新加载可用日期和时间段 | 这里很少需要使用 — 日期屏幕上已有的 <Badge>Refresh</Badge> 链接会为你完成此操作。 |
| <Badge>Complete Flow</Badge> | 不保存任何内容并关闭表单 | 最后的感谢或信息屏幕。 |
| <Badge>Go Back</Badge> | 将客户送回上一个屏幕 | 当你想给客户额外的返回方式时。 |

<Callout type="note" title="📝 注意">
<Badge>Schedule Job</Badge> 会自行判断要做什么。如果订单已经预约了取件或配送，它会将该预约移动到新的日期。如果还没有预约，它会创建预约。这就是为什么同一个操作同时适用于 Schedule Delivery 和 Reschedule Mini Apps，也就是为什么没有单独的 "Create Job" 选项可找。
</Callout>

### 每个屏幕提供什么

| 屏幕 | 你可以选择的 Action Type |
| --- | --- |
| Contact | Next, Complete Flow, Save Customer |
| Address | Next, Complete Flow, Save Address |
| Service Options | Next, Complete Flow, Create Order |
| Pickup Date & Time | Next, Complete Flow, Fetch Booking Options, Schedule Job, Create Order |
| Delivery Date & Time | Next, Complete Flow, Fetch Booking Options, Schedule Job, Create Order |
| Blank | 每种 Action Type，包括一些大多数店铺从不需要的高级选项 |

<Callout type="important" title="⚠️ 重要">
每个现成模板都已经在每个屏幕上设置了正确的 Footer Action，包括 Schedule Delivery 和 Reschedule 模板上的 <Badge>Schedule Job</Badge>。除非你添加新屏幕或更改屏幕顺序，否则请保持原样。
</Callout>

<Callout type="tip" title="💡 提示">
Service Options 屏幕永远不能作为 Schedule Delivery 或 Reschedule Mini App 的最后一个屏幕，因为它不提供 <Badge>Schedule Job</Badge>。请把它放在日期屏幕之前。
</Callout>

![什么是 Footer Action](https://cdn.easybizcloud.app/knowledge/6bdfe4154e9e6836255f9e271fe947df5cf49350c8db1c37b7b6c59d785cc22d.png)
---

## 发布和测试

1. 点击编辑器右上角的黑色 <Badge>Publish</Badge> 按钮。

![点击编辑器右上角的黑色 Publish 按钮。](https://cdn.easybizcloud.app/knowledge/2ab191ec-6113-4320-bcf2-b8f58eac8408.png)

2. 检查是否选择了正确的 <Badge>WhatsApp Business Account</Badge>，然后再次点击 <Badge>Publish</Badge> 确认。

![会弹出一个确认对话框。](https://cdn.easybizcloud.app/knowledge/e06ef958-8d8e-42fa-bb9c-e73356bb0ffc.png)

3. 你会进入 Live Preview 屏幕，在那里有三个选项。

![你现在会进入 Live Preview 屏幕。](https://cdn.easybizcloud.app/knowledge/36a08d9e-76e1-4f57-8263-f2a3884d3957.png)

| Button | 它的作用 |
| --- | --- |
| <Badge>Send Test</Badge> | 将表单发送到你选择的电话号码，这样你可以像真实客户一样填写 |
| <Badge>Draft</Badge> | 将 Mini App 带回编辑模式 |
| <Badge>Publish</Badge> | 让 Mini App 上线，并准备好发送给客户 |

<Callout type="important" title="⚠️ 重要">

Send Test 只有在 Mini App 已发布后才可使用。草稿无法通过 WhatsApp 发送，所以请先发布，然后给自己发送测试。

</Callout>

---

## 常见问题

**每次做小改动后都需要重新发布吗？**
> 是的。你的编辑会保留在草稿中，直到你发布。在此之前，客户会继续看到上一次发布的版本。

**如果我把 Mini App 放回 Draft，已经收到它的客户会失去它吗？**
> 不会。<Badge>Draft</Badge> 会带你回到编辑模式。客户会继续使用上一次发布的版本，直到你发布新的更改。

**为什么我不能拖动或删除 Service Options 屏幕上的区块？**
> 该区块是屏幕内置的，并由 EasyBiz 管理。你仍然可以重新排序并选择其中显示的各个服务选项。

**我可以更改 Footer Action 的作用吗？**
> 可以，但只能更改为该屏幕类型允许的操作。例如，Contact 屏幕不会提供 Create Order。

**Required 和 Visibility 有什么区别？**
> Visibility 决定客户是否会看到这个问题。Required 决定他们是否可以不回答就继续。隐藏的问题永远不是必填项。

**我创建了自定义字段，但它没有出现在 Input Data Field 列表中。为什么？**
> 自定义字段只会出现在 Blank 屏幕以及接受自定义字段的区块上。Contact、Address、Pickup Options 和 Delivery Options 屏幕仅限使用它们自己的内置字段。

**我在哪里创建用于保存答案的新字段？**
> 前往 <Badge>Settings</Badge>、<Badge>Library</Badge> 部分、<Badge>Custom Fields</Badge>。Custom Fields 过去位于另一个部分下，因此旧笔记可能会指向错误的位置。

**两个 Mini App 可以使用同一个自定义字段吗？**
> 可以。自定义字段只需创建一次，就可以在任意数量的 Mini Apps 和屏幕中使用。

**手机预览会显示真实价格和时间段吗？**
> 预览显示的是布局，不是实时数据。发布后使用 <Badge>Send Test</Badge> 查看真实日期、时间段和价格。


---

## 下一步

现在你已经了解编辑器如何工作，请选择你的模板并按照设置指南操作，从 [设置新订单：取件和配送 Mini App](/docs/setting-up-a-new-order-pickup-and-delivery-mini-app) 开始。