文章目录
- 序言
- 上一篇文章:
- 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日,前面写了几篇感觉都是把原文搬过来,没有自己的灵魂。后面尽量把自己的想法和理解加入进去。加油吧!
本笔记仅供个人学习和研究使用,任何商业行为或者从中获利行为均属于侵权行为。若有侵权请及时联系作者删除。
上一篇文章:
3.1 什么是FreeSWITCH?
可以理解为软件电话之间通讯的服务软件,是一个最早先的通讯系统
3.1.1 FreeSWITCH的概念
这里引用官网的一句话:
FreeSWITCH是一个开源的电话交换平台。官方给它的定义是——世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交
换平台
坦白来说就是:
- ·FreeSWITCH是;跨平台的:各种系统都是兼容的
- FreeSWITCH具有很强的可伸缩性:就是即可以做客户端的电话又可以做中间等等等额交换的中间件
- FreeSWITCH是免费的。
- FreeSWITCH支持多协议:支持SIP、H323、Skype、Google Talk等多种通信协议,并能很容易地与各种开源的PBX系统通信
- 等等优势
从专业的角度来说,她是一个B2BUA,就是说他是个免费的中间商
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上传刚刚我给你们分享的音频文件
第二步:修改 /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"/>
第三步:修改安装位置的文件(注意第四步是源文件,不一样的)
/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默认号码及说明
3.3 配置FreeSWITCH
3.3.1 用户配置
原文中提到了用户的配置文件,其实视频里面也有说,这里就不再累赘了,给大家放个甜蜜包
怎么让新加的用户可以通呢,这就需要配置拨号计划了
方法一:
打开conf/dialplan/default.xml
直接在里面修改正则表达式,这里拿新添加用户为1234举例
<condition field="destination_number" expression="^(10[01]
[0-9])|1234$">
回到控制台或启动fs_cli,执行reloadxml命令或按快捷
F6,使新的配置生效
3.4 配置SIP网关拨打外部电话
该SIP账号(或提供该账号的设备)在
FreeSWITCH中称为SIP网关(Gateway)。
方法一:
第一步:创建文件
在/usr/local/freeswitch/conf/sip_profiles/external文件下创建xxx,xml文件
<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文件夹一般用内部用户
新建一个文件,
<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上修改
3.5 呼入电话处理
需要SIP网关支持打进来。什么意思呢?就像手机号码一样,有的支持电话出去和打进来,有的只支持打出去不支持打进来
第一步:创建文件
public一般用于接收外来呼叫
目录中的所有.xml文件
这些文件的优先级一般比直接写在default.xml或public、xml中要低
在/usr/local/freeswitch/conf/dialplan/public/文件下创建xxx,xml文件
你的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名称这个用户,他的电话就这样被我们打通了