简介
首先先说明一下落地的含义。用我简单粗糙的理解,就是通过SIP接入运营商呼到手机或者固话。在FreeSWITCH中使用SIP和运营商对接达到落地的效果。

对接方式
简单介绍一下,FreeSWITCH里Gateway(网关)的概念。网关又成协议转换器,通常都是进行协议转换。这里说的网关指的是语音网关,如常用的SIP网关,负责SIP协议和七号信令或ISDN PRI(模拟信号)之间的转换。但FreeSWITCH中的网关有时候不一定是真的网关,也可以是另外一个SIP Server(如另一个FreeSWITCH, Asterisk等)。但最终会有一个设备或系统,将SIP转换成模拟信号。简化一下过程,我们认为FreeSWITCH送到的就是真的网关。

其简化后的过程大致如下:

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

对接的最终目的都是为了将通话转到网关上,熟悉SIP协议的都知道,其实就是发INVITE消息。按照对接方式,分成认证和非认证。非认证又称IP对接,或者SIP中继对接。简单理解认证方式就是,FreeSWITCH无法随意的将呼叫送到网关上,需要经过网关的认证。非认证方式,只要知道网关地址,大家都可以发起INVITE。这里可能涉及到安全问题,但这不在我们的讨论范围内。

认证模式
FreeSWITCH需要建立一个网关并注册到网关设备上。见下面配置:

配置目录在FreeSWITCH 安装目录的下的conf/sip_profiles/external/ 增加一个test.xml

<gateway name="test"/>
        <param name="realm" value="www.example.com"/>
        <param name="register-proxy" value="192.168.1.8"/>
        <param name="username" value="4444"/>
        <param name="password" value="!@#qwe123"/>
        <param name="from-user" value="4444"/>
        <param name="from-domain" value="www.example.com"/>
        <param name="register" value="true"/>
        <param name="outbound-proxy" value="192.168.1.8"/>
        <param name="expire-seconds" value="120"/>
</gateway>

简单的介绍一些这几个参数:

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

在FreeSWITCH中配置如下路由,当外呼时就可以将呼叫送至网关上了。然后由网关出局

<extension name="callout">
      <condition field="destination_number" expression="^10086$">
    <action application="bridge" data="sofia/gateway/test/10086"/>
      </condition>
    </extension

非认证模式
非认证模式下,我们只需要知道网关的地址就可以了。当也分三种情况:

直接指向IP地址
    <extension name="callout">
      <condition field="destination_number" expression="^10086$">
    <action application="bridge" data="sofia/internal/192.168.1.8:5080/10086"/>
      </condition>
    </extension

增加非注册模式的网关
<gateway name="test"/>
        <param name="realm" value="www.example.com"/>
        <param name="register-proxy" value="192.168.1.8"/>
        <param name="username" value="4444"/>
        <param name="password" value="!@#qwe123"/>
        <param name="from-user" value="4444"/>
        <param name="from-domain" value="www.example.com"/>
        <param name="register" value="false"/>
        <param name="outbound-proxy" value="192.168.1.8"/>
        <param name="expire-seconds" value="120"/>
</gateway>

其中路由和认证模式的相同

<extension name="callout">
      <condition field="destination_number" expression="^10086$">
    <action application="bridge" data="sofia/gateway/test/10086"/>
      </condition>
    </extension

其它情况
有时候会有这样的场景,网关在内网中,而FreeSWITCH在公网中,FreeSWITCH无法直接指向内网地址,也没法注册到网关设备上。这个时候就需要用到NAT了,让内网网关注册到公网的FreeSWITCH上。内网注册过去之后,会在路由器上“打洞”,即做了一个内外网端口映射。FreeSWITCH无法直接到达网关,但是通过外网端口就能到达内网的网关了(这里由于NAT有多种类型,并不一定能成功,但通常情况下是可以的)。这时候假设内网网关以分机4444注册到FreeSWITCH上。(其实也可以用别的方式来做,比如在路由器上做端口映射,内网和外网做端口映射,不过这种方式不够灵活)

在FreeSWITCH的console里调用

sofia_contact 4444

得到结果

sofia/internal/sip:4444@171.221.76.7:17480

从这里我们可以知道网关对应的外网地址和端口,那只要把呼叫信息发到171.221.76.7:17480即可。但我们实际想呼叫的号码可能是手机号,或者固话,这里简单起见,还是用10086。就需要把这个4444号码替换成10086。那么需要配置路由如下:

<extension name="callout">
      <condition field="destination_number" expression="^10086$">
    <action application="bridge" data="${regex(${sofia_contact(internal/4444@${domain_name})}|^(.+)sip(.+)@(.+)|%1sip:10086@%3)}"/>
      </condition>
    </extension>

