我是靠谱客的博主 悦耳鼠标,最近开发中收集的这篇文章主要介绍FreeSWITCH 对接IMS平台相关材料汇编,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

freeswitch与各种设备对接的成功配置,需要的请参考,有错误的地方请指导。

1、对接华为softco

中继配置

sip_profilesexternal

拨号规则

出局

confdialplandefault

--加拨9至softco softco侧配置对端SIP端口为5080

2、对接网络电话提供商

中继配置

sip_profilesexternal

<include>
    <gateway name="sip_isp">
      <param name="username" value="username"/>
      <param name="password" value="password"/>
      <param name="realm" value="$${local_ip_v4}"/>
      <param name="from-domain" value="sip.isp.com"/> 
    </gateway>
</include>

拨号规则

confdialplandefault

<include>
  <extension name="sip_isp_outbound">
    <condition field="destination_number" expression="^(1d{10})$">
    <action application="bridge" data="sofia/gateway/sip_isp/$1"/>
    </condition>
  </extension>
</include>

3、电信IMS对接

中继配置

sip_profilesexternal

<include>
<gateway name="gd_ims">
<param name="username" value="+8675512345678"/>
<param name="from-user" value="+8675512345678"/>
<param name="realm" value="$${local_ip_v4}"/>
<param name="auth-username" value="+8675512345678@gd.ctcims.cn"/>
<param name="proxy" value="gd.ctcims.cn"/>
<param name="from-domain" value="gd.ctcims.cn"/>
<param name="register-proxy" value="116.31.226.17"/>
<param name="outbound-proxy" value="bac01.sz.gd.ctcims.cn"/>
<param name="password" value="password"/>
<param name="register" value="true"/>
<param name="expire-seconds" value="3600"/>
<param name="retry-seconds" value="30"/>
<param name="ping" value="25"/>
<param name="context" value="public"/>
<param name="sip-ip" value="$${local_ip_v4}"/>
</gateway>
</include>



<!-- realm:域名 -->
<!-- username:认证的用户名 -->
<!-- password:认证的密码 -->
<!-- from-user:指定在SIP消息中的源用户信息,没有配置则默认和username相同 -->
<!-- from-domain:是指定域,它们会影响SIP中的“From”头域。 -->
<!-- regitster-proxy:表示注册的地址 -->
<!-- outbound-proxy:表示呼出时指向的地址,这里其实和注册地址是一致的 -->
<!-- register:是否注册 -->
<!-- expire-seconds:注册的间隔时间 -->
-----------------------------------
 

中继配置

sip_profilesexternal

拨号规则

出局

confdialplandefault

<include>
  <extension name="gd_ims_out">
    <condition field="destination_number" expression="^(0d{11}|0d{10}|1d{10}|1d{2}|1d{4}|[2-8]d{7}|9d{4}|9d{5})$">     <!--出局-->
      <action  application="start_dtmf_generate"/>  <!-- 解决不能二次拨号,深圳电信只支持inband收号方式-->
    <action application="set" data="effective_caller_id_number=+8675512345678"/><!-- 主叫号码 -->
    <action application="set" data="effective_caller_id_name=eSpace7950"/> <!-- 主叫设备名 -->
    <action application="bridge" data="sofia/gateway/gd_ims/$1@116.31.226.17"/>  <!-- 在openwrt需要添加“@目的IP(域名可能不行)”-->
    </condition>
  </extension>
</include>

拨号规则

入局

confdialplanpublic

<include>
  <extension name="ims_in_1">
  <!-- 转接不成功转语音信箱 -->
  <condition field="destination_number" expression="8675512345678$">
  <action application="set" data="call_timeout=30"/>
  <action application="set" data="hangup_after_bridge=true"/>
  <action application="set" data="continue_on_fail=true"/>
  <action application="transfer" data="1002 XML default"/>
  <action application="answer"/>
  <action application="sleep" data="1000"/>
  <action application="bridge" data="loopback/app=voicemail:default ${domain_name} 1002"/>
  </condition>
  </extension>
</include>

4、对接华为UAP6600

中继配置

sip_profilesexternal

拨号规则

出局

confdialplandefault

FreeSWICTCH —-> 语音网关 —-> 运营商 —-> 手机或固话

配置信息

中继配置
confsip_profilesexternal

二、配置外呼

首先你要有某个运营商提供的sip账号,该SIP账号(或提供该账号的设备)在 FreeSWITCH 中称为SIP网关(Gateway)。添加一个网关只需要在 conf/sip_profiles/external/中创建一个XML文件:内容是:SIP服务器地址,可以是IP或IP:端口号  SIP用户名   密码

