首页 > 其他分享 >freeswitch的gateway实现出中继的主备方案

freeswitch的gateway实现出中继的主备方案

时间:2022-12-29 16:26:20浏览次数:38  
标签:gw sofia 主备 external freeswitch 10011 138 gateway

 

 

概述

freeswitch是一款简单好用的VOIP开源软交换平台。

某些呼叫场景中,我们有2条出中继线路可选,2条出中继需要按照主备模式来配置,优先使用主中继呼叫,当主中继出现问题时,呼叫自动转移到备用中继呼叫。

本节中,我们利用gateway的option检测配置和正则表达式,组合实现中继线路的主备方案。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.10.7

GCC:4.8.5

APP接口

sofia模块接口,可以查看“<profile>”下对应的“UP”状态的gateway列表。

sofia profile <profile> gwlist up

 

mod_dptools模块接口,正则表达式规则匹配。

regex value expression results*

 

下面的表达式含义是,查看“external”下“UP”状态的gateway列表,如果其中包含名称为“gw-138-5080”的gateway,则返回“true”。

${regex(${sofia(profile external gwlist up)}|^(.*)(gw-138-5080)(.*)$)}

配置&测试

配置conf/sip_profile/external/gw-138-5080.xml,设置网关参数,gw-138-5090.xml和gw-138-15090.xml设置方法一样。

<include>

    <gateway name="gw-138-5080">

        <param name="username" value="not-used"/>

        <param name="realm" value="10.55.55.138:5080"/>

        <param name="password" value="not-used"/>

 

        <param name="register" value="false"/>

 

        <!--send an options ping every x seconds, failure will unregister and/or mark it down-->

        <param name="ping" value="20"/>

        <param name="ping-min" value="3"/>

        <param name="ping-max" value="6"/>

        <param name="ping-user-agent" value="proxy"/>

    </gateway>

</include>

 

修改配置文件conf/dialplan/test.xml,设置拨号计划。

先检查“gw-138-15090”gateway是否“UP”状态,如果是则使用“gw-138-15090”呼出,如果不是再检查“gw-138-5090”gateway是否“UP”状态并呼出。

<extension name="test-gw-master" continue="true">

    <condition field="${regex(${sofia(profile external gwlist up)}|^(.*)(gw-138-15090)(.*)$)}" expression="^true$" break="on-true">

        <action application="bridge" data="{sip_invite_call_id=${sip_call_id}}sofia/gateway/gw-138-15090/${destination_number}"/>

    </condition>

 

    <condition field="${regex(${sofia(profile external gwlist up)}|^(.*)(gw-138-5090)(.*)$)}" expression="^true$" break="on-true">

        <action application="bridge" data="{sip_invite_call_id=${sip_call_id}}sofia/gateway/gw-138-5090/${destination_number}"/>

    </condition>

</extension>

 

发起呼叫10011->1002,测试日志如下,符合预期流程,使用“gw-138-5090”gateway呼出。

2022-12-15 11:27:15.896136 [INFO] mod_dialplan_xml.c:637 Processing 10011 <10011>->1002 in context public

...

Dialplan: sofia/external/[email protected] parsing [public->test-gw-master] continue=true

Dialplan: sofia/external/[email protected] Regex (FAIL) [test-gw-master] ${regex(${sofia(profile external gwlist up)}|^(.*)(gw-138-15090)(.*)$)}(false) =~ /^true$/ break=on-true

Dialplan: sofia/external/[email protected] Regex (PASS) [test-gw-master] ${regex(${sofia(profile external gwlist up)}|^(.*)(gw-138-5090)(.*)$)}(true) =~ /^true$/ break=on-true

Dialplan: sofia/external/[email protected] Action bridge({sip_invite_call_id=${sip_call_id}}sofia/gateway/gw-138-5090/${destination_number})

...

EXECUTE sofia/external/[email protected] bridge({sip_invite_call_id=36bdeb5a-f6cb-123b-7d99-000c29a63969}sofia/gateway/gw-138-5090/1002)

总结

freeswitch中功能接口繁多,组合使用会有意想不到的收获。

fs在设计之初,应该也是考虑到通过不同的功能接口以搭积木的方式实现灵活复杂的呼叫流程。

 

空空如常

求真得真

标签:gw,sofia,主备,external,freeswitch,10011,138,gateway
From: https://www.cnblogs.com/qiuzhendezhen/p/17012869.html

相关文章

  • API Key Management with API Portal 和 Spring Cloud Gateway for Kubernetes
    IgnacioLozano,KarinePires和ChrisSterling为这篇博文做出了贡献。在当今的数字化转型世界中,API几乎存在于每个软件产品中。许多团队负责部署和管理大型API组合。但是,A......
  • FreeSWITCH使用ODBC
    本文更新于2022-04-10,使用Debian10、FreeSWITCH1.10.7、MySQL5.7.35。安装ODBC:sudoaptinstallunixodbcunixodbc-dev安装ODBC的MySQL驱动程序:wgethttps://down......
  • freeswitch对媒体的处理有三种方式. freeswitch媒体转发 freeswitch RTP转发
     freeswitch对媒体的处理有三种方式: freeswitch对媒体的处理有三种方式.  freeswitch媒体转发 freeswitchRTP转发  媒体代理方式a.默认方式 媒体通过free......
  • Gateway
    Gateway—SpringCloud微服务网关组件一、SpringCloudGateway简介1.为什么要用Gateway?在微服务架构中,通常一个系统会被拆分为多个微服务,微服务之间的调用可以用OpenFeign,但......
  • FreeSWITCH编译加载新模块
    本文更新于2022-05-03,使用FreeSWITCH1.10.7。以下示例,假定源代码目录为/usr/src/freeswitch,安装目录为/usr/local/freeswitch,安装的新模块为mod_say_zh。如模块未编译......
  • Gateway
    Gateway—SpringCloud微服务网关组件一、SpringCloudGateway简介1.为什么要用Gateway?在微服务架构中,通常一个系统会被拆分为多个微服务,微服务之间的调用可以用......
  • Prometheus监控之pushgateway安装配置
    一、简介1、介绍1、pushgateway是什么pushgateway是另一种数据采集的方式,采用被动推送来获取监控数据的prometheus插件,它可以单独运行在任何节点上,并不一定要运行在被监控的......
  • Prometheus pushgateway(不发布)
    一.概述 前面讲到Exporter章节时,讲到了Prometheus服务器运行作业以从目标中获取指标。而指标的获取均是基于pull,即拉取模式的架构。然而在某些情况下,会出现无法从中......
  • 在同一台主机启动多个FreeSWITCH实例
    本文更新于2022-04-23,使用FreeSWITCH1.10.7。假设已经在/usr/local/freeswitch安装FreeSWITCH,并在此目录启动一个实例。现需在另一个目录(笔者使用/usr/local/freeswitch2......
  • 在同一台主机启动多个FreeSWITCH实例
    本文更新于2022-04-23,使用FreeSWITCH1.10.7。假设已经在/usr/local/freeswitch安装FreeSWITCH,并在此目录启动一个实例。现需在另一个目录(笔者使用/usr/local/freeswitch2......