跳转到主要内容

个性化如何工作

个性化功能由 Liquid 语法 提供支持,这是一种模板语言,允许您将值注入消息字段。 您可以使用以下方式个性化消息:
  • 数据源:来自您 API 的实时数据。
  • 属性:内置的用户、消息、应用程序或组织值。
  • 数据标签:您自己的按用户保存的键:值字符串。
  • 自定义数据:通过 API 在发送时传递的动态内容。
  • 动态内容:通过仪表板上传的基于 CSV 的个性化。

关键考虑

个性化消息帮助用户与您的应用程序建立更深层的联系,潜在地提高参与度和收入。常见示例是在消息中放入用户姓名或特定信息(如废弃购物车物品),但用例是无穷的。 目标是什么?
  • 添加用户属性,如姓名或 ID
  • 显示发票或 OTP
  • 从 CSV 发送动态内容
数据在哪里?
  • 数据是像属性或标签一样存储在 OneSignal 中吗?
  • 数据是存储在您自己的数据库中吗?
  • 您需要从您的后端向 OneSignal 传递数据吗?
您希望如何发送消息?
  • 您是希望从您的服务器还是通过 OneSignal 仪表板发送消息?
示例:
  • 目标:发送一次性密码帮助用户登录。
  • 数据
    • OTP 存储在您的后端。
    • 用户名在 OneSignal 中作为标签存储。
    • 外部 ID 在 OneSignal 中作为属性存储。
  • 发送
    • 从您的服务器使用我们的 REST API。
    • 从使用 Journey 的自动化工作流。
此示例的详细演示可在验证、魔法链接和 OTP 示例教程中找到。

数据源

数据传输

数据传输是一种在发送时直接从您的 API 将实时数据拉取到消息中的方法。只需将模板连接到您的数据源,我们就会从您的服务器拉取数据并将其注入到消息中。

属性

您可以使用 Liquid 语法 引用的预定义字段。示例:
Hi!
Thanks for subscribing with email {{ subscription.email }}.
Your user ID is {{ subscription.external_id }}.
属性在应用内消息或 Live activities 中不可用
  • 订阅属性
  • 消息属性
  • 模板属性
  • OneSignal 属性
  • subscription.external_id:与订阅相关联的外部 ID。
  • subscription.email:接收消息的电子邮件订阅的电子邮件地址。
  • subscription.phone_number:接收消息的短信订阅的电话号码。
  • subscription.push_token:接收消息的推送订阅的推送令牌。
  • subscription.language:用户的语言代码。
  • subscription.unsubscribe_token:用于标识取消订阅(对于电子邮件订阅)的令牌。

数据标签

数据标签是您可以在每个用户上设置的 key: value 字符串数据。示例:
Hi {{ first_name | default: "friend" }}!
Congrats on reaching level {{ level | default: "1" }}!
如果您为用户 A 设置 first_name: Jonlevel: 5,为用户 B 设置 first_name: Jefflevel: 100,每个人都会在消息中看到他们的姓名和级别。否则,他们会看到默认值。

custom_data (API Only)

使用 custom_data 和我们的创建消息 API直接从您的后端添加个性化。 步骤:
  1. 创建一个模板
  2. 使用格式为 {{ message.custom_data.key }}Liquid 语法
  3. 发送带有 custom_data 对象和 template_id 的 API 请求

Example: Flat JSON

Template
Your invoice for {{message.custom_data.product_name}} is ready.
URL: https://your-domain.com/invoice={{message.custom_data.invoice_id}}
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_email_tokens": ["THE_USER_EMAIL"],
  "custom_data": {
    "invoice_id": "463246732",
    "product_name": "Widget"
  }
}
客户看到:
  • “您的 Widget 发票已准备好。”
  • 最终 URL:https://your-domain.com/invoice=463246732

Example: Array data

Template
Your {{message.custom_data.cart_items[0].item_name}} is waiting for you!
Image: {{message.custom_data.cart_items[0].image_url}}
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_email_tokens": ["THE_USER_EMAIL"],
  "custom_data": {
    "cart_items": [
      {
        "item_name": "sweater",
        "img_url": "https://.../sweater.png"
      },{
        "item_name": "socks",
        "img_url": "https://.../socks.png"
      }
    ]
  }
}
客户看到:
  • “您的毛衣正在等您!”
  • 图像:https://.../sweater.png

Example: Bulk personalization

在一个请求中为许多用户个性化单个消息:
Template
{% assign eid = message.custom_data.users[subscription.external_id] %}
Hi {{ eid.first_name }}, you have {{ eid.points }} points. Your level is {{ eid.level }}.
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_aliases": {
    "external_id": ["user123", "user456"]
  },
  "custom_data": {
    "users": {
      "user123": { "first_name": "John", "points": "150", "level": "Gold" },
      "user456": { "first_name": "Sarah", "points": "200", "level": "Platinum" }
    }
  }
}
客户看到:
  • “嗨 John,您有 150 积分。您的级别是黄金。”
  • “嗨 Sarah,您有 200 积分。您的级别是白金。“

动态内容

使用数据的 CSV,您可以将其上传到 OneSignal 仪表板以基于每个用户数据自定义活动。有关更多详情,请参阅动态内容

受限关键词

以下关键词不能用作标签键: message, notification, subscription, user, template, app, org, dynamic_content, data_feed, journey, custom_data

示例


I