freeswitch【解决方案】— 使用mod_odbc_cdr记录cdr时获取不到b leg 的call-id问题
Posted on 2025-03-21 13:48 PerKins.Zhu 阅读(88) 评论(0) 收藏 举报在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"/>
浙公网安备 33010602011771号