- 用户当前的奖励余额
- 最新订单状态
- 个性化产品推荐
数据源目前仅适用于通过 Journeys 发送的电子邮件消息。
需要其他渠道?填写这份简短调查。
数据源的工作原理
- 创建数据源 – 配置 OneSignal 如何连接到您的 API。
- 将数据源附加到消息模板。
- 使用 Liquid 语法在消息中插入响应字段。
- 在发送时,OneSignal 为每个收件人进行 API 调用,解析响应,并将数据注入到您的消息中。
示例:显示奖励积分
假设您想向每个客户显示他们的奖励余额:创建和使用数据源
1. 设置您的数据源配置
在侧边栏中导航至数据 > 数据源,查看现有数据源列表并创建新的数据源。 每个数据源必须具有:- 名称:描述性名称,如”客户奖励 API”,帮助您区分数据源。建议使用唯一名称,但不是必需的。
- 别名:像
rewards这样的简短标识符,用于 Liquid 语法(例如{{ data_feed.rewards.points }})。必须唯一,小写字母数字字符,不含空格或特殊字符。 - 方法:OneSignal 联系您的 API 所使用的 HTTP 方法。通常为
GET,但也支持POST。 - URL:您的 API 端点。支持 Liquid 语法,使 OneSignal 能够获取特定用户的数据。
external_id(存储在 OneSignal 中)作为 URL 参数:
- 标头:您的 API 所需的键值对(例如身份验证令牌)。支持 Liquid 语法。
- 请求体:可选的 JSON 请求体。支持 Liquid 语法,与 Journey Webhooks 相同。

2. 将数据源附加到您的消息模板
将您的数据源附加到消息模板,让 OneSignal 知道要使用它。- 导航至消息 > 模板
- 在消息部分,选择个性化按钮

- 打开数据源并选择您的数据源

- 保存您的模板
3. 在消息中使用数据
使用 Liquid 语法在消息中的任何地方插入响应数据。继续奖励示例,对于 Sarah(其external_id 为 a1-b2c3)的 API 响应可能如下所示:
- 使用数据源
- 使用
rewards数据源- 请记住:
rewards数据源知道用收件人的external_id调用 API
- 请记住:
- 从响应中,插入
points项的值(193)和status_level项的值(Gold)
要求和限制
您的 API 需要:- 接受单步身份验证,在标头中使用身份验证令牌
- 快速响应。 推荐在 250 毫秒以内(这直接影响发送速度)
- 返回 JSON。 目前不支持其他格式。
- 如果您需要其他格式,请分享您的用例。
- 处理您的发送量。 如果您的 API 速率限制较低,会减慢消息投递速度。
- 返回合理大小的负载。 建议保持响应在 50 KB 以下以获得最佳性能。
- 每个模板一个数据源。 在单次 API 响应中获取您需要的所有数据。
- 每个数据源每条消息一次 API 调用。
- 仅限 Journeys。 尚未适用于其他发送方法。
- 没有链式调用。 一个数据源的负载不能用于调用另一个数据源。
需要每个模板支持多个数据源或其他渠道的支持?分享您的用例以帮助确定这些功能的优先级。
设置您的 API
在创建数据源之前,确保您的 API 能够处理以下要求:身份验证
您的 API 应通过标头接受身份验证:JSON 请求体
如果您需要在请求中包含请求体,您的 API 应接受 JSON。这可能意味着您的标头需要包含Content-Type: application/json。
JSON 响应
您的 API 应返回 JSON 对象。通常这意味着您的标头将包含Accept: application/json。
个性化参数
您通常会在 URL 中传递用户标识符,如下所示:速率限制
考虑您的 API 速率限制。向 10,000 个用户发送意味着快速连续进行 10,000 次 API 调用。确保您的 API 能够处理此数量。错误处理
如果您的 API 返回错误或没有用户数据,消息不会发送给该收件人。确保您的 API 为所有预期用户返回数据。入门清单
在实施数据源之前,请回答以下问题:- 我想在消息中显示什么数据?从包含要从 API 填充的项目的简单大纲开始,有助于整理思路。
- 这些数据是否可以通过单个 API 端点获得?
- 我将如何验证 API 请求?
- 我将使用什么标识符或其他数据项来获取个性化数据?
- 该标识符是否已经存储在 OneSignal 中?如果没有,将如何填充?
- 我的 API 能否处理我将产生的请求量?
- 如果我的 API 没有用户数据会怎样?
示例和高级用例
数据源可以与 Liquid 语法结合使用,或与其他功能创造性地结合使用,以产生更复杂的个性化效果。- 循环迭代:废弃购物车
- 自定义事件属性
- 条件显示:订单状态
- 无个性化的自动化
- 个性化优惠券码
假设您有一个数据源 cart,它返回用户购物车中的商品数组,以及购物车的总金额:如果您想显示购物车中的每个商品以及购物车总额,您可以在 Liquid 中使用 for 循环:这将产生:
如果您使用电子邮件块编辑器,当插入这种复杂的 Liquid 语法时,特别是如果您需要包含图像或链接,最好使用自定义 HTML 块元素以获得最佳结果。
常见问题
我的数据源值未出现在消息中,应检查什么?
按顺序检查以下内容:- 数据源已附加到模板(在个性化 > 数据源下)。
- 您的 Liquid 语法与 JSON 响应结构完全匹配——
{{ data_feed.<alias>.<field> }}。 - 使用相同标识符手动调用 API 端点时返回有效 JSON。
- 收件人在 OneSignal 中存储了所需的标识符(例如
external_id)。
为什么消息发送缓慢?
数据源 API 调用在发送时对每个收件人运行。如果您的 API 响应缓慢或无法处理并发请求,消息投递速度会成比例降低。目标响应时间在 250 毫秒以内,并确保您的基础设施能够处理您的发送量。为什么某些收件人没有收到消息?
如果某个收件人的数据源 API 调用失败——由于 404、超时或数据缺失——OneSignal 将完全跳过该收件人。请检查数据源配置中的错误日志以及您自己的 API 日志中的失败情况。验证这些用户在 OneSignal 中是否具有所需的标识符。我能在一个模板中使用多个数据源吗?
目前不支持。每个模板支持一个数据源。在单次 API 响应中获取您需要的所有数据。如果您需要多个数据源,请分享您的用例。数据源是否适用于推送通知或短信?
否。数据源目前仅适用于通过 Journeys 发送的电子邮件消息。计划支持其他渠道——分享您的用例以帮助确定优先级。如果我的 API 在消息发送时宕机会怎样?
OneSignal 将跳过任何数据源调用失败的收件人。消息不会发送给该收件人,也不会插入任何回退值。请在计划发送期间监控您的 API 正常运行时间和错误率。相关页面
Liquid 语法
OneSignal 消息中 Liquid 模板的完整参考。
Journeys
构建触发数据源电子邮件的自动化消息工作流程。
自定义事件
触发 Journeys 并传递事件属性以用于数据源 URL。
消息个性化
所有个性化方法的概述——标签、Liquid、动态内容和数据源。
