概述

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

当呼叫是同一个入中继,但是有多条出中继时,需要对出中继做负载均衡,mod_distributor模块可以完成对应的配置和路由。

mod_distributor是一个轻量级的线路分发模块,配置简单,支持权重方式分发多条出中继。

环境

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

freeswitch:v1.10.7

GCC:4.8.5

APP示例

distributor的APP接口使用方法“${distributor(distributor_list)”。

<action application="bridge" data="sofia/gateway/${distributor(distributor_list)}/${destination_number}"/>

<action application="bridge" data="sofia/external/${destination_number}@${distributor(distributor_list)}"/>

配置&测试

distributor模块默认不编译,需要进入目录手动编译安装。

src/mod/applications/mod_distributor

make install

修改conf/autoload_configs/modules.conf.xml,加载distributor模块。

<load module="mod_distributor"/>

配置文件conf/autoload_configs/distributor.conf.xml,设置distributor列表。

<configuration name="distributor.conf" description="Distributor Configuration">

<lists>

<list name="test" total-weight="5">

<node name="10.55.55.138:5080" weight="1"/>

<node name="10.55.55.138:5090" weight="2"/>

<node name="10.55.55.138:15090" weight="2"/>

</list>

</lists>

</configuration>

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

<extension name="test" continue="false">

<condition field="destination_number" expression="^(\d+)$">

<action application="bridge" data="{sip_invite_call_id=${sip_call_id}}sofia/external/$1@${distributor(test)}"/>

</condition>

</extension>

刷新distributor配置数据。

reloadxml

distributor_ctl reload

发起呼叫10011->1002,三次的测试日志如下。

2022-12-13 15:37:37.150797 [INFO] mod_dialplan_xml.c:637 Processing 10011 <10011>->1002 in context public

...

Dialplan: sofia/external/10011@10.55.55.138 Action bridge({sip_invite_call_id=${sip_call_id}}sofia/external/1002@${distributor(test)})

...

EXECUTE sofia/external/10011@10.55.55.138 bridge({sip_invite_call_id=db46fa8f-f55b-123b-7d99-000c29a63969}sofia/external/1002@10.55.55.138:5080)

...

EXECUTE sofia/external/10011@10.55.55.138 bridge({sip_invite_call_id=16ef92f5-f55a-123b-7d99-000c29a63969}sofia/external/1002@10.55.55.138:5090)

...

EXECUTE sofia/external/10011@10.55.55.138 bridge({sip_invite_call_id=1b811933-f55a-123b-7d99-000c29a63969}sofia/external/1002@10.55.55.138:15090)

总结

mod_distributor模块功能简单清晰,配置方便。

在拨号计划的action中使用loop标记配合distributor,可以实现多条出中继的呼叫尝试。

空空如常

求真得真

freeswitch的distributor模块的更多相关文章

  1. FreeSWITCH 加载模块过程解读

    今天来学习FreeSWITCH 加载模块过程. 哪些模块需要编译,是由源码下的 modules.conf 文件决定的. 哪些模块在程序启动时自动加载,是由 freeswitch/conf/autolo ...

  2. freeswitch插件式模块接口实现方式

    概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便. 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式. 本文对fs的 ...

  3. freeswitch的话单模块

    概述 最近因为业务需要,在看freeswitch中话单相关的一些模块. 在voip的使用过程中,话单是重要的基础模块,涉及到计费和问题查找. 呼叫话单最重要的一点是稳定,不能有错误或遗漏. 本章对fs ...

  4. freeswitch的mod_curl模块

    概述 有时候,我们需要在呼叫的过程中,或过程后调用web api接口. freeswitch的mod_curl模块可以很方便的实现web api的接口调用. mod_curl模块默认不安装,需要进入模 ...

  5. freeswitch使用mod_shout模块播放mp3

    概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件. 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件. ...

  6. freeswitch编译mod_av模块

    需要先编译libav库 编译libav下载:git clone https://freeswitch.org/stash/scm/sd/libav.git cd libav ./configure - ...

  7. 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia

    SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...

  8. freeswitch新增模块API

    概述 上一章我们讲解了freeswitch的源码基本结构,以及如何新增一个插件式模块. freeswitch的架构非常适合这种业务开发模式,即以freeswitch的基本功能为开发平台,新增插件式模块 ...

  9. Freeswitch 添加可转码的G729编码

    默认情况下Freeswitch自带的G729模块是pass-through-并不支持转码. 不过我们依然有个好奇的心, 所以我们决定添加一个支持G729转码的模块到Freeswitch. 1. 下载m ...

  10. Freeswitch配置之sofia

    SIP模块 - mod_sofia SIP 模块是 FreeSWITCH的主要模块. 在 FreeSWITCH中,实现一些互联协议接口的模块称为 Endpoint.FreeSWITH支持很多的 End ...

随机推荐

  1. [ARC156C] Tree and LCS

    Problem Statement We have a tree $T$ with vertices numbered $1$ to $N$. The $i$-th edge of $T$ conne ...

  2. [ABC264Ex] Perfect Binary Tree

    Problem Statement We have a rooted tree with $N$ vertices numbered $1,2,\dots,N$. The tree is rooted ...

  3. 牛客刷java记录第5天

    第一题,下列代码运行结果是? class X { Y y = new Y(); public X() { System.out.print("X"); } } class Y { ...

  4. 使用Winform开发自定义用户控件,以及实现相关自定义事件的处理

    在我们一些非标的用户界面中,我们往往需要自定义用户控件界面,从而实现不同的内容展示和处理规则,本篇内容介绍使用Winform开发自定义用户控件,以及实现相关自定义事件的处理. 1.用户控件的界面分析 ...

  5. 新一代通信协议 - Socket.D

    一.简介 Socket.D 是一种二进制字节流传输协议,位于 OSI 模型中的5~6层,底层可以依赖 TCP.UDP.KCP.WebSocket 等传输层协议.由 Noear 开发.支持异步流处理.其 ...

  6. 如何更好的分析潜在人脉?聊聊华为云图引擎GES的Cypher子查询

    摘要:本文以华为云图引擎 GES 为例,来介绍如何使用图查询语言 Cypher 表达一些需要做数据局部遍历的场景. 本文分享自华为云社区<使用 Cypher 子查询进行图探索 -- 以华为云图引 ...

  7. 4种Spring Boot 实现通用 Auth 认证方式

    摘要: 文章介绍了 spring-boot 中实现通用 auth 的四种方式,包括传统 AOP.拦截器.参数解析器和过滤器,并提供了对应的实例代码,最后简单总结了下它们的执行顺序. 本文分享自华为云社 ...

  8. React Native UI界面还原,组件布局与动画效果

    写React Native UI和写 Android XML layout 布局 ,个人感觉是大同小异 在<ReactJS到React-Native,架构原理概述>里面提过 web 环境中 ...

  9. 在距离distribution 证书过期一个月(或被手动revoke了)的时候会受到apple的邮件

    ​ ​编辑 虽然distribution过期(或者被手动revoke)了,如果你的开发者账号是company(公司)类型或个人类型的,只要你的每年99$的开发者membership没有过期,就不会对已 ...

  10. 资源成本降低60%!火山引擎ByteHouse助力数字营销平台仟传网络降本增效

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   近日,中国知名内容社交平台整合营销企业仟传网络与火山引擎ByteHouse达成合作.仟传网络将通过火山引擎By ...