• 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>

     

  • 相关阅读:
    EyeWitness
    中间件解析漏洞
    反思
    【转载】python的logging模块
    RobotFramework中使用Exit For Loop If退出For循环
    python使用ssl的单向认证和双向认证的客户端代码
    使用iptables监测端口流量
    打开GUI面板通过可视化的形式来创建Vue项目
    C#程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
    递归算法
  • 原文地址:https://www.cnblogs.com/logo-fox/p/5409074.html
Copyright © 2020-2023  润新知