跳转到内容

语法与规则

编写指令时放在手边参考的页面,汇总了可用选项、保存被拒绝的情况、限额和进阶示例。

语法说明不填写时
:save存放响应的名称。JSON 用 {{ 名称.字段 }} 读取JSON 存放在 connected 中,文本输出在指令所在位置
:methodget 或 postget
:body以 POST 方式发送的数据。需要与 :method post 一起使用不带数据调用
:content_type发送数据的格式。JSON body 使用 application/json表单格式(application/x-www-form-urlencoded)
:headers以 JSON 对象填写额外的请求头。例如::headers {"X-Store-Id": "123"}
如果不是 JSON 格式,则不会调用,按失败处理。认证用的请求头请使用认证信息登记
只发送默认请求头
:basic_auth以 Basic 方式登记的认证信息名称不带认证调用
:auth_credentials以 Token 方式登记的认证信息名称不带认证调用
:cache_max_age响应复用时间,单位为秒。如果每个收件人的值都相同,可以设置得长一些以减少调用次数默认缓存规则(参考设置响应复用)
:no_cache每次都重新调用。用于像库存这样必须始终是最新的值使用缓存
default:值为空时显示的文案(个性化消息中已有的过滤器)以空白发送
{% abort_message %}不向该收件人发送即使为空也发送
保存被拒绝的情况解决方法
Liquid 语法错误,不支持的过滤器或标签请检查括号是否成对以及过滤器名称
不支持的选项,选项值错误:method 只能使用 get 或 post
:cache_max_age 以秒为单位填写(例如:3600)
暂不支持 :retry(即将支持)
超过每条消息的调用次数标题、内容等所有字段合计最多只能写 3 个。
for 循环中的指令请在循环外调用一次,再循环遍历响应数组(见下方示例 4)
调用地址的域名中包含个性化变量调用地址的域名中不能使用个性化变量
请固定域名,只在路径或查询中使用变量
只使用保存的名称而没有写字段请像 {{ point.amount }} 这样写到字段,而不是 {{ point }}
认证信息问题请确认名称是否已登记,方式(Basic · Token)与选项(:basic_auth · :auth_credentials)是否匹配,允许的域名是否与调用地址完全一致
项目限额
每条消息的调用次数标题、内容等所有字段合计 3 个
· 每个指令计为 1 个。即使因为字段不同而重复写了同一地址,也分别计算
· {% if %} 分支中的指令无论是否执行都会计算
· 旅程自动化中每个消息动作 3 个
每次调用的最长等待时间2 秒
响应大小1MB
调用地址长度变量替换后 2048 个字符
响应缓存保留时间· GET 默认 5 分钟
· POST 仅在指定 :cache_max_age 时
· :cache_max_age 可指定范围为 300 秒(5 分钟)~ 14400 秒(4 小时)。超出范围的值会按最接近的限值应用
认证信息登记数量每个项目 10 个

以下示例适合在掌握基本用法后参考。


示例 1:在标题和内容中使用同一个值

Section titled “示例 1:在标题和内容中使用同一个值”

用 :save 保存的名称只能在写有该指令的字段内使用。如果要在标题和内容这样的不同字段中使用,请在每个字段中分别写指令。地址相同时会复用缓存的响应。

标题

{% connected_content https://api.example.com/products/{{ tags.wishlist_sku }} :save product %}您收藏的 {{ product.name }} 降价了。

内容

{% connected_content https://api.example.com/products/{{ tags.wishlist_sku }} :save product %}现在只需 {{ product.price | number_with_delimiter }} 即可入手。

示例 2:将前一个响应用于下一次调用

Section titled “示例 2:将前一个响应用于下一次调用”

指令从上到下依次执行,因此可以把先保存的值用在下一个调用地址中。前一个调用结束后才会开始下一个调用,所以等待时间会累加。

{% connected_content https://api.example.com/me?uid={{ userId }} :save me %}
{% connected_content https://api.example.com/orders/{{ me.id }} :save orders %}
{{ me.name }},您共有 {{ orders.total }} 笔订单

示例 3:根据条件调用不同的 API

Section titled “示例 3:根据条件调用不同的 API”

在 {% if %} 中也可以调用,两个分支使用同一个名称也没有问题。名称中存放的是实际执行的那一侧的响应。

{% if tags.vip %}
{% connected_content https://api.example.com/vip-deals :save deals %}
{% else %}
{% connected_content https://api.example.com/normal-deals :save deals %}
{% endif %}
今日特价:{{ deals.title }}

指令在循环外只调用一次,再用循环显示获取到的列表。

{% connected_content https://api.example.com/reco?uid={{ userId }} :save reco %}
为您推荐的商品:
{% for item in reco.items %}
- {{ item.title }} {{ item.price | number_with_delimiter }}
{% endfor %}