跳转到正文
OmniChannels.ai

WhatsApp模板变量:{{1}}与命名参数的区别

讲解WhatsApp模板变量的工作方式:位置参数{{1}}与命名参数、变量可用的位置、示例值、Meta的驳回规则,以及发送请求的完整示例。

更新于 9 分钟阅读

作者: OmniChannels.ai Editorial Team · 审阅: BroadNet Messaging Solutions Team

WhatsApp

简短回答

WhatsApp模板变量是每次发送时填入的占位符,位置格式写作{{1}},命名格式写作{{first_name}}。创建模板时用parameter_format选择格式,默认为位置格式。每个变量都需要示例值供审核。变量可用于正文、文本标题(一个)和URL按钮后缀(一个);以变量开头或结尾的模板会被Meta驳回。

本页内容
  1. 什么是WhatsApp模板变量?
  2. 位置参数和命名参数有什么区别?
  3. 哪些位置允许使用变量?
  4. 如何提供示例值?
  5. Meta对变量规则和驳回是怎么说的?
  6. 如何在API调用中发送参数?
  7. 实例:发货通知模板
  8. 如何用CSV实现模板个性化?
  9. 如何在位置参数和命名参数之间做选择?
  10. 常见错误有哪些?
  11. OmniChannels.ai如何提供帮助

要点速览

  • 位置变量编号为{{1}}、{{2}},必须按顺序填写;命名变量使用带下划线的小写名称,可按任意顺序填写。
  • 创建模板时必须为每个变量提供示例值;Meta在审核时会用到这些示例。
  • 文本标题支持一个变量,正文可以有多个,URL按钮支持一个附加在URL末尾的变量。
  • Meta文档列出的驳回原因包括:变量格式错误或不连续、模板以变量开头或结尾、相对文本长度变量过多,以及含有#、$或%等特殊字符。
  • 用CSV实现个性化,意味着每位收件人一行,并为每个变量提供干净的值。

本指南面向创建个性化WhatsApp模板的开发者和营销人员。内容说明两种变量格式、变量可以放在哪里、Meta关于审核的说法,以及如何通过API或电子表格发送这些值。

什么是WhatsApp模板变量?

变量是模板文本中的占位符,发送时用真实的值替换。Meta称之为参数(parameters),WhatsApp Manager称之为变量(variables)。模板文本和示例值只审核一次;真实的值则在每条消息发送时提供。

例如,模板正文为Hi {{1}}! Your order number is {{2}}. Thank you.,您向一位客户发送Hi Layla! Your order number is OM-4821. Thank you.,向下一位客户则发送另一组值。

Meta不会翻译模板文本或变量值。您需要为模板的每个语言版本提供对应语言的内容。

位置参数和命名参数有什么区别?

创建模板时通过parameter_format字段选择格式。如果省略,Meta使用positional。

位置参数 命名参数
占位符 {{1}}、{{2}} {{first_name}}、{{order_number}}
命名规则 从1开始按顺序编号 唯一,由小写字母和下划线组成
发送时的值 必须按占位符顺序 可按任意顺序
示例值 body_text数组 带param_name的body_text_named_params
最适合 只有一两个变量的短模板 变量较多、需要他人维护的模板

命名参数在模板库中更易读,顺序弄反也不会悄悄把订单号放到姓名的位置。位置模板写起来更短,并且仍是默认格式。

哪些位置允许使用变量?

Meta的组件文档列出了以下位置:

组件 变量
文本标题 一个参数
正文 多个参数
URL按钮 一个变量,附加在URL末尾
媒体标题(图片、视频、文档) 无;创建时提供示例素材,发送时提供素材
页脚、快速回复和电话号码按钮 未被列为支持变量

文档记载的长度限制:文本标题最多60个字符,正文最多1,024个,页脚最多60个,按钮标签最多25个,按钮URL最多2,000个字符。如果URL按钮的值含有特殊字符,Meta要求进行百分号编码。

如何提供示例值?

Meta的规则是:如果模板使用变量,创建时必须提供示例值,每个参数一个。带变量的标题也需要一个example。

带示例的位置式正文:

{
  "type": "BODY",
  "text": "Hi {{1}}! Your order {{2}} ships on {{3}}.",
  "example": { "body_text": [["Layla", "OM-4821", "12 November"]] }
}

