Freeswitch一路呼叫的生命周期

2019-04-14 18:43发布

摘要

本文描述FreeSWITCH如何处理一路典型的SIP呼叫。  
  • 1 FreeSWITCH上注册分机间的典型SIP呼叫
  • 2 呼叫状态
  • 3 通道状态
    • 3.1状态处理程序
  • 另请参见
 

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 通道已经跳出状态机,准备好销毁资源。释放通道使用的内存,并将内存池返回给内核

状态处理程序

        可以向通道添加定制处理程序(回调钩子),处理程序既可以是全局的,也可以是基于每个通道的。例如,这将允许您执行自己的自定义报告或清理自己动态创建的对象。定制处理程序也可以从通道中移除。  

另请参见