WhatsApp模板变量:{{1}}与命名参数的区别
讲解WhatsApp模板变量的工作方式:位置参数{{1}}与命名参数、变量可用的位置、示例值、Meta的驳回规则,以及发送请求的完整示例。
作者: OmniChannels.ai Editorial Team · 审阅: BroadNet Messaging Solutions Team
简短回答
WhatsApp模板变量是每次发送时填入的占位符,位置格式写作{{1}},命名格式写作{{first_name}}。创建模板时用parameter_format选择格式,默认为位置格式。每个变量都需要示例值供审核。变量可用于正文、文本标题(一个)和URL按钮后缀(一个);以变量开头或结尾的模板会被Meta驳回。
本页内容
要点速览
- 位置变量编号为{{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”(虚构)是一家阿联酋零售商,想发送一条带商品图片和物流跟踪按钮的发货通知。
- 撰写模板,使其既不以变量开头也不以变量结尾:“Hi {{1}}, your order {{2}} has shipped and should arrive on {{3}}. Tap the button to follow it.”
- 添加标题为图片,页脚为纯文本,再添加URL按钮
https://shop.example/track/{{1}},示例值如OM-4821。 - 提交时为每个变量提供真实可信的示例,然后等待审批状态。
- 发送时提供三个正文值、物流跟踪后缀,以及(如果要覆盖的话)标题图片。
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实现模板个性化?
每位收件人一行,每个变量一列,然后在个性化发送中上传。
- 在第一列填写收件人的国际格式号码。请参阅E.164电话号码格式。
- 每个变量增加一列,并在首次活动前与我们的团队确认列布局。
- 先清理数据:去掉空格、统一大小写、使用同一种日期格式、删除空值,因为空变量会导致消息错乱或发送失败。
- 预览多行数据,并先发给您自己的号码。
数据清理的步骤见用Excel或CSV群发短信;这些方法同样适用于WhatsApp。
如何在位置参数和命名参数之间做选择?
根据有多少人会改动模板、模板有多少变量来选择。
- 一两个变量、由一人负责:位置参数即可,也是默认格式。
- 三个或更多变量,或多个团队编辑模板:使用命名参数,让每个占位符自带说明。
- 同样的文案有多个语言版本:各版本保持相同的名称或编号,这样一套发送流程就能填充所有语言。
- 始终记录哪一列来源数据对应哪个变量,这样以后修改模板时数据不会错位。
提交之前,带着示例值把成品消息朗读一遍。如果听起来不自然,审核人员和客户也会这样觉得。
常见错误有哪些?
- 以变量开头或结尾, 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的末尾。
如何用电子表格实现模板个性化?
每位收件人一行,每个变量一列,并保证值干净:姓名没有多余空格,日期格式统一,号码使用国际格式。发送个性化活动时上传文件并检查预览。首次活动之前,请与我们的团队确认具体的列布局。
资料来源
继续阅读
更多指南WhatsApp
亚太地区最佳 WhatsApp Business API 服务商怎么选
如何选择覆盖亚太的 WhatsApp Business API 服务商:Meta 计费市场、各国数据法律、DLT 与发件人 ID 规则、模板语言,以及多国上线步骤。
10 分钟阅读
WhatsApp
埃及最佳 WhatsApp Business API 服务商怎么选
如何选择埃及的 WhatsApp Business API 服务商:Business App 与 API 的区别、中立的评估清单、ar_EG 模板、151/2020 号法律的同意要求与货到付款流程。
9 分钟阅读
集成
E.164手机号格式:转换与校验方法
E.164手机号格式详解:格式规则、本地号码转换示例表、WhatsApp与短信API的要求、正则表达式和libphonenumber校验方法。
9 分钟阅读