总结
FreeSWITCH和网关如果在同一网段或者网关在FreeSWITCH的外网的话(实际上就是说FreeSWITCH可以直接访问到网关),就采用FreeSWITCH注册到网关或者指向网关的方式,这也是常用的方式。 如果网关在内网,而FreeSWITCH在外网的话,就只能采用内网网关注册到FreeSWITCH的方式。
--------------------- 
作者:披荆又斩棘 
来源:CSDN 
原文:https://blog.csdn.net/liyang051/article/details/46739639 
版权声明:本文为博主原创文章,转载请附上博文链接!

使用FreeSWITCH SIP落地的配置总结相关推荐

  1. Freeswitch+Sip.js 早期媒体(回铃音)

    Freeswitch+Sip.js 早期媒体(Early Media) 在笔者早期的文章里,没有对早期媒体进行处理,选择了本地的媒体进行播放,在当时看来还可以接受,但是目前来看,体验很差,所以笔者花费 ...

  2. 流媒体服务器FreeSWITCH的安装、配置与启动

    在 CentOS7 下安装启动 FreeSWITCH 1.6 1. 下载源码 cd /usr/local/src git clone -b v1.6 https://freeswitch.org/st ...

  3. freeswitch SIP内呼与外呼配置

    今天我利用freeswitch 和 网关设备做了内呼和外呼 1, 设置如下: 2,找运维的人给映射了一个外网端口 a.b.c.d 3, SIP代理填的我的freeswitch的端口,另外一个是设备的f ...

  4. FreeSwitch Sip【转】

    在继续学习 FreeSWITCH 之前我们有必要来学习一下 SIP 协议,因为它是 FreeSWITCH 的核心.但即使如此,讲清楚 SIP 必然需要很大篇幅,本书是关于 FreeSWITCH 的,而 ...

  5. freeswitch的安装和配置 重点是端口设置

    呼入错误设置 添加链接描述 端口设置原文 ngrep linux 简单实用的抓包工具添加链接描述 freeswitch线上(阿里云)部署端口开放问题,解决freeswitch线上无法注册问题 5. f ...

  6. freeswitch阿里云安装配置文档

    2.1 安装 yum install git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpe ...

  7. Freeswitch一些高级功能-配置中文语音提示等

    1.批量创建用户 用户配置文件在conf/directory/default/目录下, 每个用户对应一个XML配置文件 Freeswitch默认提供了1000~1019这20个用户, 如果手动创建另一 ...

  8. vos3000如何检查落地网关配置正常,路由分析

    可以在"对接网关"或者"话机"上右键选择"路由分析" 填入呼入的主被叫号码(该号码一定要是原始的号码,没有经过对接或话机规整的) 1.点击查 ...

  9. 智能外呼系统相关资料总结

    以下是从零开始搭建智能外呼系统的过程中收集的一些资料,希望对你会有帮助. 1.如何从零开始搭建智能外呼系统 参考:https://blog.csdn.net/pA2elX78qaJTADH/artic ...

  10. freeswitch软电话配置、结合讯时网关,外线电话呼入、呼出配置

    文章目录 软电话配置 配置外部电话呼入sip软电话 配置sip软电话呼出 交换机后台配置 参考资料 软电话配置 不同的软电话配置大同小异.FreeSWITCH 默认配置了 1000 ~ 1019 共 ...

最新文章

  1. 如何设计一个通用的权限管理系统
  2. R语言实战应用精讲50篇(十六)--如何实现文字云可视化
  3. 内网通 去广告 代码_一文秒懂Facebook广告投放常见专业术语
  4. spring-boot注解详解(六)
  5. clickhouse官方文档_clickhouse分析:结合grafana和metabase完成监控和数据分析
  6. 【移动端html5】 android video播放进度精确控制
  7. PLSQL Developer连接数据库报错ora-12514解决
  8. RabbitMq(十二) 借用死信交换机实现延迟队列
  9. 原生JS那些事:原生JS添加和删除class类名
  10. postgres数据库授权失败
  11. hadoop使用场景
  12. 如何使用奥特歌词制作双语LRC字幕
  13. 突发!阿里巴巴大调整
  14. 深度学习WideDeep模型——记忆能力和泛化能力的综合
  15. openEuler-risc-v学习笔记
  16. python 处理锯齿波信号
  17. 十分钟掌握 “UML ” 的基本使用
  18. Day 41 Mysql高级操作
  19. Java SpringMVC+H5飞翔的小鸟游戏微信小程序源码
  20. 时钟偏差、延迟、不确定度、抖动 (skew,latency,uncertainty,jitter)

热门文章

  1. TraceWrite waittype
  2. css3实现loading动画效果
  3. KVO.非常简单的键值监听模式
  4. 建筑电气工程设计常用图形和文字符号_建筑电气施工图设计正误案例对比
  5. Sass--占位符 %placeholder
  6. 『TensorFlow』读书笔记_TFRecord学习
  7. 如何监控 Nginx?
  8. Activiz 使用笔记-4 数据源(2)
  9. Lucene为不同字段指定不同分词器(转)
  10. 大学的最后一年有一门课程叫“人生”。