Sip 在Cisco CUCM的双方手机上启用录制时处理邀请

Sip 在Cisco CUCM的双方手机上启用录制时处理邀请,sip,sip-server,jain-sip,cucm,cisco-jtapi,Sip,Sip Server,Jain Sip,Cucm,Cisco Jtapi,我正在使用jain sip实现一个sip服务器来处理呼叫事件,然后在Cisco CUCM中记录呼叫。当通话从启用录音功能的手机打到禁用录音功能的手机或从禁用录音功能的手机打到启用录音功能的手机时,它可以正常工作。我收到两个邀请,每个远端和近端电话一个 但当在两部手机之间进行通话时,如果两部手机都启用了录音功能(想想内部通话),我会收到四个邀请,无法区分远端和近端,也无法知道哪些邀请需要处理,哪些邀请需要忽略。两部手机都会发送两个邀请,一个为自己,一个为另一部手机。通话结束时,将发送四个“是” 处

我正在使用jain sip实现一个sip服务器来处理呼叫事件,然后在Cisco CUCM中记录呼叫。当通话从启用录音功能的手机打到禁用录音功能的手机或从禁用录音功能的手机打到启用录音功能的手机时,它可以正常工作。我收到两个邀请,每个远端和近端电话一个

但当在两部手机之间进行通话时,如果两部手机都启用了录音功能(想想内部通话),我会收到四个邀请,无法区分远端和近端,也无法知道哪些邀请需要处理,哪些邀请需要忽略。两部手机都会发送两个邀请,一个为自己,一个为另一部手机。通话结束时,将发送四个“是”

处理这种情况的正确方法是什么

以下是四个邀请

INVITE sip:88888@192.168.1.x.x:5060 SIP/2.0
Via: SIP/2.0/TCP 192.168..x.x:5060;branch=z9hG4bK2095e06f3b8;rport=58747
From: <sip:2400@192.168..x.x;x-nearend;x-refci=27425142;x-nearendclusterid=BR-Cluster2;x-nearenddevice=SEPD0C282D15AAF;x-nearendaddr=2400;x-farendrefci=27425141;x-farendclusterid=BR-Cluster2;x-farenddevice=sikander1;x-farendaddr=2701>;tag=519~00d3be95-408b-41c6-90cf-01ef66258892-27425149
To: <sip:88888@192.168.1.124>
Date: Mon, 09 Nov 2020 07:13:13 GMT
Call-ID: 6649000-fa81ec09-1f6-3001a8c0@192.168..x.x
Supported: timer,resource-priority,replaces,X-cisco-srtp-fallback,Geolocation
Min-SE: 120
User-Agent: Cisco-CUCM11.5
Allow: INVITE,OPTIONS,INFO,BYE,CANCEL,ACK,PRACK,UPDATE,REFER,SUBSCRIBE,NOTIFY
CSeq: 101 INVITE
Expires: 180
Allow-Events: presence,kpml
Call-Info: <sip:192.168..x.x:5060>;method="NOTIFY;Event=telephone-event;Duration=500"
Session-ID: 00000000000000000000000000000000;remote=00000000000000000000000000000000
Cisco-Guid: 0107253760-0000065536-0000000011-0805415104
Session-Expires: 120
P-Asserted-Identity: <sip:2400@192.168..x.x>
Remote-Party-ID: <sip:2400@192.168..x.x>;party=calling;screen=yes;privacy=off
Contact: <sip:2400@192.168..x.x:5060;transport=tcp>;isFocus
Max-Forwards: 70
Content-Length: 0

-----------------------------------------

INVITE sip:88888@192.168.x.x:5060 SIP/2.0
Via: SIP/2.0/TCP 192.168.x.x:5060;branch=z9hG4bK20a2071bec;rport=58747
From: <sip:2701@192.168.x.x;x-nearend;x-refci=27425141;x-nearendclusterid=BR-Cluster2;x-nearenddevice=sikander1;x-nearendaddr=2701;x-farendrefci=27425142;x-farendclusterid=BR-Cluster2;x-farenddevice=SEPD0C282D15AAF;x-farendaddr=2400>;tag=520~00d3be95-408b-41c6-90cf-01ef66258892-27425150
To: <sip:88888@192.168..x.x>
Date: Mon, 09 Nov 2020 07:13:13 GMT
Call-ID: 6649000-fa81ec09-1f7-3001a8c0@192.168..x.x
Supported: timer,resource-priority,replaces,X-cisco-srtp-fallback,Geolocation
Min-SE: 120
User-Agent: Cisco-CUCM11.5
Allow: INVITE,OPTIONS,INFO,BYE,CANCEL,ACK,PRACK,UPDATE,REFER,SUBSCRIBE,NOTIFY
CSeq: 101 INVITE
Expires: 180
Allow-Events: presence,kpml
Call-Info: <sip:192.168..x.x:5060>;method="NOTIFY;Event=telephone-event;Duration=500"
Session-ID: 00000000000000000000000000000000;remote=00000000000000000000000000000000
Cisco-Guid: 0107253760-0000065536-0000000012-0805415104
Session-Expires: 120
P-Asserted-Identity: <sip:2701@192.168..x.x>
Remote-Party-ID: <sip:2701@192.168.1.x.x>;party=calling;screen=yes;privacy=off
Contact: <sip:2701@192.168.x.x:5060;transport=tcp>;isFocus
Max-Forwards: 70
Content-Length: 0

