转接参数:`blxferVariables`
blxferVariables 用于在 blxfer()(盲转)等转接操作中传递通道变量。常见用法包括跨部门转接和 SIP 头透传。
1. 数据结构
- 类型:
ChannelVariable[] - 最大项数:最多 5 个
示例:
[
{ "name": "mainUniqueId", "value": "${cdr_main_unique_id}", "type": 2 },
{ "name": "userFiled", "value": "${BASE64_ENCODE(${cdr_main_unique_id})}", "type": 2 }
]字段说明(与 06-Types.md 保持一致):
| 字段 | 含义 |
|---|---|
| name | 变量名 |
| value | 变量值(通道变量值或 SIP 头值) |
| type | 变量类型(见下文) |
2. type 取值
type 取值| type | 类别 | 说明 |
|---|---|---|
| 1 | 普通通道变量 | 支持使用 ${} 引用现有通道变量 |
| 2 | SIP 头变量 | 发起呼叫时,系统可能会在头名称前加上 X-Asterisk-;P-Tinet- 保留原前缀;P-User- 表示自定义头名称,并会自动移除该前缀 |
| 3 | 普通变量(自动用 ${} 包裹 value) | 用于下游系统不接受输入中包含 ${} 的场景 |
| 4 | SIP 头(自动用 ${} 包裹 value,且按约定不加前缀) | 用于下游系统不接受输入中包含 ${} 的场景 |
2.1 type=1(通道变量)
[{ "name": "userFiled", "value": "111222", "type": 1 }]
[{ "name": "userFiled", "value": "${cdr_main_unique_id}", "type": 1 }]2.2 type=2(SIP 头变量)
value 常见有两种写法:
// 方式 A:客户端自行进行 base64 编码
[{ "name": "userFiled", "value": "MTExMjIy", "type": 2 }]
// 方式 B:服务端表达式执行 BASE64_ENCODE(常用于跨部门传递本部门变量)
[{ "name": "userFiled", "value": "${BASE64_ENCODE(${cdr_main_unique_id})}", "type": 2 }]头名称规则(摘要):
- 名称为
abc→ 实际头为X-Asterisk-abc - 名称以
P-Tinet-开头 → 保持头名称为P-Tinet-xxx - 名称以
P-User-开头 → 移除该前缀,并将头发送为xxx
3. 跨部门主叫号码(示例)
默认情况下,主叫号码可能是发起部门的外呼号码。如果你希望使用客户真实号码作为主叫号码:
{ "name": "cust_callee_clid", "value": "${cdr_customer_number}", "type": 1 }4. 目标部门如何获取这些值(示例)
4.1 在 IVR 变量节点中读取 SIP 头
变量名:parent_unique_id
变量值:${PJSIP_HEADER(read,X-Asterisk-parent_unique_id)}
值类型:表达式4.2 在 HTTP 交互 / 挂断推送中解码该值
parent_unique_id=${BASE64_DECODE(${parent_unique_id})}