freeswitch反注册记录

应用情景: 使用阿里服务器,落地使用本地的模拟线路(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[1]
destNumber = argv[2]

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>

 

 

转载于:https://www.cnblogs.com/logo-fox/p/5409074.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值