You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:使用Consult后能否获取被保持呼叫的RTP端口

如何获取Consult操作后保持状态呼叫的RTP端口?

代码实现

dialoutCall = (CiscoCall) provider.createCall();
TerminalConnection terminalConnection = ctipTerminal.getTerminalConnections()[0];
dialoutCall.consult(terminalConnection,dialToNum);

问题描述

执行上述Consult操作后,原有呼叫会进入保持状态,且RTP端口发生变更,想确认是否可以获取该保持状态呼叫的RTP端口。

触发Consult后收到的事件(翻译后)

已接收--> 呼叫/CiscoTermConnSelectChangedEv CTI_1
已接收--> 终端/CiscoRTPInputStoppedEv
已接收--> 终端/CiscoRTPOutputStoppedEv
已接收--> 呼叫/CallCtlTermConnHeldEv CTI_1
已接收--> 呼叫/ConsultCallActive
已接收--> 呼叫/ConnCreatedEv 6050:CampusPT:1
已接收--> 呼叫/ConnConnectedEv 6050:CampusPT:1
已接收--> 呼叫/CallCtlConnInitiatedEv 6050:CampusPT:1
已接收--> 呼叫/TermConnCreatedEv CTI_1
已接收--> 呼叫/TermConnActiveEv CTI_1
已接收--> 呼叫/CallCtlTermConnTalkingEv CTI_1
已接收--> 呼叫/CallCtlConnDialingEv 6050:CampusPT:1
已接收--> 呼叫/CallCtlConnEstablishedEv 6050:CampusPT:1
已接收--> 呼叫/ConnInProgressEv 6001:CampusPT:1
已接收--> 呼叫/CallCtlConnOfferedEv 6001:CampusPT:1
已接收--> 呼叫/ConnAlertingEv 6001:CampusPT:1
已接收--> 呼叫/CallCtlConnAlertingEv 6001:CampusPT:1

解答

可以获取保持状态呼叫的RTP端口,具体方法如下:

  • 监听RTP启动事件:原呼叫进入保持状态后,虽然会先触发CiscoRTPInputStoppedEv和CiscoRTPOutputStoppedEv,但当系统为保持的呼叫重新分配RTP端口时,会发送CiscoRTPInputStartedEv和CiscoRTPOutputStartedEv事件。通过这两个事件的getRTPAddress()方法,就能拿到包含端口的RTP地址信息。
  • 主动查询呼叫媒体信息:通过原CiscoCall对象关联的CiscoTerminalConnection,调用getMediaInfo()方法获取媒体流详情;或者直接从CiscoCall对象中读取媒体属性,不过要注意必须等呼叫保持状态稳定、媒体通道重新建立后,这些信息才会更新为最新的RTP端口。
  • 注意事件时序:你当前收到的事件里只有RTP停止事件,可能需要等待片刻,观察是否有后续的RTP启动事件;也可以在收到CallCtlTermConnHeldEv事件后,主动查询原呼叫的媒体属性。

内容的提问来源于stack exchange,提问作者Potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:55:39