号码变换配置对接运营商IMS
概述
freeswitch是一款简单好用的VOIP开源软交换平台。
fs直接对接运营商,调试过程中的号码变换规则比较容易出问题。
本文档记录一个较为通用的对接IMS配置方案。
环境
CentOS 7.9
freeswitch 1.10.7
模块配置
号码变换主要使用mod_translate模块和dialplan拨号计划实现。
确认mod_translate模块有编译安装。
ll mod_translate*
-rwxr-xr-x. 1 root root 1295 Sep 1 2022 mod_translate.la
-rwxr-xr-x. 1 root root 81944 Sep 1 2022 mod_translate.so
确认mod_translate模块有配置启动。
grep mod_translate modules.conf.xml
<load module="mod_translate"/>
确认mod_translate模块启动正常。
./fs_cli -x "module_exists mod_translate"
true
模块启动正常,配置号码变换规则和拨号计划。
号码变换配置
号码变换的规则主要包括手机和固话。
送给运营商的主被叫号码,手机加前缀“+86”,固话带区号去0加前缀“+86”。
运营商送过来的被叫号码不变,主叫号码需要变换,手机去前缀“+86”,固话去前缀“+86”再加0。
修改conf/autoload_configs目录下的配置文件如下。
cat translate.conf.xml
<include>
<configuration name="translate.conf" description="Number Translation Rules">
<profiles>
<profile name="US">
<rule regex="^\+(\d+)$" replace="$1"/>
<rule regex="^(1[2-9]\d{2}[2-9]\d{6})$" replace="$1"/>
<rule regex="^([2-9]\d{2}[2-9]\d{6})$" replace="1$1"/>
<rule regex="^([2-9]\d{6})$" replace="1${areacode}$1"/>
<rule regex="^011(\d+)$" replace="$1"/>
</profile>
<profile name="GB">
<rule regex="^\+(\d+)$" replace="$1"/>
<rule regex="^$" replace="$1"/>
</profile>
<profile name="HK">
<rule regex="\+(\d+)$" replace="$1"/>
<rule regex="^(852\d{8})$" replace="$1"/>
<rule regex="^(\d{8})$" replace="852$1"/>
</profile>
<profile name="GB-TOSP-CALLER">
<rule regex="^0(\d+)$" replace="+86$1"/>
<rule regex="^(1\d+)$" replace="+86$1"/>
</profile>
<profile name="GB-TOSP-CALLEE">
<rule regex="^0(\d+)$" replace="+86$1"/>
<rule regex="^(1\d+)$" replace="+86$1"/>
</profile>
<profile name="GB-FROMSP-CALLER">
<rule regex="^\+86([2-9]\d+)$" replace="0$1"/>
<rule regex="^\+86(10\d+)$" replace="0$1"/>
<rule regex="^\+86(1\d+)$" replace="$1"/>
</profile>
<profile name="GB-FROMSP-CALLEE">
<rule regex="^(\d+)$" replace="$1"/>
</profile>
</profiles>
</configuration>
</include>
拨号计划
号码变换的执行过程配置在dialplan中,一般在呼叫的业务流程之前执行。
实例如下。
送给运营商的修改方式。
<extension name="TOSP-num-modify" continue="true">
<condition field="${sofia_profile_name}" expression="^external6666|external7777$" break="never">
<action application="set" data="effective_caller_id_name=${translate(${caller_id_name} GB-TOSP-CALLER)}" />
<action application="set" data="effective_caller_id_number=${translate(${caller_id_number} GB-TOSP-CALLER)}" />
<action application="set" data="destination_number=${translate(${destination_number} GB-TOSP-CALLEE)}"/>
</condition>
</extension>
运营商送过来的修改方式。
<extension name="FROMSP-num-modify" continue="true">
<condition field="${sip_network_ip}" expression="^1.2.3.4$" break="never">
<action application="set" data="effective_caller_id_name=${translate(${caller_id_name} GB-FROMSP-CALLER)}" />
<action application="set" data="effective_caller_id_number=${translate(${caller_id_number} GB-FROMSP-CALLER)}" />
<action application="set" data="destination_number=${translate(${destination_number} GB-FROMSP-CALLEE)}" />
</condition>
</extension>
呼叫测试
呼叫测试,查看日志如下。
2024-09-11 18:06:16.750792 [INFO] mod_translate.c:329 03761234567 GB-TOSP-CALLER
2024-09-11 18:06:16.750792 [NOTICE] mod_translate.c:348 Translated: +863761234567
2024-09-11 18:06:16.750792 [INFO] mod_translate.c:329 13712345678 GB-TOSP-CALLEE
2024-09-11 18:06:16.750792 [NOTICE] mod_translate.c:348 Translated: +8613712345678
总结
标准模板可以解决90%的问题,剩下10%需要定制。
空空如常
求真得真
号码变换配置对接运营商IMS的更多相关文章
- 华为S5700系列交换机AR配置静态IP双链路负载分担
适用于:有多个以太WAN口的机型. 业务需求: 运营商1分配的接口IP为100.100.1.2,子网掩码为255.255.255.252,网关IP为100.100.1.1. 运营商2分配的接口IP为2 ...
- Skype for Business Server 2015 企业语音部署和配置
Skype for Business Server 2015包含的企业语音功能可实现更丰富的通信和协作.例如,可以将企业语音部署配置为启用Skype for Business Server 2015客 ...
- Odometry的发布和发布odom到base_link的tf变换
转载自http://www.ncnynl.com/archives/201702/1328.html ROS发布nav_msgs/Odometry消息,以及通过tf从“odom”坐标系到“base_l ...
- HCIA-datacom 4.3 实验三:网络地址转换配置实验
实验介绍: 网络地址转换NAT(Network Address Translation)是将IP数据报文头中的IP地址转换为另一个IP地址的过程.作为减缓IP地址枯竭的一种过渡方案,NAT通过地址重用 ...
- [转载] Android逃逸技术汇编
本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘 要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉 ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
- OneAlert:国内首家 SaaS 模式的云告警平台
随着互联网行业的高速发展,企业 IT 应用环境日趋复杂.几分钟的故障就会严重到用户体验,那么如何有效降低IT故障带来的影响呢?权威数据表明,86%的企业认为建立有效的监控系统和告警系统.提升 IT 的 ...
- wavecom短信猫常用AT命令
wavecom短信猫常用AT命令 一.一般命令 1. AT+CGMI 给出模块厂商的标识. 2. AT+CGMM 获得模块标识.这个命令用来得到支持的频带 (GSM 900,DCS 1800 或PCS ...
- 公网IP和私有IP
IP地址是为了区分网络中不同主机所分配的一个地址,通过IP地址可以访问到每一台主机. IP地址分为公有地址和私有地址,公有地址由Internet NIC负责(比如中国互联网信息中心http://ip. ...
- 如何搭建并使用便携式 4G/LTE 伪基站研究移动安全
此文章PDF文档下载地址:点击下载 0x00 前言 在移动互联网深入普及和物联网开始规模应用的今天,网络安全公司怎能不研究移动安全,要研究移动安全,怎能没有4G/LTE伪基站研究测试环境? 本文介绍如 ...
随机推荐
- ELT已死,EtLT才是现代数据处理架构的终点!
提到数据处理,经常有人把它简称为"ETL".但仔细说来,数据处理经历了ETL.ELT.XX ETL(例如,Reverse ETL.Zero-ETL)到现在流行的EtLT架构几次更迭 ...
- 7E头的那些事儿(帧格式分析实例)
0. 前言 作为一名嵌入式工程师,经常需要通过UART与外设打交道,而对于串行总线来说,往往我们必须要进行帧同步.通常的做法是把信令包含在2个0x7E的中间. 除此之外还有HDLC.PPP等协议也会到 ...
- Python 潮流周刊#65:CSV 有点糟糕(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 折腾 Quickwit,Rust 编写的分布式搜索引擎-官方教程
快速上手 在本快速入门指南中,我们将安装 Quickwit,创建一个索引,添加文档,最后执行搜索查询.本指南中使用的所有 Quickwit 命令都在 CLI 参考文档 中进行了记录. https:// ...
- C# 全局异常捕获(转载)
C# 全局异常捕获 原文地址:https://www.cnblogs.com/tomahawk/articles/5993874.html 开发界有那么一个笑话,说是"「我爱你」三个字,讲出 ...
- 使用JDBC查询数据库会一次性加载所有数据吗
前几天有个小伙伴说他有个疑问:当我们发起一个查询的时候,数据库服务器是把所有结果集都准备好,然后一次性返回给应用程序服务吗(因为他们生产有个服务因为一个报表查询搞宕机了). 这样想的原因很简单,假设那 ...
- pyinstaller 打包 win32ctypes.pywin32.pywintypes.error: (225, '', '无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。')
背景: 使用python 写了一个程序,使用pyinstaller打包, 不使用-w --noconsole的命令打包隐藏命令行窗口时,是正常的, 但是使用-w或者--noconsole就会报错win ...
- Centos7.9安装Docker和Docker compose
什么是docker环境 Docker环境是指在计算机中安装和配置了Docker引擎的运行环境.Docker是一种容器化平台,它提供了一种轻量级的虚拟化技术,能够将应用程序及其依赖项打包成一个独立的容器 ...
- Openstack-删除卷:您被禁止执行 删除卷 (僵尸卷)
您被禁止执行 删除卷 (僵尸卷) 您被禁止执行 删除卷: 7f23a26a-27f2-4504-9191-0f5630a5bff5, 卷一直在创建,但实例已经被删除了 [root@controller ...
- Google sheet
最近做比较多 data migration 的东西. 当我们开发一个新的系统去替代一个旧系统时,通常就需要做大量的 migration 动作. 有好几个做法 我之前比较常用的的工具是 sql 和 c# ...