带示例的命名式正文:

{
  "type": "BODY",
  "text": "Hi {{first_name}}! Your order {{order_number}} ships on {{ship_date}}.",
  "example": {
    "body_text_named_params": [
      { "param_name": "first_name", "example": "Layla" },
      { "param_name": "order_number", "example": "OM-4821" },
      { "param_name": "ship_date", "example": "12 November" }
    ]
  }
}

第二种形式要求模板本身设置"parameter_format": "named"。请使用真实可信的示例,让审核人员能看到真实消息的内容。

Meta对变量规则和驳回是怎么说的?

Meta的模板审核指南列出了以下与变量相关的驳回原因:

  • 变量缺失,或花括号不匹配。正确的位置格式是{{1}}。
  • 变量不连续,例如{{1}}、{{2}}、{{5}}、{{4}}。
  • 模板以变量开头或结尾。Meta称之为悬空参数(dangling parameters)。
  • 相对消息长度,模板的变量过多。Meta没有给出比例,所以请在每个变量周围加入固定文字。
  • 变量含有#、$或%等特殊字符。

我们没有找到关于两个变量紧挨着放置的官方说法,因此不给出相关规则。请用文字把它们隔开,这样读起来也更顺畅。

关于类别规则以及导致驳回的其他原因,请参阅WhatsApp模板类别与审批。现成的措辞可参阅WhatsApp消息模板示例。

如何在API调用中发送参数?

您发送模板名称、语言,以及带有这些值的components数组。位置模板的结构如下:

{
  "messaging_product": "whatsapp",
  "to": "971500000000",
  "type": "template",
  "template": {
    "name": "order_shipped",
    "language": { "code": "en" },
    "components": [
      { "type": "body", "parameters": [
        { "type": "text", "text": "Layla" },
        { "type": "text", "text": "OM-4821" },
        { "type": "text", "text": "12 November" }
      ] }
    ]
  }
}

对于命名模板,每一项还要带上parameter_name,它必须与占位符一致:

{ "type": "text", "parameter_name": "order_number", "text": "OM-4821" }

标题媒体参数如何工作?

媒体标题没有文本变量。创建时,标题中放的是通过Meta上传流程获得的示例素材句柄,该示例会随模板一起审核。发送时您传入素材,例如按媒体ID传入图片:

{ "type": "header", "parameters": [ { "type": "image", "image": { "id": "1558081531584829" } } ] }

上面的ID是Meta文档中的示例,不是真实素材。

通过OmniChannels.ai API如何实现?

我们的sendbulk端点按WhatsApp API文档以表单字段接收模板:

模板功能 字段
正文变量 bodyTemplateVariables
命名参数 bodyTemplateVariables={"parameter_name":"order_id","text":"ORD-12345"}
标题文本变量 headerTemplateVariables
标题图片、视频或文档 mediaUrl(覆盖标题媒体)
动态URL按钮 buttonsTemplateVariable

实例:发货通知模板

“Souq Rafiq”(虚构)是一家阿联酋零售商,想发送一条带商品图片和物流跟踪按钮的发货通知。

  1. 撰写模板,使其既不以变量开头也不以变量结尾:“Hi {{1}}, your order {{2}} has shipped and should arrive on {{3}}. Tap the button to follow it.”
  2. 添加标题为图片,页脚为纯文本,再添加URL按钮https://shop.example/track/{{1}},示例值如OM-4821。
  3. 提交时为每个变量提供真实可信的示例,然后等待审批状态。
  4. 发送时提供三个正文值、物流跟踪后缀,以及(如果要覆盖的话)标题图片。
curl -X POST https://api.broadnet.me/whatsapp/message/sendbulk \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -F batchId=0 \
  -F campaignName=order-shipped \
  -F destinationNo=971500000000 \
  -F messageType=TEMPLATE \
  -F templateName=order_shipped \
  -F templateLanguage=en \
  -F bodyTemplateVariables=Layla \
  -F buttonsTemplateVariable=OM-4821

此代码片段展示的是单个值的字段名。如果每位收件人有多个正文变量,请使用个性化上传,而不是重复执行该命令。首次活动前,请与我们的团队确认编码方式。

如何用CSV实现模板个性化?

