文章目录

  • 序言
  • 上一篇文章:
  • 3.1 什么是FreeSWITCH?
  • 3.1.1 FreeSWITCH的概念
  • 3.2 快速体验
  • 3.2.1安装声音文件
  • 安装中文声音
  • 第一步:上传音频包
  • 第二步:修改 /usr/local/freeswitch/conf/vars.xml
  • 第三步:修改安装位置的文件(注意第四步是源文件,不一样的)
  • 第四步:编译源码mod_say_zh 模块 (和第四步骤不是一个东西)
  • 第五步:增加配置
  • 第六步:生效
  • 3.2.2默认号码及说明
  • 3.3 配置FreeSWITCH
  • 3.3.1 用户配置
  • 3.4 配置SIP网关拨打外部电话
  • 方法一:
  • 第一步:创建文件
  • 第二步:网关生效
  • 第三步:显示一下网关的注册状态
  • 第四步:通过网关拨号
  • 第五步:优化第四步骤:直接拨号使用
  • 3.5 呼入电话处理
  • 第一步:创建文件
  • 第二步:网关生效
  • 第三步:测试


序言

  学习资料来源《FreeSWITCH权威指南》-作者杜金房这本书。我是2022年6月毕业的,偶然的机会接触到FreeSWITCH,FreeSWITCH纯属个人爱好,进行笔记整理。也一直希望有机会可以参与FreeSWITCH相关工作开发,如有需要,请联系我18956043585,先说声谢谢您了。文章内容如有疑问点,我必定洗耳恭听并虚心接受,请您多多指教。感谢你的时间阅读。

  今天是2023年11月16日,前面写了几篇感觉都是把原文搬过来,没有自己的灵魂。后面尽量把自己的想法和理解加入进去。加油吧!

  本笔记仅供个人学习和研究使用,任何商业行为或者从中获利行为均属于侵权行为。若有侵权请及时联系作者删除。

上一篇文章:

FreeSWITCH安装视频

3.1 什么是FreeSWITCH?

  可以理解为软件电话之间通讯的服务软件,是一个最早先的通讯系统

3.1.1 FreeSWITCH的概念

  这里引用官网的一句话:
  FreeSWITCH是一个开源的电话交换平台。官方给它的定义是——世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交
换平台

坦白来说就是:

  1. ·FreeSWITCH是;跨平台的:各种系统都是兼容的
  2. FreeSWITCH具有很强的可伸缩性:就是即可以做客户端的电话又可以做中间等等等额交换的中间件
  3. FreeSWITCH是免费的。
  4. FreeSWITCH支持多协议:支持SIP、H323、Skype、Google Talk等多种通信协议,并能很容易地与各种开源的PBX系统通信
  5. 等等优势

FreeSWITCH是java技术么 freeswitch常用命令_xml

从专业的角度来说,她是一个B2BUA,就是说他是个免费的中间商

FreeSWITCH是java技术么 freeswitch常用命令_创建文件_02

3.2 快速体验


Centos7安装FreeSwitch-1.6


3.2.1安装声音文件

  我们通常用的都是Linux或者Mac系统,这里的安装声音特别的简单,只要是在源代码中执行:

make sounds-install
make moh-install

  安装过程中将自动从files.freeswitch.org下载相关的语音包,并解压缩到相关的安装路径中
(默认安装在/usr/local/freeswitch/sounds下)。

安装16K的音频命令为:

make cd-sounds-install
make cd-moh-install
安装中文声音

  上述方法是安装官网的,有时候我们需要中文的声音。
  相关资料我先放这里了。

链接: https://pan.baidu.com/s/1QwnYOR79XRnav4avGN8kng 提取码: 9fry 复制这段内容后打开百度网盘手机App,操作更方便哦
第一步:上传音频包

如果你是默认的安装路径,请创建目录

/usr/local/freeswitch/sounds/zh/cn/link

FreeSWITCH是java技术么 freeswitch常用命令_FreeSWITCH是java技术么_03


上传刚刚我给你们分享的音频文件

第二步:修改 /usr/local/freeswitch/conf/vars.xml

在53行左右修改

<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/zh/cn/link"/>

添加(不添加也没事,最好添加一下)

<X-PRE-PROCESS cmd="set" data="default_language=zh"/>
     <X-PRE-PROCESS cmd="set" data="default_dialect=cn"/>
     <X-PRE-PROCESS cmd="set" data="default_voice=sue"/>

FreeSWITCH是java技术么 freeswitch常用命令_freeswitch_04

第三步:修改安装位置的文件(注意第四步是源文件,不一样的)

/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml

