# 使用基于 API 的入口触发客户旅程

API-based Entry 允许您在特定业务事件发生时立即启动客户旅程。要开始营销活动，您必须发送一个特殊的 API 请求。


## 设置

1. 创建一个带有 API-based Entry 的旅程

<video src="/customer-journey-api-based-entry-1.webm" alt="客户旅程构建器界面，展示如何使用 API-based Entry 元素创建新旅程" autoplay loop muted playsinline />

2. 双击 API-based Entry 步骤。入口配置窗口将打开。

3. 每次启动旅程时，您都可以使用内容占位符修改推送和电子邮件内容。每个占位符的值都可以在请求中更改。如果您不需要此选项，可以跳过此步骤。

> 例如，您正在创建一个旅程，以便在新播客节目发布时通知订阅者。使用内容占位符，您可以在每次启动旅程时更改播客标题。

首先，在 API-based Entry 设置窗口中添加占位符名称。您可以使用任何方便您的名称。

<video src="/customer-journey-api-based-entry-2.webm" alt="API-based Entry 配置窗口，展示如何为动态内容添加占位符名称" autoplay loop muted playsinline />

现在，创建一个推送或电子邮件 [Preset](/zh/product/content/presets/)，并插入占位符以替换您想要修改的文本。根据您的需求，占位符必须采用以下格式之一：

* `{placeholder_name|format_modifier|}` – 如果在启动营销活动时未指定占位符值，用户将在其位置看到空白。
* `{placeholder_name|format_modifier}` – 如果未指定占位符值且尚未分配给用户（如果您使用 Tag 作为占位符），则不会发送消息。

<details>

<summary>格式修饰符</summary>

* CapitalizeFirst – 将占位符值中的首字母大写；
* CapitalizeAllFirst – 如果值包含多个单词，则将占位符值中所有单词的首字母大写；
* UPPERCASE – 将所有字母切换为大写；
* lowercase – 将所有字母切换为小写；
* regular – 完全按照请求中指定的方式插入占位符值，不作任何修改。

</details>

<img src="/customer-journey-api-based-entry-3.webp" alt="推送预设编辑器，展示消息内容中带有格式修饰符的占位符语法示例"/>

<Aside type="note">
您也可以使用现有的 Tag 名称代替占位符名称。在这种情况下，您必须按照下文所述，配置用请求中指定的值覆盖此 Tag 值。
</Aside>

在旅程中配置推送或电子邮件步骤时，选择创建的预设并打开 **使用事件属性个性化消息** 选项。选择在启动旅程时要在请求中修改的占位符。选择 **API-based Entry** 作为来源，并选择占位符名称作为动态属性：

<video src="/customer-journey-api-based-entry-4.webm" title="推送或电子邮件步骤配置，展示“使用事件属性个性化消息”选项和 API-based Entry 来源选择" autoplay loop muted playsinline />

点击 **应用** 保存更改。

4. 在入口配置窗口中，复制请求模板以进行修改：

<img src="/customer-journey-api-based-entry-5.webp" alt="API-based Entry 配置窗口，显示带有授权标头格式的 API 请求模板"/>
<Aside>
要通过 API 启动旅程，您必须在 Authorization 标头中包含一个有效的授权令牌。

**必需的标头格式**

 ```http
 Authorization: Api <your_api_token>
 ```
 **示例**

 ```http
 Authorization: Api c8dc6435-xxxxxxxxxxxxxxx
 ```
</Aside>

5. 使用 [分段语言](/zh/developer/api-reference/segmentation-filters-api/segmentation-language/) 将受众筛选器添加到 “filter” 参数中。请注意，您需要提前设置必要的 [Tags](/zh/developer/guides/audience-and-segmentation/tags/)。

例如，如果您想将旅程定位到将 _Socks_ 商品添加到 _Wishlist_ 的用户，则 “filter” 值必须如下所示：

```
    "filter": "A("12345-12345") * "T("Wishlist", EQ, "Socks")"
```

在此示例中，您必须在您的应用中配置一个 _Wishlist_ Tag。

<Aside type="note">
您的应用程序代码将以 `A(\"12345-12345\")` 格式自动添加到 “filter” 参数中。请不要删除或修改它。

另外，请记住，在 JSON 查询中，引号 ("") 和反斜杠 (\\) 应使用反斜杠 (\\) 进行转义。
</Aside>

6. 如果您已设置占位符，请将所需内容指定为其值：

<img src="/customer-journey-api-based-entry-6.webp" alt="API 请求模板，展示在旅程启动时为动态内容配置占位符值"/>

7. 如果启用了 **消息速率限制** 选项，则每秒同时进入旅程的用户数量将受到限制。您可以使用默认值每秒 5000 个用户，或设置其他数字。

<img src="/customer-journey-api-based-entry-7.webp" alt="API-based Entry 配置，显示消息速率限制选项，默认值为每秒 5000 个用户"/>

<Aside type="tip">
我们建议将该值保持在每秒 5000 到 10000 个用户之间。如果该值太低，您的受众进入旅程可能需要更长时间。如果该值太高，处理您数据的服务可能会过载。
</Aside>

8. 如果您计划频繁重启营销活动，并且不希望同一用户多次进入旅程，请设置 [频率上限](/zh/product/customer-journey/journey-settings#frequency-capping)。

> 例如，您创建了一个营销活动，以通知用户特定产品的降价信息。您希望通过发送几个具有不同受众筛选器的请求来重新启动该旅程几次。在这种情况下，您可以添加频率上限，这样就不会向匹配多个筛选器的用户重复发送通知。

9. 如果您希望在某个业务事件发生时启动旅程，请使用 webhook 自动化该请求。一旦事件发生，webhook 应自动发送请求以启动旅程。

如果您不需要自动化，也可以手动发送请求。

<Aside type="note">
* 如果您在发送新请求时更改了分段条件，这不会影响已经进入旅程的用户。
* 如果您在发送新请求时更改了消息内容，所有用户都将收到新版本的消息（包括那些已经进入旅程但尚未收到此消息的用户）。
</Aside>