转接参数:`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类别说明
1普通通道变量支持使用 ${} 引用现有通道变量
2SIP 头变量发起呼叫时,系统可能会在头名称前加上 X-Asterisk-P-Tinet- 保留原前缀;P-User- 表示自定义头名称,并会自动移除该前缀
3普通变量(自动用 ${} 包裹 value)用于下游系统不接受输入中包含 ${} 的场景
4SIP 头(自动用 ${} 包裹 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})}