在136 行左右 取消 <load module="mod_say_zh"/> 注释 
没有就直接添加<load module="mod_say_zh"/>
第四步:编译源码mod_say_zh 模块 (和第四步骤不是一个东西)

cd /usr/local/src/freeswitch-1.8.2/src/mod/say/mod_say_zh

make && make install
第五步:增加配置
cd /usr/local/freeswitch/conf/lang/
cp -fr en zh
cd zh
mv en.xml zh.xml

修改zh.xml(注意修改的地方)

<language name="zh" say-module="zh" sound-prefix="$${sound_prefix}/zh/cn/link" tts-engine="mod_tts_commandline" tts-voice="link">

修改 /usr/local/freeswitch/conf/freeswitch.xml
在61行增加

<X-PRE-PROCESS cmd="include" data="lang/zh/*.xml"/>
第六步:生效

进入freeswitch控制台输入以下命令

reloadxml

或者直接重启

3.2.2默认号码及说明

FreeSWITCH是java技术么 freeswitch常用命令_FreeSWITCH是java技术么_05


FreeSWITCH是java技术么 freeswitch常用命令_创建文件_06

3.3 配置FreeSWITCH

FreeSWITCH是java技术么 freeswitch常用命令_xml_07

FreeSWITCH是java技术么 freeswitch常用命令_FreeSWITCH是java技术么_08

3.3.1 用户配置

原文中提到了用户的配置文件,其实视频里面也有说,这里就不再累赘了,给大家放个甜蜜包

快速创建用户

怎么让新加的用户可以通呢,这就需要配置拨号计划了

方法一:
打开conf/dialplan/default.xml
直接在里面修改正则表达式,这里拿新添加用户为1234举例

<condition field="destination_number" expression="^(10[01]
[0-9])|1234$">

FreeSWITCH是java技术么 freeswitch常用命令_创建文件_09


回到控制台或启动fs_cli,执行reloadxml命令或按快捷

F6,使新的配置生效

3.4 配置SIP网关拨打外部电话

该SIP账号(或提供该账号的设备)在
FreeSWITCH中称为SIP网关(Gateway)。

方法一:

第一步:创建文件

在/usr/local/freeswitch/conf/sip_profiles/external文件下创建xxx,xml文件

FreeSWITCH是java技术么 freeswitch常用命令_FreeSWITCH是java技术么_10


FreeSWITCH是java技术么 freeswitch常用命令_xml_11

<gateway name="gw1">
<param name="realm" value="SIP服务器地址,可以是IP
或IP:
端口号"/>
<param name="username" value="SIP用户名"/>
<param name="password" value="密码"/>
</gateway>
第二步:网关生效
sofia profile external rescan
第三步:显示一下网关的注册状态
sofia status
第四步:通过网关拨号

originate sofia/gateway/gw1/xxxxxx &echo

  以上命令会通过网关gw1呼叫号码xxxxxx(可能是你的手机号),被叫号码接听电话后,FreeSWITCH会执行echo程序,你应该就能听到自己的回音了

第五步:优化第四步骤:直接拨号使用

配置拨号计划

default文件夹一般用内部用户

新建一个文件,

FreeSWITCH是java技术么 freeswitch常用命令_xml_12

<include>
  <extension name="call out">
    <condition field="destination_number" expression="^0(\d+)$">
      <action application="bridge" data="sofia/gateway/gw1/$1"/>
    </condition>
  </extension>
</include>
^0(\d+)$”为正则表达式

这个括号是为了$1这个变量提取电话号码的:就是除了前面的0,后面的都要

或者直接在default.xml上修改

FreeSWITCH是java技术么 freeswitch常用命令_freeswitch_13

3.5 呼入电话处理

  需要SIP网关支持打进来。什么意思呢?就像手机号码一样,有的支持电话出去和打进来,有的只支持打出去不支持打进来

第一步:创建文件

public一般用于接收外来呼叫

目录中的所有.xml文件
  这些文件的优先级一般比直接写在default.xml或public、xml中要低

在/usr/local/freeswitch/conf/dialplan/public/文件下创建xxx,xml文件

FreeSWITCH是java技术么 freeswitch常用命令_FreeSWITCH是java技术么_14


你的DID:就是网关的那个号码,有可能是手机号这样的

<include>
<extension name="public_did">
<condition field="destination_number" expression="^(
你的DID)$">
<action application="transfer" data="1000 XML
default"/>
</condition>
</extension>
</include>
第二步:网关生效

控制台F6或者reloadxml或者重启Freeswitch

fs_cli>reloadxml
第三步:测试

用你的手机拨打DID,就是sip网关

我们可以看到,这个脚本写的是转接到1000名称这个用户,他的电话就这样被我们打通了

FreeSWITCH是java技术么 freeswitch常用命令_xml_15