应用情景: 使用阿里服务器,落地使用本地的模拟线路(O口网关)。

1、FreeSWITCH 服务器开一个账号,比如 5000 internal , O口 SIP设置页面按照网关注册 5000 的账号信息。

2、dialplan 中添加拨号规则:

<condition field="destination_number" expression="^(\d{8,12})$">
<action application="lua" data="reregister.lua 5000 $1"/>
</condition>

3、FreeSWITCH scripts/ 目录下 生产如下 reregister.lua :

gatewayNumber = argv[]
destNumber = argv[] api = freeswitch.API();
-- 获取网关注册的地址,主叫号码替换
local domain = freeswitch.getGlobalVariable("domain");
local sofiaContactStr = api:executeString("sofia_contact " .. gatewayNumber .."@" .. domain);
local dialStr = string.gsub(sofiaContactStr, gatewayNumber, destNumber); -- bridge到被叫号码
session:execute("bridge" , dialStr);

当然还有最方便和直接的方式,直接在dialplan中进行替换:

最直接方式还是在拨号规则中直接配置:
<include>
<extension name="gopstn">
<condition field="destination_number" expression="^9(.*)$">
<action application="bridge" data="sofia/internal/sip:$1${regex(${sofia_contact(user/3000)}|^sofia/internal/sip:(\d+)(.*)|$2)}"/>
</condition>
</extension>
</include>
如:

    ${sofia_contact(user/3000)} ==> sofia/internal/sip:3000@192.168.5.58:5060
    ${regex(${sofia_contact(user/3000)}|^sofia/internal/sip:(\d+)(.*)|$2)}  ==> @192.168.5.58:5060

    经过拼接和组装,一个替换过的呼叫字符串就组装好了。

或者:

<include>
<extension name="gopstn">
<condition field="destination_number" expression="^9(.*)$">
<action application="bridge" data="${replace(${sofia_contact(user/6003)}|6003|$1)}"/>
</condition>
</extension>
</include>

freeswitch反注册记录的更多相关文章

  1. 【Demo 0025】注册/反注册窗体类RegisterClassEx/UnregisterClass

    所有窗体在创建前都必须注册窗体类,只有注册的窗体类才被系统认知并允许实例化,换句话说通过注册告诉进程窗体管理器此类窗体的属性如: 背景色,窗体上的鼠标样式以及窗体事件处理函数等;  有一些控件类系统自 ...

  2. springcloud 服务注册、反注册 AOP 拦截,实现自定义功能

    @Aspect@Component@Order(1000)public class EurekaServerAspect {private Logger logger = Logger.getLogg ...

  3. Android BroadcastReceiver 注册和反注册

    说起来这个问题很简单,只要注册和反注册成对出现就行,好像很多教材都是如此介绍.但实际开发中,对广播注册和反注册的时机把握还是很重要的. 关于广BroadcastReceiver注册和反注册时机,主要有 ...

  4. 7.Go退出向Consuk反注册服务,优雅关闭服务

    注册和反注册代码 package utils import ( consulapi "github.com/hashicorp/consul/api" "log" ...

  5. ActiveX控件的注册和反注册

    原文转自 https://blog.csdn.net/piaopiaopiaopiaopiao/article/details/41649495 ActiveX控件,需要注册之后才能使用. 注意:注册 ...

  6. dll的注册与反注册

    regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是:regsvr32 [/i[:cmdline]] DLL文件名命令可以在"开始→运行 ...

  7. apply-register-acl 参数允许FreeSWITCH分机注册/拨打不验证密码

    今天调试 发现 注册的分机 的 `Auth-User` 居然是 `unknown` !!! 怎么回事? 仔细对比检查 发现, internal profile 指定了 `apply-register- ...

  8. FreeSwitch安装配置记录

    安装FreeSwitch 主要命令如下: git clone -b v1.2.stable git://git.freeswitch.org/freeswitch.gitcd freeswitch/. ...

  9. RedGate .NET Reflector注册问题(反注册)

    Reflector分为桌面版和VS集成版本,当我们使用注册机注册的时候如果注册了Standvard版本,那么我们的VS就不能集成查看,也不能Debug,那么这 显然不是我们想要的,我们会选择重新注册, ...

随机推荐

  1. Set接口HashSet实现类

    java.util.Set接口 extends Collection接口 Set特点: 1.不允许有重复的元素 2.没有索引,没有带索引的方法,也不能使用普通的for遍历 java.util.Hash ...

  2. 关于PHP中的全局变量global和$GLOBALS的不同区分

    1.global Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件. 但是在函数体内定义的global变量,函数体 ...

  3. RNN

    在DNN中,当前输出层的值只和当前输入值有关系.如果当前输出值不仅依赖当前输入值,也依赖于前面时刻的输入值,那么DNN就不适用了.因此也就有了RNN. 一.RNN结构 这是最简单的RNN.其中Xt是t ...

  4. Docker 获取镜像 - 一

    docker  images docker 镜像获取方式: 1.pull 可以直接从网上拉取: 2.import  可以从现有容器打包成一个镜像: 3.commit 可以从现有容器一个镜像: 4.bu ...

  5. C++ 变量的引用 &

    创建变量的引用:int &a = b; 引用变量a是变量b的别名:是传址操作,把变量b的数据地址赋值给变量a,a和b指向同一个数据 主要用途:用作函数的形参,通过将引用变量用作参数,函数将使用 ...

  6. cpp #,##

    #define语句中的#是把参数字符串化,##是连接两个参数成为一个整体. #define FACTORY_REF(name) { #name, Make##name } 中#name就是将传入的na ...

  7. 小程序前端防止重复点击请求api的简陋方法

    upload: function () { let that = this; let {uploadFlag} = that.data; if (that.data.uploadFlag) { ret ...

  8. iTOP-6818开发板支持AXP228电源管理[官方推荐最佳匹配]_支持动态调频

    iTOP-6818开发板与4418开发板共兼容同一底板: 核心板:::::: 尺寸 50mm*60mm 高度 核心板连接器组合高度1.5mm PCB层数 6层PCB沉金设计 4418 CPU ARM ...

  9. 更新glibc版本,有问题,有三篇博客的命令看不懂

    https://blog.csdn.net/glongljl/article/details/80156243 https://blog.csdn.net/officercat/article/det ...

  10. proxysql 系列 ~ 高可用架构

    一 整体架构二 proxysql层    proxysql+keepalived对外提供vip    1  这里有一点要注意,虽然keepalived有脑裂危险,但是对于向proxysql这种无状态中 ...