# 流程中的商店订单

连接 Shopify 商店后，类型为 **Store orders** 的流程步骤就能处理客户自己的订单：查询订单状态或包裹物流、列出最近订单、根据流程收集的内容创建订单，或取消客户指定的订单。本页说明如何添加该步骤、每个选项需要什么，以及你的团队随后会看到什么。

## 添加商店步骤

1. 在流程设计器中打开一个消息步骤。提问步骤可以查询订单，但只有消息步骤才能创建或取消订单。
2. 在 **Tool** 下，把 **Tool type** 设为 **Store orders**。该步骤会绑定到你已连接的商店。
3. 在 **What this step does** 下选择动作，然后映射该步骤要读取的变量。留空的字段会回退到联系人自己的电话号码和邮箱。

![商店步骤的 Tool 区域：工具类型、动作、变量和失败选项](../../.gitbook/assets/guides/store-step-tool-section.jpg){ width="618" }

| 选项 | 该步骤做什么 |
| --- | --- |
| **Look up an order's status** | 客户指定订单的付款和履约状态，未指定时为其最近一笔订单 |
| **Look up parcel tracking** | 该订单的快递公司、运单号和链接 |
| **Find the customer's recent orders** | 客户最近的五笔订单 |
| **Create an order in the store** | 根据流程收集的商品创建一笔待付款订单 |
| **Cancel an order** | 在尚未发货时取消客户指定的订单 |

按订单号查询只会回答客户自己的订单：用他们聊天所用电话号码下的订单，或流程先前收集的电话或邮箱下的订单。他人的订单号会被回答为未找到。在没有电话号码的渠道（例如网页聊天）上，请在该步骤之前先收集客户的电话或邮箱。

## 查询订单

1. 添加一个提问步骤，把客户的回答保存到变量 `order_number`，或把 **Order number variable** 映射到你使用的变量。没有订单号时，该步骤使用客户最近的一笔订单。
2. 添加一个消息步骤，选择 **Look up an order's status** 或 **Look up parcel tracking**。按你希望呈现详情的方式写消息，该步骤会填入真实数值。
3. 后续步骤可以使用 `{order_number}`、`{order_status}`、`{payment_status}`、`{fulfillment_status}`、`{order_total}`、`{order_items}`、`{tracking_number}`、`{tracking_url}`、`{tracking_company}` 和 `{delivery_status}`。

`{order_status}` 是条件步骤可以分支的一个词：`pending`、`paid`、`shipped`、`in_transit`、`out_for_delivery`、`delivered` 或 `cancelled`；没有匹配订单时为 `not_found`。

## 在聊天中创建订单

1. 把客户想要的商品收集到一个变量里，每行一个商品，例如 `1x Corn Flour 500g`。在行尾加上 `@ 12.50` 可为该行单独定价；其他行保持商店价格。
2. 收集客户的电话号码，以及订单需要的其他信息：姓名、送货地址和付款凭证。客户随付款凭证发来的截图会在你的商店应用可写入文件时作为收据附到订单上；其链接始终写入订单备注。
3. 把 **Create an order in the store** 放在确认订单的那条消息上，并映射 **Items variable** 和其他字段。

![Create an order 选项及其变量](../../.gitbook/assets/guides/store-step-create-order.jpg){ width="618" }

订单以待付款状态创建，不会扣款：由你在商店中确认付款。同一对话中以相同价格重复相同商品不会创建第二笔订单。与商店产品不匹配的商品会使订单停止创建，团队会被告知是哪一行。

## 取消订单

把取消流程搭成四个步骤：

1. 一个提问步骤，把订单号保存到 `order_number`。
2. 一个选择 **Look up an order's status** 的消息步骤，让客户看到即将取消的订单。
3. 一个条件步骤，询问"要取消这笔订单吗？"，带一个"是"分支和一个"否"分支。
4. 在"是"分支上放一个选择 **Cancel an order** 的消息步骤。它的消息就是完成后客户读到的内容，例如"好的，订单 {order_number} 已取消。"

![Cancel an order 选项](../../.gitbook/assets/guides/store-step-cancel-action.jpg){ width="303" }

只有当订单属于客户本人、尚未发货且未被取消时，该步骤才会取消订单。取消请求发送到 Shopify 时不退款、不回补库存、不由 Shopify 发邮件；款项和库存由你的团队处理。商店已经取消的订单会被报告为已取消，不会再次取消。

## 如果订单无法创建或取消

每个创建或取消订单的商店步骤都有 **If the order can't be created or cancelled** 选项。

![商店步骤的失败选项](../../.gitbook/assets/guides/store-step-on-failure.jpg){ width="303" }

* **Hand off to a human**（默认）：机器人说明它无法完成，并把对话转交给你的团队，团队在回复下方看到原因。该步骤自己的消息不会发送。这涵盖商品不匹配、订单未找到或属于他人、订单已发货，以及商店拒绝或无法连接的情况。
* **Reply honestly and continue**：该步骤的消息按原样发送，流程继续，之后请按 `{order_status}` 分支。创建之后它为 `created`、`exists`、`unresolved_items`、`invalid_phone` 或 `error`；取消之后它为 `cancelled`、`not_found`、`not_cancellable` 或 `error`。

有一种情况从不转交：创建步骤上商店会拒绝的电话号码，会让机器人再次向客户询问号码。

## 你的团队会看到什么

* 流程每创建或取消一笔订单，以及每次失败的尝试，对话上都会有一条带原因的私密备注。取消备注会写明订单、付款状态，并提醒团队检查是否需要退款。
* 在回复下方，页脚标签显示 **order created**、**order not created**、**order cancelled** 或 **order not cancelled**。点开可看到完整的一行。

![取消后的对话页脚](../../.gitbook/assets/guides/store-step-footer-cancelled.jpg){ width="548" }

## 在 Playground 中测试

Playground 中的测试运行和脚本测试从不创建或取消真实订单。该步骤会像已完成一样作答，并在回复下方显示"(test run: nothing was changed in the store)"，且不会发布备注。没有收集到电话或邮箱时，Playground 把你商店中的任何订单都视为测试者的订单；已发货的订单会像商店那样被拒绝，因此转交路径也能测试。

![被拒绝的取消的页脚](../../.gitbook/assets/guides/store-step-footer-not-cancelled.jpg){ width="654" }

## 相关

* [连接 Shopify](/settings/connecting-shopify)
* [搭建对话流程](/flow-agents/building-the-conversation-flow)
* [产品目录与推荐](/flow-agents/product-catalogue-and-recommendations)

---
Source: https://help.mampuai.com/zh/flow-agents/store-orders-in-a-flow
