freeswitch对接其它SIP设备

本文介绍如何使用freeswitch 1.6.8版本在Debian 8.5_x64操作系统上作为主叫和被叫设备与其他SIP设备进行对接的方法。包括通过5080端口直接呼入的配置,以及使用SIP URI格式和网关方式进行主叫设备的对接步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天用到freeswitch对接其它设备方面的知识,这里整理下,也方便我以后查阅。

  • 操作系统:debian8.5_x64
  • freeswitch 版本 : 1.6.8

一、freeswitch作为被叫设备

freeswitch作为被叫设备和其它设备对接的情况比较简单,可以直接通过5080端口呼入。
freeswitch默认配置默认开启5080端口的对接(conf/dialplan/public.xml中关于public):

<extension name="public_extensions">
    <condition field="destination_number" expression="^(10[01][0-9])$">
        <action application="transfer" data="$1 XML default"/>
    </condition>
</extension>

二、freeswitch作为主叫设备

这里主要描述下freeswitch作为主叫设备怎么对接其它sip设备(使用sipp模拟)。

HostA : 192.168.1.100
HostB : 192.168.1.101

其中HostA上安装freeswitch,HostB使用sipp模拟其它设备。

使用sip uri格式对接

1、编辑A机中 conf/dialplan/public.xml 文件 ,添加如下extension :

 <extension name="hostB">
        <condition field="destination_number" expression="^0(.*)$">
                <action application="bridge" data="sofia/external/sip:$1@192.168.168.101:5080" />
        </condition>
 </extension>

2、B机上使用sipp模拟uas设备,命令如下:

sipp -sn uas -p 5080

A机重新加载xml文件( F6 或 reloadxml ),在A的1000话机上拨打号码 01234 即可看到对接效果。

使用网关对接

1、在A机上创建 conf/sip_profiles/external/gw_a.xml 文件,添加如下内容:

    <include>
      <gateway name="gw_A">
        <param name="username" value="anonymous"/>
        <param name="from-user" value=""/>
        <param name="password" value=""/>
        <param name="outbound-proxy" value="192.168.1.101:5080"/>
        <param name="register-proxy" value="192.168.1.101:5080"/>
        <param name="expire-seconds" value="120"/>
        <param name="register" value="false"/>
        <param name="register-transport" value="UDP"/>
        <param name="caller-id-in-from" value="true"/>
        <param name="extension-in-contact" value="true"/>
        <variables>
          <variable name="gateway_name" value="gw_A"/>          
        </variables>
      </gateway>
    </include>    

2、打开A机中 conf/dialplan/public.xml 文件 ,添加如下extension :

    <extension name="gw_A">
            <condition field="destination_number" expression="^9(.*)$">
                <action application="bridge" data="sofia/gateway/gw_A/$1"/>
            </condition>
    </extension>

3、B机上使用sipp模拟uas设备,命令如下:

sipp -sn uas -p 5080

4、加载网关配置,需在A机器执行如下命令:

sofia profile external rescan

A机重新加载xml文件( F6 或 reloadxml ),在A的1000话机上拨打号码 91234 即可看到对接效果。

本文github地址:

https://github.com/mike-zhang/mikeBlogEssays/blob/master/2016/20160916_freeswitch对接其它SIP设备.md

欢迎补充 

### FreeSWITCHVOS集成的解决方案 FreeSWITCH 是一种开源的电信级软交换平台,支持多种协议和功能扩展。要将其与 VOS(Voice Operation System 或其他类似的语音处理系统)对接,通常需要考虑以下几个方面: #### 1. 协议兼容性 FreeSWITCH 支持 SIP (Session Initiation Protocol),这是 VoIP 中最常用的通信协议之一。大多数 VOS 平台也基于 SIP 进行交互。因此,确保双方都配置为使用标准 SIP 协议会显著简化集成过程[^2]。 #### 2. 配置 FreeSWITCHSIP 模块 为了使 FreeSWITCH 能够作为中继服务运行并与 VOS 对接,需调整其内部设置文件 `sip_profiles/external.xml` 来定义外部连接参数。以下是基本模板示例: ```xml <configuration name="sip_profiles"> <profiles> <profile name="external"> <param name="context" value="public"/> <param name="register-string" value="{presence_id=${dialed_user}@${domain}}"/> <!-- 添加对方服务器地址 --> <param name="exten-on-fail" value="h"/> <param name="dtmf-type" value="rfc2833"/> <param name="auth-calls" value="true"/> </profile> </profiles> </configuration> ``` 此部分允许指定目标系统的 IP 地址和其他必要认证信息[^3]。 #### 3. 实现回拨逻辑 当提到“回拨线路”,意味着可能涉及先挂断当前通话再发起新呼叫的操作流程。这可以通过编写自定义脚本来完成,在 Lua 或者 ESL (Event Socket Library) 上实现自动化控制。下面是一个简单的例子展示如何通过 API 命令触发新的外呼请求: ```lua -- 使用ESL库加载环境变量并建立socket链接 local socket = require "esocket" connection, err = socket.connect("127.0.0.1", 8021) if not connection then error(err) end username = 'admin' password = 'ClueCon' -- 登录到FS管理接口 result,err=connection:send('auth '..password..'\n') print(result) -- 发起一个新的电话拨打动作 destination_number="+1234567890" source_extension="1000" dial_command='bgapi originate user/' .. source_extension .. ' &bridge(sofia/gateway/mygw/' .. destination_number .. ')' result,err=connection:send(dial_command..'\n') print(result) ``` 这段代码展示了如何利用 Event Socket 创建背景进程来执行异步操作,从而满足复杂业务场景下的需求[^4]。 #### 4. 安全性和性能优化建议 - **安全性**: 设置严格的防火墙规则只开放必需端口;启用 TLS 加密保护数据传输安全。 - **性能调优**: 根据实际负载情况调节内存分配策略以及线程池大小等资源限制条件。 以上方法提供了从基础架构搭建直至高级特性应用的一整套思路框架供参考实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值