FreeSWITCH
如何处理一个典型的SIP通话呢?
Routing
在路由routing
阶段,FreeSWITCH
搜寻XML拨号计划,直到发现一个测试返回true的condition
,就创建一个由name–value
对组成的to-do
列表;其中包含要设定的变量列表和要执行的application
(如bridge)。在路由阶段,除标识为inline
需要立即执行的application
外,不执行任何其他application
。
Execute
在执行阶段,执行路由阶段编译compiled
的指令。‘名称-值’对被解析并执行。
Hangup
在挂机阶段,如果有name–value
对需要转回路由阶段,则重新转到路由状态;否则挂断电话。
通道状态(Channel States)
在其整个生命周期中,通道(代表通话的一条腿)将处于多种不同的状态:
CS_NEW
:新创建的通道
CS_INIT
:已初始化的通道
CS_ROUTING
:搜寻拨号计划,以查找需要执行的extension
CS_SOFT_EXECUTE
:通道即将被第三方控制执行
CS_EXECUTE
:执行拨号计划中的指令
CS_EXCHANGE_MEDIA
:正在与另外一个通道交换媒体
CS_PARK
:通道正接收媒体,并等待命令
CS_CONSUME_MEDIA
:通道正在消费媒体信息并丢弃
CS_HIBERNATE
:通道处于休眠状态
CS_RESET
:通道处于重设状态
CS_HANGUP
:通道被标记为挂机状态并准备结束媒体,且不会产生更多的路由
CS_REPORTING
:通道已挂机,媒体也结束;现在处理像CRD记录等的报告流程
CS_DESTROY
:通道已销毁并将离开状态机,内存被释放,内存池返还给内核