Freeswitch-unimrcp 发送请求时,MRCP协议SIP消息Contact头设置问题

Freeswitch-unimrcp 发送请求时Contact头设置问题

问题描述

在现网的智能IVR和CTI平台开发中,经常会使用到ASR和TTS的引擎,这时需要使用到Freeswitch自带的mod_unimrcp模块。但是最近出现了一个问题,我的Freeswitch在NAT之后(做了端口映射)需要与对方的ASR,TTS服务进行对接,但是一直不成功。经对方协查发现我们发送mrcp的sip请求时Contact头域未正常携带,此时针对这个问题进行了排查。

操作结论

修改freeswitch/conf/mrcp_profiles/文件夹下的配置文件,添加或修改client-ext-ip选项即可

<include>
  <!-- IFLYTEK InterReco 6.0 MRCPv2 -->
  <profile name="iflytek-asr-master" version="2">
    <param name="client-ext-ip" value="172.19.13.25"/>
    <param name="client-ip" value="172.19.13.25"/>
    <param name="client-port" value="3600"/>
    <!--<param name="server-ip" value="172.19.13.23"/>-->
    <!--<param name="server-port" value="5060"/>-->
    <!--param name="server-ip" value="172.19.13.21"/-->
    <!--param name="server-port" value="6050"/-->
    <param name="server-ip" value="172.19.13.26"/>
    <param name="server-port" value="5061"/>
    <!--param name="force-destination" value="1"/-->
    <param name="sip-transport" value="udp"/>
    <!--param name="ua-name" value="FreeSWITCH"/-->
    <!--param name="sdp-origin" value="FreeSWITCH"/-->
    <!--param name="rtp-ext-ip" value="auto"/-->
    <param name="rtp-ip" value="172.19.13.25"/>
    <param name="rtp-port-min" value="7001"/>
    <param name="rtp-port-max" value="10000"/>
    <!-- enable/disable rtcp support -->
    <param name="rtcp" value="1"/>
    <!-- rtcp bye policies (rtcp must be enabled first)
                      0 - disable rtcp bye
             1 - send rtcp bye at the end of session
             2 - send rtcp bye also at the end of each talkspurt (input)
    -->
    <param name="rtcp-bye" value="2"/>
    <!-- rtcp transmission interval in msec (set 0 to disable) -->
    <param name="rtcp-tx-interval" value="5000"/>
    <!-- period (timeout) to check for new rtcp messages in msec (set 0 to disable) -->
    <param name="rtcp-rx-resolution" value="1000"/>
    <!--param name="playout-delay" value="50"/-->
    <!--param name="max-playout-delay" value="200"/-->
    <!--param name="ptime" value="20"/-->
    <param name="codecs" value="PCMU PCMA L16/96/8000"/>
    <!-- Add any default MRCP params for SPEAK requests here -->
    <synthparams>
    </synthparams>

    <!-- Add any default MRCP params for RECOGNIZE requests here -->
    <recogparams>
       <param name="start-input-timers" value="true"/>
       <param name="no-input-timeout" value="7000"/>
       <param name="kill-on-barge-in" value="true"/>
    </recogparams>
  </profile>
</include>

代码排查

1、在使用mod_unimrcp时,sofia如何构建的SIP消息,详见mrcp_sofiasip_client_agent.c 中的mrcp_sofia_config_validatefan方法

在这里插入图片描述
如上图标红处,sofia模块是使用config->ext_ip属性来构造contact_str

2、config->ext_ip的读取位置,详见mod_unimrcp.c文件的process_mrcpv2_config方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值