<gateway name="gw1">
    <param name="realm" value="SIP服务器地址,可以是IP或IP:端口号"/>
    <param name="username" value="SIP用户名"/>
    <param name="password" value="密码"/>
</gateway>

重启FS,使修改生效

或者指令freeswitch> sofia profile external rescan

显示一下网关的注册状态:

freeswitch> sofia status

如果显示 gateway gw1 的状态是 REGED,则表明已正确地注册到了网关上。你可以先用命令试一下网关是否工作正常:

freeswitch> originate sofia/gateway/gw1/xxxxxx &echo

3.5.1 从某一分机上呼出

修改拨号计划,创建一个新的XML文件— conf/dialplan/default/call_out.xml,内容如下:

 
<include>
  <extension name="call out">
    <condition field="destination_number" expression="^0(d+)$">
      <action application="bridge" data="sofia/gateway/gw1/$1"/>
    </condition>
  </extension>
</include>

其中,“^0(d+)$”为正则表达式,“(d+)”匹配 0 后面的所有数字并存到变量$1中。然后通过bridge程序通过网关gw1打出该号码。当然,建立该XML后需要在控制台中执行reloadxml使之生效

3.5.2 呼入电话处理

创建以下XML文件并放到 conf/dialplan/public/my_did.xml中:

<include>
  <extension name="public_did">
    <condition field="destination_number" expression="^(你的DID)$">
      <action application="transfer" data="1000 XML default"/>
    </condition>
  </extension>
</include>

在FreeSWITCH中执行reloadxml使之生效。上述配置会将来话直接转接到分机 1000 上

4、总结:

FreeSWITCH的外呼场景主要通过配置网关注册、拨号计划来实现,实际上外呼中的呼叫、转接、会议都要用到这两个技术

网关如果在同一网段或者网关在FreeSWITCH的外网的话(实际上就是说FreeSWITCH可以直接访问到网关),就采用FreeSWITCH注册到网关或者指向网关的方式,这也是常用的方式。 如果网关在内网,而FreeSWITCH在外网的话,就只能采用内网网关注册到FreeSWITCH的方式。

拨号计划是 FreeSWITCH 中至关重要的一部分。它的主要作用就是对电话进行路由(从这一点上来说,相当于一个路由表)。说的简明一点,就是当一个用户拨号时,对用户所拨的号码进行分析,进而决定下一步该做什么。当然,实际上,它所能做的比你想象的要强大的多。

对接移动公司IMS:

移动的IMS对接都是注册的模式对接的,所以废话不多说,直接上gateway配置数据

<include>
<gateway name="8610xxxxxxx">     //此处的格式为86+区号+号码(区号不带0)
<param name="realm" value="ims.gd.chinamobile.com"/>  //运营商提供的域名
<param name="register-transport" value="udp"/>
<param name="username" value="8610xxxxxxx@ims.gd.chinamobile.com"/>
<param name="password" value="123456"/>
<param name="from-domain" value="ims.gd.chinamobile.com"/>
<param name="register-proxy" value="10.0.0.0"/>   //运营商地址
<param name="proxy" value="ims.gd.chinamobile.com"/>
<param name="register" value="true"/>
<param name="extension-in-contact" value="true"/>
<param name="extension" value="+8610xxxxxxx"/>
<param name="from-user" value="+8610xxxxxxx"/>
<param name="expire-seconds" value="3600"/>
<param name="caller-id-in-from" value="false"/>
</gateway>
</include>

至此网关处就已对接完毕,一个号码一个gateway,新增gateway可用sofia profile external rescan进行生效,若号码注销需要删除可用sofia profile external killgw 8610xxxxxxx进行删除。

跟移动对接需开启100rel功能,并将invite中的fmtp:101 0-16修改为0-15否则会导致通话接起秒断的现象。此处的修改在源码下./src/switch_core_media.c文件,进入文件搜索0-16

将上图两个地方的0-16修改为图中的0-15即可。

再将invite中的Supported: precondition,去掉,否则会导致通话异常。此处修改源码中的./src/mod/endpoints/mod_sofia/sofia.c文件搜索precondition,大致在3055行。去掉precondition即可,以上两个操作均需重新编译源码,并重启FS进程方可生效。

最后

以上就是悦耳鼠标为你收集整理的FreeSWITCH 对接IMS平台相关材料汇编的全部内容,希望文章能够帮你解决FreeSWITCH 对接IMS平台相关材料汇编所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部