编写指令与发送
在消息中编写指令,通过测试发送确认值后再保存。
第 3 步:在消息中编写指令
Section titled “第 3 步:在消息中编写指令”指令分为调用 API 的行和使用响应的行。

编写调用地址
Section titled “编写调用地址”- 路径和查询字符串中可以使用
{{ userId }}、{{ tags.* }}等个性化变量。域名部分不能使用。 - 像电子邮件地址这样可能包含
@、+、&的值,请用url_encode包起来。否则值在传递时可能会被破坏。
{% connected_content https://api.example.com/coupon?uid={{ userId }} %}{% connected_content https://api.example.com/member?email={{ email | url_encode }} :save member %}域名中包含变量时无法保存。
{% connected_content https://{{ tags.domain }}/coupon %}确定请求方式
Section titled “确定请求方式”| 请求方式 | 需要填写 | 注意事项 |
|---|---|---|
| GET | 只需填写地址 | - |
| POST | :method post + :body | 如果只写 :body 而没有 :method post,可以保存,但 body 会被忽略,并以 GET 方式调用 |
| POST · 接收 JSON 的 API | :method post + :body + :content_type application/json | 漏写 :content_type application/json 时,API 无法读取数据,值会以空白发送 |
POST 示例
收件人的值会填入 :body 中 {{ userId }} 的位置。如果收件人的 userId 是 abc123,就会发送 uid=abc123。
{% connected_content https://api.example.com/recommend :method post :body uid={{ userId | url_encode }} :save rec %}推荐商品:{{ rec.product_name }}编写 JSON body
Section titled “编写 JSON body”以 JSON 格式发送时,body 也请按 键=值 的格式填写,并用 url_encode 包住值。FlareLane 会将其转换为 JSON 后发送,即使值中含有引号等特殊字符也不会被破坏。选项较多时,可以分行填写。
即使姓名是 金 "Flare" Lane,也会正确发送为 {"uid": "…", "name": "金 \"Flare\" Lane"}。
{% connected_content https://api.example.com/recommend :method post :content_type application/json :body uid={{ userId | url_encode }}&name={{ name | url_encode }} :save rec %}如果直接写 JSON,值中含有引号的收件人的 body 会被破坏,API 会返回 400 错误,值以空白发送。
{% connected_content https://api.example.com/recommend :method post :content_type application/json :body {"name": "{{ name }}"} :save rec %}附加认证信息
Section titled “附加认证信息”- 将在使用准备步骤中复制好的认证信息附加在地址后面。
- 一个指令中不能同时使用 Basic 和 Token。
| 登记的方式 | 选项 |
|---|---|
| Basic | :basic_auth 认证名称 |
| Token | :auth_credentials 认证名称 |
响应是 JSON 还是纯文本,由 API 的 Content-Type 响应头决定。请对照开发团队提供的响应示例确认。两种格式的读取方式不同。
| 区分 | JSON 响应 | 纯文本响应 |
|---|---|---|
| 值填入的位置 | 写有 {{ 名称.字段 }} 的位置 | 写有指令的位置(整个响应) |
:save | 指定名称。省略时为 connected | 即使指定,也会输出在指令所在位置 |
| 在多处使用 | 可以 | 不可以。如有需要,请让开发团队提供 JSON 响应({"code": "SAVE20-8F3K"}) |
| HTTP 状态码 | {{ 名称.__http_status_code__ }} | 不可用 |
JSON 响应
Section titled “JSON 响应”用 :save 指定名称,然后在名称后加点(.)读取字段。同一个值可以在多处使用,之后要增加读取的值也很方便。
{% connected_content https://api.example.com/points?uid={{ userId }} :save point %}您有 {{ point.amount }} 积分即将过期,请在 {{ point.expires_at }} 前使用。| 响应 | 发送的消息 |
|---|---|
{"amount": 12000, "expires_at": "9月30日"} | 您有 12000 积分即将过期,请在 9月30日 前使用。 |
请直接在值要出现的位置写指令。下面的示例通过公开的天气服务填入用户所在城市的当前气温。
今天 {{ tags.city }} 的气温是 {% connected_content https://wttr.in/{{ tags.city }}?format=%t %},出门前请注意穿着!| 用户属性 | 响应 | 发送的消息 |
|---|---|---|
tags.city = Seoul | +17°C | 今天 Seoul 的气温是 +17°C,出门前请注意穿着! |
应对调用失败
Section titled “应对调用失败”在指令中应对
Section titled “在指令中应对”调用失败时,值的位置会留空。建议从以下三种方式中选择一种提前写好。
| 想要实现 | 语法 | 须知 |
|---|---|---|
| 显示替代文案(推荐) | default: | 值为空时填入预先设定的文案。 |
| 只在有值时显示该句 | {% if %} | 可以避免句子读起来别扭。条件语句中也请用字段而不是名称来判断。 |
| 不向该收件人发送 | abort_message | 用于像优惠券码这样没有值就没有发送意义的情况。计为发送失败,不收费。 |
用条件语句判断失败
Section titled “用条件语句判断失败”如果只想在有值时显示,或者不发送,可以用条件语句判断调用是否失败。判断方法有两种。
| 判断方法 | 条件 | 须知 |
|---|---|---|
| 字段是否为空 | point.amount == blank | 调用失败,或调用成功但该字段为空时,结果为真。 |
| HTTP 状态码 | point.__http_status_code__ != 200 | 调用失败时状态码为空,结果为真。 该值包含在 JSON 对象响应中,请勿用于返回文本响应的 API。 |
条件语句中也请用字段而不是名称来判断。只写名称会导致消息无法保存。
{% if point == blank %}{% abort_message %}{% endif %}设置响应复用
Section titled “设置响应复用”再次调用同一地址时,不会每次都调用 API,而是在一定时间内复用之前收到的响应。大多数情况下保持默认行为即可,只在需要更改时填写选项。
| 区分 | 行为 |
|---|---|
| GET 调用 | 同一地址的响应复用 5 分钟。同一项目内,其他消息或活动调用得到的响应也会复用 |
| POST 调用 | 只有填写了 :cache_max_age 时才复用,并且 body 也相同才视为同一次调用 |
| 每个收件人值不同 | 地址、body 或 headers 中包含 userId、email、phoneNumber、dob 时不复用 |
| 失败的响应 | 不复用,下次调用时重新请求 |
- 例如:只包含
tags.city的天气调用会在同一城市之间复用响应,即使收件人很多,也只按城市数量调用。 - 同时处理的收件人较多时,即使是同一地址也可能被调用多次。缓存只是减少调用次数,并不保证只调用一次。
通过选项更改
Section titled “通过选项更改”| 适用情况 | 需要填写 |
|---|---|
| 像库存这样必须始终是最新值时 | :no_cache |
| 每个收件人的值都相同,希望复用更久以减少调用次数时 | :cache_max_age 3600(单位:秒,3600 秒 = 1 小时) |
| 希望复用 POST 响应时 | :cache_max_age(POST 只有填写此选项才会复用) |
:cache_max_age 可设置的范围请查看限额汇总。
第 4 步:通过测试发送确认
Section titled “第 4 步:通过测试发送确认”- 建议在发送前通过测试发送确认最终消息。
- 测试发送与实际发送相同。
- 会实际调用您的 API。
- 同样会进行第 5 步的自动检查。
- 如果指定的号码或电子邮件没有关联的用户,
{{ userId }}等用户信息可能为空。

第 5 步:发送、定时或保存旅程
Section titled “第 5 步:发送、定时或保存旅程”- 在即时发送,以及保存定时发送、周期性发送、旅程自动化、电子邮件模板时,系统会自动检查指令。不符合编写规则时,无法保存或发送。
- 编写规则请查看保存被拒绝的情况。