摘要
本文描述FreeSWITCH如何处理一路典型的SIP呼叫。
- 1 FreeSWITCH上注册分机间的典型SIP呼叫
- 2 呼叫状态
- 3 通道状态
- 4 另请参见
FreeSWITCH上注册分机间的典型SIP呼叫
呼叫状态机图:
呼叫状态
Routing 路由
在路由状态下,FreeSWITCH搜索XML拨号计划。当它找到一个返回值为真的条件时,它构建一个待办事件列表,表中包含一系列name–value描述的动作描述,包括要设置的变量列表和稍后要执行的拨号计划APP,例如“bridge”。在路由状态下,除了少量带有"inline"属性的,可以立刻返回的APP之外,将不行执行任何的APP。
Execute 执行
执行状态下执行路由状态编译的指令。前面找到的 name–value对,将被一一解析并执行。
Hangup 挂断
挂断状态,要么把话务转回路由状态,要么直接挂断通话。如果还有需要执行的动作,话务是可以迁移回路由状态的。
Channel States通道状态
一个通道(代表一路通话中的一条支路)将在其生命周期中呈现为许多不同的状态。下列列出可能出现的通道状态值,并给出相应的状态描述。
通道状态
|
描述
|
CS_NEW
通道是新创建的
CS_INIT
通道已经被初始化
CS_ROUTING
通道正在查找拨号计划
CS_SOFT_EXECUTE
通道已准备好从第三方控制执行
CS_EXECUTE
通道正在执行拨号方案中的指令
CS_EXCHANGE_MEDIA
通道正在与另一个通道交换媒体
CS_PARK
通道正在接受媒体并等待命令
CS_CONSUME_MEDIA
通道正在消耗媒体并丢弃它
CS_HIBERNATE
通道处于休眠状态
CS_RESET
通道处于复位状态
CS_HANGUP
通道已经被标识为挂断并准备结束。此时媒体将结束,并且不会再发生进一步的呼叫路由
CS_REPORTING
通道已经挂断,媒体已经结束,现在是痕迹报告时间,比如说写CDR记录
CS_DESTROY
通道已经跳出状态机,准备好销毁资源。释放通道使用的内存,并将内存池返回给内核
状态处理程序
可以向通道添加定制处理程序(回调钩子),处理程序既可以是全局的,也可以是基于每个通道的。例如,这将允许您执行自己的自定义报告或清理自己动态创建的对象。定制处理程序也可以从通道中移除。
另请参见