【Freeswitch从入门到精通】七、Variables

本文详细介绍了Freeswitch中的全局变量和通道变量,包括它们的设置、查询方法及应用场景。全局变量在启动时初始化且不可变,常用于系统配置;通道变量则在呼叫过程中可变,用于控制呼叫流程。文章还列举了各类关键变量及其用途,如CDR、DTMF、媒体处理等,并强调了修改全局变量需重启Freeswitch以生效。
摘要由CSDN通过智能技术生成

在 Freeswitch 的整个配置和运行流程中,变量伴随始终,并决定着整个流程的走向。

在 Freeswitch 整个执行流程中,你可以添加,查询各种系统状态,任务状态,呼叫状态,方便 Debug 自定义配置流程。

Freeswitch 中变量其实可以分为两部分:全局变量通道变量

1、使用

1.1 命令行查询

全局变量: eval $${变量名}

新增全局变量设置和查询:

  • global_setvar 变量名=变量值
  • global_getvar 变量名

1.2 路由表中

全局变量:$${变量名}

通道变量: ${变量名}
特殊通道变量在 condition filed字段中,可以直接使用 变量名, 不需要修饰符 $详见本章 2.2.26 【特殊直接引用型变量】

2、分类

【官方】所有变量官方飞机票

2.1 全局变量

【官方】全局变量官方飞机票

在 Freeswitch 启动中,自动设置的变量。比如:本地IP, NAT 等。
通常定义在/usr/local/freeswitch/conf/vars.xml中的变量,也是全局变量,可以更改 Freeswitch 默认的全局变量值。

常见变量有:

Hostname
local_ip_v4
local_mask_v4
local_ip_v6
switch_serial
base_dir
recordings_dir
sound_prefix
sounds_dir
conf_dir
log_dir
run_dir
db_dir
mod_dir
htdocs_dir
script_dir
temp_dir
grammar_dir
certs_dir
storage_dir
cache_dir
core_uuid
zrtp_enabled
nat_public_addr
nat_private_addr
nat_type

全局变量的引用方式: $${变量名},他们不是真正的变量,而是只读的变量。它们由一个FreeSWITCH配置文件(/usr/local/freeswitch/conf/vars.xml)分配,然后在启动时替换。

修改全局变量的方式通常是通过更改 /usr/local/freeswitch/conf/vars.xml 中的变量值进行更新。

注:如果修改了vars.xml里的预处理变量值,你必须重启FreeSWITCH才能让它生效(只是重载XML配置而没有重启FreeSWITCH是不够的)。

2.2 通道变量

【官方】通道变量官方飞机票

通道变量用于操纵拨号计划的执行、控制呼叫进度以及为 application 提供参数选项。

相较于全局变量的区别,可以认为是在拨号方案中可更改,可扩展的变量。
通道变量的引用:${变量名}

除了常用的 默认配置,set 定义变量外,还可以使用 export
如果你希望在当前话务(A-leg)和将来发起的话务(B-leg,之后由Bridge APP发起)中设置一个变量,你可以使用"export" APP导入:
<action application="export" data="absolute_codec_string=PCMA,PCMU"/>

2.2.1 CDR相关

2.2.2 挂断原因相关

2.2.3 CDR相关

2.2.4 DTMF相关

2.2.5 媒体处理

2.2.6 超时相关

2.2.7 保持音乐相关

2.2.8 区域相关

2.2.9 桥接相关

2.2.1 会议相关

2.2.10 代码执行相关

2.2.11 CallerID相关

2.2.12 CalleeID相关

2.2.13 呼叫录音相关

2.2.14 编解码相关

2.2.15 IVR相关

2.2.16 SIP相关变量

2.2.17 SDP处理

2.2.18 FIFO相关变量

2.2.19 Playback 相关变量

2.2.20 Originate相关变量

2.2.21 RTP/媒体相关变量

2.2.22 RTCP 相关

2.2.23 Camp-on相关变量

2.2.24 Answer确认变量

2.2.25 语音信箱相关变量

2.2.26 【特殊直接引用型变量】

这部分变量可以在"field"里直接引用而不用${}语法结构。

username :呼叫发起方的用户名
dialplan :使用的拨号 方案类型,几乎总是 "XML"
caller_id_name 主叫名称
caller_id_number 主叫号码
callee_id_name 被叫名称
callee_id_number 被叫号码
network_addr :呼叫发起端的网络地址
ani: Automatic Number Identification 自动号码识别(实际来电号码)
aniii Automatic Number Identification 2自动号码识别(实际来电号码第2版)
rdnis Redirected Dialed Number Information Service,重定向拨号号码信息服务,呼叫转接前的目的号码
destination_number
source:呼叫使用的模块,比如SIP呼叫的mod_sofia模块
uuid:呼叫的通用唯一标识符
context:拨号方案的context

2.3 区别

引用格式:
全局变量引用使用 KaTeX parse error: Can't use function '$' in math mode at position 16: {变量名},通道变量引用使用 $̲{变量名},特殊可以不适用 $… 因为是全局变量,值不变,初始化获取一次值就不再去获取该值了。(其实有编程经验的小伙伴,应该能理解,涉及到了栈堆的问题)

是否可变:
Freeswitch启动后,全局变量不可变,通道变量可变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值