• freeswitch号码变化方案


     

    概述

    freeswitch是一款简单易用的开源音视频软交换平台。

    在生产环境中,由于各个线路的号码规则并不统一,经常需要针对中继线路做号码变换的方案。

    本文主要介绍fs中有哪些可选的号码变换方案。

    环境

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

    freeswitch:v1.8.7

    GCC:4.8.5

    拨号计划

    拨号计划中,condition的匹配项配置中,可以对号码进行正则匹配,并根据格式做简单的号码变换功能。

          

                 

                        

                 

          

          

                 

                        

                 

          

          

                 

                      

                 

          

          

                 

                      

                 

          

    test0中,对被叫号码删除了号码开头的‘test’字符串。

    test1中,对被叫号码删除了号码开头的‘000‘字符串。

    test2中,对被叫号码删除了号码中‘;‘后的部分。

    test3中,号码不变。

    regex接口

    mod_dptools: regex接口函数。用法如下。

    regex value expression results*

    app接口返回‘0555555555‘。

    freeswitch@localhost.localdomain> regex 61555555555|^61([0-9]{9})$|0%1

    0555555555

    app接口返回true。

    freeswitch@localhost.localdomain> regex 61555555555|^61([0-9]{9})$

    true

    拨号计划的实例。

    mod_translate

    mod_translate模块通过配置文件和接口形式,支持对号码格式的更新,灵活方便。

    并且在拨号计划中,使用translate模块可以在进入拨号计划之前对号码进行变换,这种场景在CDR话单中会有用处。

    mod_translate模块默认是不编译安装的,要自行编译安装启动。

    配置文件translate.conf.xml。

     

       

         

                 

                 

                 

                 

                 

         

         

                 

                 

         

         

                 

                 

                 

         

       

     

    API接口。

    translate []

    APP接口。

    实例1。

    freeswitch@localhost.localdomain> translate +86123456 GB

    2022-09-01 14:24:49.257196 [INFO] mod_translate.c:329 +86123456 GB

    86123456

    2022-09-01 14:24:49.257196 [DEBUG] mod_translate.c:128 translating [+86123456] against [GB] profile

    2022-09-01 14:24:49.257196 [DEBUG] mod_translate.c:137 +86123456 =~ /^\+(\d+)$/

    2022-09-01 14:24:49.257196 [NOTICE] mod_translate.c:348 Translated: 86123456

    实例2。

    freeswitch@localhost.localdomain> translate +852123456 HK

    2022-09-01 14:26:37.117176 [INFO] mod_translate.c:329 +852123456 HK

    2022-09-01 14:26:37.117176 [DEBUG] mod_translate.c:128 translating [+852123456] against [HK] profile

    2022-09-01 14:26:37.117176 [DEBUG] mod_translate.c:137 +852123456 =~ /\+(\d+)$/

    2022-09-01 14:26:37.117176 [NOTICE] mod_translate.c:348 Translated: 852123456

    852123456

    freeswitch@localhost.localdomain> translate 12345678 HK

    2022-09-01 14:29:29.517186 [INFO] mod_translate.c:329 12345678 HK

    85212345678

    2022-09-01 14:29:29.517186 [DEBUG] mod_translate.c:128 translating [12345678] against [HK] profile

    2022-09-01 14:29:29.517186 [DEBUG] mod_translate.c:137 12345678 =~ /\+(\d+)$/

    2022-09-01 14:29:29.517186 [DEBUG] mod_translate.c:137 12345678 =~ /^(852\d{8})$/

    2022-09-01 14:29:29.517186 [DEBUG] mod_translate.c:137 12345678 =~ /^(\d{8})$/

    2022-09-01 14:29:29.517186 [NOTICE] mod_translate.c:348 Translated: 85212345678

    总结

    freeswitch中对正则表达式的支持有多种形式。

    正则表达式对于常见的号码变换场景基本可以完美支持。

    mod_translate模块很强大,可以深挖一下逻辑。

    空空如常

    求真得真

  • 相关阅读:
    一文彻底熟练掌握并使用Java的NIO操作
    【AUTOSAR中断管理】TC3XX中断系统介绍
    软件测试这些基本类型你知道吗?
    JAVA 虚拟机的最常见选项配置
    从硬件到软件:揭秘磁盘结构和文件系统组织
    C/C++输出第二个整数 2019年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
    支持目标打卡,活力三环让运动更有趣
    Anaconda 快速将某个虚拟环境A中的包在另一个虚拟环境B中安装
    /run/udev/data 磁盘满
    eclipse创建Maven项目(保姆级教学)
  • 原文地址:https://blog.csdn.net/qiuzhendezhen/article/details/126769430