-------------------------

INVITE sip:88888@192.168..x.x:5060 SIP/2.0
Via: SIP/2.0/TCP 192.168..x.x:5060;branch=z9hG4bK20b5eb383e9;rport=58747
From: <sip:2400@192.168..x.x;x-farend;x-refci=27425142;x-nearendclusterid=BR-Cluster2;x-nearenddevice=SEPD0C282D15AAF;x-nearendaddr=2400;x-farendrefci=27425141;x-farendclusterid=BR-Cluster2;x-farenddevice=sikander1;x-farendaddr=2701>;tag=521~00d3be95-408b-41c6-90cf-01ef66258892-27425155
To: <sip:88888@192.168..x.x>
Date: Mon, 09 Nov 2020 07:13:13 GMT
Call-ID: 6649000-fa81ec09-1f8-3001a8c0@192.168..x.x
Supported: timer,resource-priority,replaces,X-cisco-srtp-fallback,Geolocation
Min-SE: 120
User-Agent: Cisco-CUCM11.5
Allow: INVITE,OPTIONS,INFO,BYE,CANCEL,ACK,PRACK,UPDATE,REFER,SUBSCRIBE,NOTIFY
CSeq: 101 INVITE
Expires: 180
Allow-Events: presence,kpml
Call-Info: <sip:192.168..x.x:5060>;method="NOTIFY;Event=telephone-event;Duration=500"
Session-ID: 00000000000000000000000000000000;remote=00000000000000000000000000000000
Cisco-Guid: 0107253760-0000065536-0000000013-0805415104
Session-Expires: 120
P-Asserted-Identity: <sip:2400@192.168.x.x>
Remote-Party-ID: <sip:2400@192.168..x.x>;party=calling;screen=yes;privacy=off
Contact: <sip:2400@192.168..x.x:5060;transport=tcp>;isFocus
Max-Forwards: 70
Content-Length: 0



-------------------------