每位收件人一行,每个变量一列,然后在个性化发送中上传。

  1. 在第一列填写收件人的国际格式号码。请参阅E.164电话号码格式。
  2. 每个变量增加一列,并在首次活动前与我们的团队确认列布局。
  3. 先清理数据:去掉空格、统一大小写、使用同一种日期格式、删除空值,因为空变量会导致消息错乱或发送失败。
  4. 预览多行数据,并先发给您自己的号码。

数据清理的步骤见用Excel或CSV群发短信;这些方法同样适用于WhatsApp。

如何在位置参数和命名参数之间做选择?

根据有多少人会改动模板、模板有多少变量来选择。

  1. 一两个变量、由一人负责:位置参数即可,也是默认格式。
  2. 三个或更多变量,或多个团队编辑模板:使用命名参数,让每个占位符自带说明。
  3. 同样的文案有多个语言版本:各版本保持相同的名称或编号,这样一套发送流程就能填充所有语言。
  4. 始终记录哪一列来源数据对应哪个变量,这样以后修改模板时数据不会错位。

提交之前,带着示例值把成品消息朗读一遍。如果听起来不自然,审核人员和客户也会这样觉得。

常见错误有哪些?

  • 以变量开头或结尾, Meta将其列为驳回原因。
  • 跳号,或在位置模板中乱序重复使用同一编号。
  • 占位式示例,例如“test”,对审核人员没有任何信息量。
  • 变量中含有特殊字符,如#、$或%。
  • 位置模板发送时顺序错误,会把正确的数据放到错误的位置。
  • 命名模板中parameter_name不匹配。
  • 用变量掩盖消息的真实用途。 类别与内容不符的模板可能被驳回或被重新归类;请参阅类别指南。
  • 局限: 本指南反映的是撰写时Meta文档的说明。审核决定权在Meta,规则也会变化,请查阅所附页面。

OmniChannels.ai如何提供帮助

BroadNet是Meta官方的商业解决方案提供商(Business Solution Provider)。在OmniChannels.ai中,您可以创建带变量、媒体和按钮的WhatsApp模板,预览并跟踪审批状态,然后通过API,或在活动中上传Excel或CSV,以个性化的值发送。系统包含重复号码过滤和送达报告。请参阅WhatsApp Business API页面和活动平台。

常见问题

位置参数和命名参数有什么区别?

位置模板使用{{1}}这样的编号占位符,发送时的值必须按相同顺序提供。命名模板使用带下划线的小写名称,如{{order_number}},发送请求中的值可以按任意顺序出现。如果创建模板时没有设置parameter_format,Meta会使用位置格式。

WhatsApp模板中哪些位置可以使用变量?

Meta的文档列出:正文可接受多个参数,文本标题支持一个参数,URL按钮支持一个附加在URL末尾的变量。媒体标题携带的是素材而不是变量。页脚、快速回复按钮和电话号码按钮未被列为支持变量。

为什么我的模板因变量被驳回?

Meta的审核指南列出了几类与变量有关的原因:花括号缺失或不匹配、变量不连续、消息以变量开头或结尾、相对消息长度变量过多,以及含有#、$或%等特殊字符。请修改文本,补充真实可信的示例,然后重新提交。

我需要示例值吗?

需要。Meta称,如果模板使用变量,创建时必须提供示例值,每个参数一个。请使用真实可信的值,而不是test之类的占位文字,让审核人员能看到最终消息的样子。示例只用于审核;真实的值在发送时提供。

变量里可以包含换行或链接吗?

本指南只涵盖我们在Meta文档中核实过的内容,我们查阅的页面没有说明变量值内换行的规则。请向您自己的号码实际发送一次来测试;如果打算传入较长或带格式的值,请咨询我们的团队。URL按钮的值会附加在按钮URL的末尾。

如何用电子表格实现模板个性化?

每位收件人一行,每个变量一列,并保证值干净:姓名没有多余空格,日期格式统一,号码使用国际格式。发送个性化活动时上传文件并检查预览。首次活动之前,请与我们的团队确认具体的列布局。

资料来源

  1. Template fundamentals — WhatsApp Business Platform, Meta for Developers
  2. Template components — WhatsApp Business Platform, Meta for Developers
  3. Template review — WhatsApp Business Platform, Meta for Developers