跳转到主要内容

概述

OneSignal 提供多种方式来大规模个性化消息内容。本指南重点介绍在 OneSignal 控制面板中使用动态内容与 CSV 上传功能,适用于推送、邮件和短信。 主要优势:
  • 使用 CSV 大规模个性化 – 一条消息,为每个人提供定制体验
  • 多语言支持 – 根据用户自动切换语言
  • 动态分段 – 内容根据用户属性(语言、地区、营销活动 ID)进行调整
  • 团队协作 – 非技术用户在 CSV 文件中编辑内容
  • 跨渠道兼容性 – 跨渠道重用 CSV 逻辑
常见用例:
  • 多语言引导或营销
  • 特定地区的促销活动
  • 按位置发布活动通知
  • 基于营销活动的个性化

使用 CSV 的动态内容设置步骤

快速参考:
  1. 创建包含内容变化的 CSV 文件。
  2. 使用 Liquid 语法中的 dynamic_content 属性将 CSV 数据映射到消息。
  3. 从 OneSignal 控制面板创建新消息或模板
  4. 选择动态内容个性化按钮。
  5. 上传 CSV 文件并发送消息。

CSV 要求和设置

  • 文件大小: 小于 200 KB
  • 列标题:
    • 为标签键保留第一列标题,或留空以引用部分
    • 仅限字母数字字符和下划线
    • 使用下划线(_)代替空格
  • 编码: UTF-8
从空白 CSV 开始或使用提供的模板。在消息和模板编辑器中选择动态内容个性化按钮时会提供模板。
可用模板:
  • 多语言 – 按语言本地化内容
  • 内容个性化 – 按数据标签自定义内容

CSV 示例

本指南将使用以下示例 CSV 数据。
  • 将列标题映射到您的支持的语言代码
  • 为每种语言代码在每行中添加您的翻译。
  • 如果您有多个部分(如在邮件中),请将第一列指定为部分名称。
在此示例中:
  • 我们有 3 种语言:英语、西班牙语和法语。
  • 我们有 2 个部分:“section_1” 和 “section_2”。

将 CSV 数据映射到消息内容

使用 Liquid 语法,在消息中使用 dynamic_content 属性引用 CSV 数据:
{{dynamic_content.file_name.message_component[user_property]}}

{{dynamic_content.file_name[user_property].message_component}}
参数:
  • dynamic_content – 用于引用 CSV 数据的属性名称
  • file_name – CSV 文件名(不含 .csv 扩展名)
  • message_component – 您想要个性化的特定消息组件。这是 CSV 列标题或第一行中的静态文本。
  • user_property – 您想要引用的用户属性
后备内容: 始终使用硬编码字符串 default 后备内容,以确保如果 CSV 查找或动态内容失败时消息能够呈现。
Liquid 语法用于后备
{{ dynamic_content.my_template.header[user.language] | default: "欢迎查看我们的最新更新" }}
这意味着如果 CSV 查找或动态内容失败,消息将呈现后备文本 "欢迎查看我们的最新更新" 这确保:
  • 可用时使用动态内容
  • 如果动态内容失败,显示硬编码消息
  • 用户永远不会收到空白内容
translations.csv
,en,es,fr
section_1,Hello,Hola,Bonjour
section_2,Thanks for shopping with us...,Gracias por comprar con nosotros...,Merci pour votre achat avec nous...
  • file_nametranslations.csv
  • message_component 位于第一列的行中 section_1section_2
  • user_property 是与语言代码匹配的列标题。我们可以使用 user.language 属性在用户上引用它。
多语言消息的基本 Liquid 语法
{{dynamic_content.translations.section_1[user.language]}}
{{dynamic_content.translations.section_2[user.language]}}
(推荐)带默认后备的多语言消息 Liquid 语法
{% assign supported_langs = "en,es,fr,de" | split: "," %}
{% assign lang = user.language | default: "en" %}

{% unless supported_langs contains lang %}
  {% assign lang = "en" %}
{% endunless %}

{{ dynamic_content.translations.section_1[lang] | default: "Hello" }}
{{ dynamic_content.translations.section_2[lang] | default: "Thanks for shopping with us..." }}
使用带有 default 后备的 Liquid 来更新主题行、预标题、按钮 标签和 URL。

使用注意事项

如何测试使用 CSV 的动态内容?

我们建议使用邮件来测试消息的多个变体。
  • 您可以在邮件中使用 + 地址来测试多个变体:username+test@example.com
  • 按照上述多语言和内容个性化示例设置标签。
  • 有关上传多个用户和数据标签的更多信息,请参阅导入

何时使用动态内容与 CSV vs. 其他个性化选项

  • 如果您从控制面板发送消息并可以使用 CSV 文件访问用户数据,请使用使用 CSV 的动态内容
  • 有关向消息添加动态内容的其他选项,请参阅**消息个性化**或多语言消息选项。

更新模板

通过控制面板重新上传 CSV 或使用更新模板 API dynamic_content 属性。

键中的特殊字符

哈希记法(用于非字母数字键):
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
点记法(用于标准键):
{{ dynamic_content.file_name.the_row.the_column }}

相关文章