利用freeswitc服务器对接其他sip服务器 进行电话接入

linux 安装freeswitch

我这是制作的freeswitch的docker
详情查看 github: https://github.com/529700260/freeswitch

docker-compose 部署

docker-compose.yml文件
version: ‘2.1’
services:
sip_gsm4:
image: daocloud.io/mboss/docker_freeswitch
container_name: sip_gsm4
mem_limit: 4G
memswap_limit: 8G
restart: always
volumes:
- /home/gsm4/services/api/freeswitch/config/:/etc/freeswitch/
- /home/gsm4/services/api/freeswitch/Jar:/var/www
ports:
- “10031:22”
- “5066:5066”
- “5060:5060”
- “5080:5080”
- “5060:5060/udp”
- “5080:5080/udp”
- “8021:8021”
- “7443:7443”
- “16384-16584:16384-16584/udp”
command: [‘freeswitchClient-1.0-SNAPSHOT’]
这里是把freeswitch的配置文件config 映射到了宿主机。
这里自己还写了一个freeswitchClient-1.0-SNAPSHOT.jar的spring boot后端程序 监听freeswitch的拨打电话接听电话记录和录音。

freeswitch的conf文件配置

  1. 我这是freeswitch使用了2个号码 2010,1008两个。
    2010 当这边的座机,1008当这边的网页端使用的号码
    配置号码 2010 config->directory->2010.xml
    config->directory->1008.xml
  2. 配置 config->dialplan->default->call_out.xml
<include>
  <!-- 固化机呼叫下面设备 -->
  <extension name="2010 call out">
    <condition field="caller_id_number" expression="^(2010)$" />
    <condition field="destination_number" expression="^0(\d+)$">
      <action application="export" data="single_call=true" />
      <action application="export" data="execute_on_answer=record_session /var/www/${uuid}.wav"/>
      <action application="bridge" data="sofia/gateway/gw1/$1"/>
    </condition>
  </extension>
  <!-- 网页直接呼叫下面设备 -->
  <extension name="1008 call out">
    <condition field="caller_id_number" expression="^(1008)$" />
    <condition field="destination_number" expression="^0(\d+)$" />
    <condition field="${conference $1 list count}" expression="^(?!\d)" />
    <condition field="destination_number" expression="^0(\d+)$">
      <action application="export" data="single_call=true" />
      <action application="set" data="count=${conference count}"/>
      <action application="set" data="user_count=${conference $1 list count}"/>
      <action application="set" data="res2=${conference $1 bgdial sofia/gateway/gw1/$1 1005 $1}"/>
      <!-- <action application="set" data="res2=${bgapi originate {origination_caller_id_number=$1}sofia/gateway/gw1/$1 &conference($1@default+flags{vmute|nomoh})}"/> -->
      <action application="set" data="res1=${bgapi originate {origination_caller_id_number=$1}user/2010 &conference($1@default+flags{endconf|nomoh|vmute})}"/>
      <action application="answer"/>
      <action application="hangup"/>
    </condition>
  </extension>
</include>
  1. 配置 config->dialplan->public.xml
<extension name="public_extensions">
  <condition field="destination_number" expression="1005">
    <action application="export" data="single_call=true" />
    <action application="export" data="execute_on_answer=record_session /var/www/${uuid}.wav"/>
    <action application="transfer" data="2010 XML default"/>
  </condition>
</extension>
  1. 配置 sip_profiles->gw1.xml
<gateway name="gw1"> 
<param name="realm" value="172.16.1.76"/>   对方sip服务器ip
<param name="username" value="1005"/>     对方给我们的号码
<param name="password" value="MQ^~jZ6NPehbcvbb"/>  //对方给的密码
<param name="register" value="true" />
<param name="caller-id-in-from" value="true"/>
5. 配置 sip_profiles->internal.xml
  <param name="ext-rtp-ip" value="20.20.20.20" />  //自己服务器外网ip
    <param name="ext-sip-ip" value="20.20.20.20" />
  1. 配置 sip_profiles->external.xml
   <param name="rtp-ip" value="$${local_ip_v4}" />
    <param name="sip-ip" value="$${local_ip_v4}" />
    <param name="ext-rtp-ip" value="20.20.20.20" />
    <param name="ext-sip-ip" value="20.20.20.20" />
    <param name="apply-candidate-acl" value="localnet.auto" />
    <param name="apply-candidate-acl" value="rfc1918.auto" />
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值