号码变换配置对接运营商IMS

news/2025/1/12 18:15:16/文章来源:https://www.cnblogs.com/qiuzhendezhen/p/18520954

 

概述

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%需要定制。

 

空空如常

求真得真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825338.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea上Git仓库不见了是什么原因

在使用IntelliJ IDEA进行项目开发时,Git仓库突然消失是开发者常遇到的问题。该问题可能由多个因素引起,包括:1.环境配置问题;2.软件或插件更新;3.目录结构变更;4.用户权限问题;5.其他软件干扰。理解这些因素并采取相应的解决措施,不仅能快速恢复Git仓库,还能避免类似问…

【算法学习】扫描线

这篇题解写的难以言喻,可能只有我能看的懂! 前言 虽然我觉得这个算法目前不太可能会考,但是我觉得挺有意思的,而且学个算法也挺好,我是为自己学的!!! 定义 扫描线可以求二维图形的面积,也可以求周长等多种用途…… P5490 【模板】扫描线 & 矩形面积并 这就是扫描线…

leetcode 740 删除并获得点数

740 删除并获得点数 题意 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。…

Navicat 17下载与安装

1、安装包 Navicat 17: 链接:https://pan.quark.cn/s/c75e892c4705 提取码:YvyF Navicat 16: 链接:https://pan.quark.cn/s/63c07b20ea7b提取码:B9ij 2、安装教程(这里以安装Navicat 17 为例) 1) 如之前已安装的需卸载当前Navicat,如未安装,直接双击无限试用…

gitlab怎么保护分支

​GitLab作为一个流行的版本控制工具其中“分支保护”是一个关键功能,用以防止开发过程中的不当操作对代码造成不可逆的影响。本文将指导你如何在GitLab中保护分支:1.理解保护分支的重要性;2.学会使用GitLab的界面进行分支的保护操作;3.了解与合并请求的关联使用;4.探讨在…

[编程笔记] 搞人心态的代码含毒事件 “svn无法成功完成操作因为文件包含病毒或潜在的垃圾软件”

svn无法成功完成操作因为文件包含病毒或潜在的垃圾软件,Windows Defender误判?今天突然冒出来的问题,烦死了!     svn拉取代码报毒了,不用想,基本就是下面几个可能性:1、某人提交的代码有毒2、电脑上的第三方杀毒软件引发3、Windows Defender误判报毒的代码是一个dl…

AI作文批阅,AI素材管理……璞华集团携多款明星产品亮相智能社会治理论坛

2024年10月25日,金秋十月的璀璨时节,备受瞩目的第二届智能社会治理论坛暨中国光谷人工智能艺术大会在中国光谷盛大启幕。此次论坛汇聚了人工智能领域的顶尖智慧,共同探讨人工智能技术的最新突破与智能社会治理模式的创新路径,同时强调了科技与文化融合的无限可能。璞华集团…

有Redis为什么还要本地缓存?谈谈你对本地缓存的理解?

本地缓存是将数据存储在应用程序所在的本地内存中的缓存方式。既然,已经有了 Redis 可以实现分布式缓存了,为什么还需要本地缓存呢?接下来,我们一起来看。 为什么需要本地缓存? 尽管已经有 Redis 缓存了,但本地缓存也是非常有必要的,因为它有以下优点:速度优势:本地缓…

Adobe After Effects各版本安装包下载与安装

1、安装包我用夸克网盘分享了 After Effects 2024: 链接:https://pan.quark.cn/s/fac88adbac44 提取码:9ZMW After Effects 2023: 链接:https://pan.quark.cn/s/d41a0a447b93 提取码:4pwM After Effects 2022: 链接:https://pan.quark.cn/s/0070a59da58d 提取码:Eij1 Af…

Adobe InDesign 各版本下载与安装

1、安装包我用夸克网盘分享了「Adobe InDesign 2023.rar」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan.quark.cn/s/526c259dad6f 提取码:MfMXAdobe InDesign 2022: 链接:https://pan.quark.cn/s/c7ee80a21…

井底车场人员进入识别智慧矿山一体机人车防碰撞识别:矿山AI识别算法是如何训练的?

智慧矿山一体机是为矿山环境量身定制的智能设备,其核心任务是预防和减少重大安全风险,并充分利用边缘计算的视频智能识别技术。该设备能够提供包括安全监控、设备状态监测和灾害预警在内的多种智能化功能,完全满足矿山场景视频智能化建设的技术规范和验收标准。训练矿山视频…

Adobe Premiere pro 2022/2021/2020/2019/2018/2015 cc下载与安装

1、安装包下载Adobe Premiere pro 2022: 链接:https://pan.quark.cn/s/33db77cfb56b 提取码:7dbHAdobe Premiere pro 中文破解版: 链接:https://pan.quark.cn/s/c81bfd04e2aa 提取码:tNk1Adobe Premiere pro 2020 绿色精简: 链接:https://pan.quark.cn/s/69496dcc7351 …