INVITE sip:88888@192.168.1.124:5060 SIP/2.0
Via: SIP/2.0/TCP 192.168..x.x:5060;branch=z9hG4bK20c2f880eb2;rport=58747
From: <sip:2701@192.168..x.x;x-farend;x-refci=27425141;x-nearendclusterid=BR-Cluster2;x-nearenddevice=sikander1;x-nearendaddr=2701;x-farendrefci=27425142;x-farendclusterid=BR-Cluster2;x-farenddevice=SEPD0C282D15AAF;x-farendaddr=2400>;tag=522~00d3be95-408b-41c6-90cf-01ef66258892-27425156
To: <sip:88888@192.168.1.124>
Date: Mon, 09 Nov 2020 07:13:13 GMT
Call-ID: 6649000-fa81ec09-1f9-3001a8c0@192.168..x.x
Supported: timer,resource-priority,replaces,X-cisco-srtp-fallback,Geolocation
Min-SE: 120
User-Agent: Cisco-CUCM11.5
Allow: INVITE,OPTIONS,INFO,BYE,CANCEL,ACK,PRACK,UPDATE,REFER,SUBSCRIBE,NOTIFY
CSeq: 101 INVITE
Expires: 180
Allow-Events: presence,kpml
Call-Info: <sip:192.168..x.x:5060>;method="NOTIFY;Event=telephone-event;Duration=500"
Session-ID: 00000000000000000000000000000000;remote=00000000000000000000000000000000
Cisco-Guid: 0107253760-0000065536-0000000014-0805415104
Session-Expires: 120
P-Asserted-Identity: <sip:2701@192.168..x.x>
Remote-Party-ID: <sip:2701@192.168..x.x>;party=calling;screen=yes;privacy=off
Contact: <sip:2701@192.168..x.x:5060;transport=tcp>;isFocus
Max-Forwards: 70
Content-Length: 0
INVITE sip:88888@192.168.1.x.x:5060 SIP/2.0
Via:SIP/2.0/TCP 192.168..x.x:5060;分支=z9hG4bK2095e06f3b8;rport=58747
发件人:;标签=519~00d3be95-408b-41c6-90cf-01ef66258892-27425149
致:
日期:2020年11月9日星期一07:13:13 GMT
电话号码:6649000-fa81ec09-1f6-3001a8c0@192.168..x.x
支持:计时器、资源优先级、替换、X-cisco-srtp-fallback、地理位置
Min SE:120
用户代理:Cisco-CUCM11.5
允许:邀请、选项、信息、再见、取消、确认、恶作剧、更新、参考、订阅、通知
CSeq:101邀请
有效期:180
允许事件:存在,kpml
通话信息:;方法=“通知;事件=电话事件;持续时间=500”
会话ID:00000000000000000000;远程=00000000000000000000
Cisco Guid:0107253760-0000065536-00000000 11-080541504
会话到期:120
P-身份:
远程方ID:;一方=呼叫;屏幕=是;隐私=关闭
联系人:;isFocus
最大前锋:70
内容长度:0
-----------------------------------------
邀请sip:88888@192.168.x.x:5060 SIP/2.0
Via:SIP/2.0/TCP 192.168.x.x:5060;分支=z9hG4bK20a2071bec;rport=58747
发件人:;标签=520~00d3be95-408b-41c6-90cf-01ef66258892-27425150
致:
日期:2020年11月9日星期一07:13:13 GMT
电话号码:6649000-fa81ec09-1f7-3001a8c0@192.168..x.x
支持:计时器、资源优先级、替换、X-cisco-srtp-fallback、地理位置
Min SE:120
用户代理:Cisco-CUCM11.5
允许:邀请、选项、信息、再见、取消、确认、恶作剧、更新、参考、订阅、通知
CSeq:101邀请
有效期:180
允许事件:存在,kpml
通话信息:;方法=“通知;事件=电话事件;持续时间=500”
会话ID:00000000000000000000;远程=00000000000000000000
Cisco Guid:0107253760-0000065536-00000000 12-080541504
会话到期:120
P-身份:
远程方ID:;一方=呼叫;屏幕=是;隐私=关闭
联系人:;isFocus
最大前锋:70
内容长度:0
-------------------------
邀请sip:88888@192.168..x.x:5060 SIP/2.0
Via:SIP/2.0/TCP 192.168..x.x:5060;分支=z9hG4bK20b5eb383e9;rport=58747
发件人:;标签=521~00d3be95-408b-41c6-90cf-01ef66258892-27425155
致:
日期:2020年11月9日星期一07:13:13 GMT
电话号码:6649000-fa81ec09-1f8-3001a8c0@192.168..x.x
支持:计时器、资源优先级、替换、X-cisco-srtp-fallback、地理位置
Min SE:120
用户代理:Cisco-CUCM11.5
允许:邀请、选项、信息、再见、取消、确认、恶作剧、更新、参考、订阅、通知
CSeq:101邀请
有效期:180
允许事件:存在,kpml
通话信息:;方法=“通知;事件=电话事件;持续时间=500”
会话ID:00000000000000000000;远程=00000000000000000000
Cisco Guid:0107253760-0000065536-00000000 13-080541504
会话到期:120
P-身份:
远程方ID:;一方=呼叫;屏幕=是;隐私=关闭
联系人:;isFocus
最大前锋:70
内容长度:0
-------------------------
邀请sip:88888@192.168.1.124:5060 SIP/2.0
Via:SIP/2.0/TCP 192.168..x.x:5060;分支=z9hG4bK20c2f880eb2;rport=58747
发件人:;标签=522~00d3be95-408b-41c6-90cf-01ef66258892-27425156
致:
日期:2020年11月9日星期一07:13:13 GMT
电话号码:6649000-fa81ec09-1f9-3001a8c0@192.168..x.x
支持:计时器、资源优先级、替换、X-cisco-srtp-fallback、地理位置
Min SE:120
用户代理:Cisco-CUCM11.5
允许:邀请、选项、信息、再见、取消、确认、恶作剧、更新、参考、订阅、通知
CSeq:101邀请
有效期:180
允许事件:存在,kpml
通话信息:;方法=“通知;事件=电话事件;持续时间=500”
会话ID:00000000000000000000;远程=00000000000000000000
思科Guid:0107253760-0000065536-00000000 14-0805415104
会话到期:120
P-身份:
远程方ID:;一方=呼叫;屏幕=是;隐私=关闭
联系人:;isFocus
最大前锋:70
内容长度:0

我想,一般来说,我们的想法可能是记录所有4个通话段,即“同一”通话的双方。例如,如果一方遇到RTP流问题或其他异常情况,则可以使用软件分析双方录制时的语音质量。编解码器差异或转码可能会导致同一第二方呼叫的一个“版本”听起来更好/更差(或有更大的存储需求)。
如果您不关心该级别的RTP数据,则可能需要检查x-refci和其他From:字段,以便在事件发生期间或之后对其进行“重复消除”…

好建议。我试图忽略重复的邀请,但这看起来不是个好主意。我现在正在录制所有四条腿,并从每一侧选择其中两条腿,将它们传递到基于x-refci的音频播放器。将来,我可能会添加一个音质分析器来选择质量最好的音频作为最终录音。