PerKins Zhu

Le vent se lève,il faut tenter de vivre.

导航

在U2BUA场景下,dialplan中进行bridge时,当bleg 在未返回有效信令(例如183)之前,通话被主动挂掉,此时mod_odbc_cdr模块是获取不到b leg  invite sip头中的call-id字段的。

 

解决方案:

  在dialplan配置项中主动指定 bleg的call-id,同时新增一个bleg channel变量leg_sip_call_id,保证bleg 的call-id和leg_sip_call_id一直,传给bleg。同时修改mod_odbc_cdr配置,修改call-id取值,从leg_sip_call_id字段中取值即可。

<!-- aleg中把sip-call-id 字段赋值给 leg_call_id,获取aleg的值--> 
     <action application="set" data="leg_sip_call_id=${sip_call_id}"/>

<!-- 生成bleg的sipheader call-id--> 
      <action application="set" data="tempCallId=${uuid}@fs"/>
<!-- bleg中把tempCallId 传递给bleg,主动指定bleg的sip_call_id 同时复制给bleg通道变量leg_sip_call_id,以便mod_odbc_cdr从该变量中取值--> 
      <action application="bridge" data="{sip_h_Call-ID=${tempCallId},leg_sip_call_id=${tempCallId}}sofia/external/sipp_gw_0/sip:123123123@192.168.1.10:5069"/>