转接参数:`blxferVariables`
快速阅读
blxferVariables 在盲转时把通道变量或 SIP 头带给下游。类型是 ChannelVariable[],最多 5 项。
- 字段只有
name、value、type。type取1到4,含义见下表,不要改枚举。 type=2时,头名称规则涉及X-Asterisk-、P-Tinet-、P-User-。这是协议行为,按原文实现。- 结构与 类型 里的
ChannelVariable一致。
阅读地图
- 数据结构和示例:读「二」。
type四种取值:读「三」。- 跨部门主叫、目标侧怎么读:读「四」「五」。
- 盲转方法本身见 API(操作) 的
blxfer。
一、文档说明
本文说明盲转参数 blxferVariables 怎么填、下游怎么取。示例里的变量名(含 userFiled)保持原文。
二、数据结构
- 类型:
ChannelVariable[] - 最大项数:最多 5 个
示例:
[
{ "name": "mainUniqueId", "value": "${cdr_main_unique_id}", "type": 2 },
{ "name": "userFiled", "value": "${BASE64_ENCODE(${cdr_main_unique_id})}", "type": 2 }
]| 字段 | 含义 |
|---|---|
| name | 变量名 |
| value | 变量值(通道变量值或 SIP 头值) |
| type | 变量类型(见下文) |
三、type 取值
| type | 类别 | 说明 |
|---|---|---|
| 1 | 普通通道变量 | 支持使用 ${} 引用现有通道变量 |
| 2 | SIP 头变量 | 发起呼叫时,系统可能会在头名称前加上 X-Asterisk-;P-Tinet- 保留原前缀;P-User- 表示自定义头名称,并会自动移除该前缀 |
| 3 | 普通变量(自动用 ${} 包裹 value) | 用于下游系统不接受输入中包含 ${} 的场景 |
| 4 | SIP 头(自动用 ${} 包裹 value,且按约定不加前缀) | 用于下游系统不接受输入中包含 ${} 的场景 |
3.1 type=1(通道变量)
[{ "name": "userFiled", "value": "111222", "type": 1 }]
[{ "name": "userFiled", "value": "${cdr_main_unique_id}", "type": 1 }]3.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
四、跨部门主叫号码
默认情况下,主叫号码可能是发起部门的外呼号码。若要使用客户真实号码作为主叫号码:
{ "name": "cust_callee_clid", "value": "${cdr_customer_number}", "type": 1 }五、目标部门如何获取这些值
5.1 在 IVR 变量节点中读取 SIP 头
变量名:parent_unique_id
变量值:${PJSIP_HEADER(read,X-Asterisk-parent_unique_id)}
值类型:表达式5.2 在 HTTP 交互 / 挂断推送中解码该值
parent_unique_id=${BASE64_DECODE(${parent_unique_id})}Updated about 2 months ago
Did this page help you?