FreeSWITCH常用知识点
1、FreeSWITCH控制台快捷键(4.4)
2、FreeSWITCH目录结构(5.2)
sounds目录 、 storage目录 、 conf目录 。
3、配置文件(5.3 & 3.3)
4、vars.xml —— FreeSWITCH 中默认的全局变量(5.3.2)
注:这里除了 global_getvar,还有常用指令:eval ${base_dir} 、eval ${local_ip_v4} ——进行查看这些变量的值
其他的一些变量对应的值:(1)${domain}、${domain_name}、${local_ip_v4} —— 192.168.67.124 ; (2)${hostname} —— DESKTOP-NKI3BLU ;(3) ${base_dir} —— C:/Program Files/FreeSWITCH ; (4)${sounds_dir} —— C:/Program Files/FreeSWITCH/sounds ; (6) $ {hold_music} —— local_stream://moh ; (7) (8)(9)(10)
5、默认号码及说明(3.2.2)
6、API 与 App 的本质区别(4.6)
API(命令) 列举:originate、uuid_bridge、version、status、
App(程序) 列举:answer、 echo(还有 park、hold、bridge) 、info(把该通道的所有的变量(通道变量)都打印到log中)、log(其作用是将信息写到日志(Log)中)、
7、正则表达式(6.1.3)
注:regex 要匹配的字符串 | 正则表达式 —— 测试所写的正则表达式是否正确。
8、日志Log的级别(6.1.4)
快捷键: F7:console loglevel 0 —— 设置后,对应
F8:console loglevel 7 —— 设置后,对应
9、部分Info中显示的变量与通道变量的对应关系
10、Dialplan 中的测试条件
11、常用的 Dialplan(6.4)
更多见6.4。
12、判断FreeSWITCH是否运行
13、FreeSWITCH中与编码相关的主要命令
14、关于呼叫中设置声音的操作
第1例:(3.4 - FreeSWITCH用作软电话)
设置好FreeSWITCH软电话后,从分机上进行呼叫。
在C:\Program Files\FreeSWITCH\conf\autoload_configs\portaudio.conf.xml 文件中,进行如下修改/添加:
注意格式!!!
需要注意的是:修改了声音文件后,reloadxml后,进行呼叫,但是实现不了修改(而重启FreeSWITCH就可以了);
如果直接写: <param name="ring-file" value="test1_3.wav"/>
同时把该声音文件放在C:/Program Files/FreeSWITCH/sounds/en/us/callie/下,运行,显示错误:[ERR] mod_portaudio.c:355 Cannot open test1_3.wav, disabling ring file!
第2 例:通过originate指令呼叫用户:
originate user/1234 &playback($${sounds_dir}/test1_2.wav) —— 可以指定声音(拨通后才会听到指定的声音,其实何时听到声音以及何时拨通,取决于动作 action application="answer"/> 和 动作 <action application="playback" data="${sounds_dir}/test1_3.wav" />的先后顺序,也就是执行顺序,而且,音乐是要播放完的)
如果直接写:
originate user/1234 &playback(test1_2.wav)
则:要把该声音文件放在C:/Program Files/FreeSWITCH/sounds/en/us/callie/下,否则检测不到!!!
第3例:通过拨号计划指定声音
如:
<extension name="Test_zhou_2">
<condition field="destination_number" expression="^11\d+$">
<!-- 以下这种方式,要把该声音文件放在C:/Program Files/FreeSWITCH/sounds/en/us/callie/下,否则检测不到!! -->
<!-- <action application=" playback " data=" test2.wav " /> -->
<!-- 或者 -->
<action application="playback" data="${sounds_dir}/test3.wav" />
<action application="answer" />
<action application="echo" />
</condition>
</extension>
注意的是:1)如果直接写:" test2.wav ",那么要把该声音文件放在C:/Program Files/FreeSWITCH/sounds/en/us/callie/下,否则检测不到!!!
另外,关于录音设置的,参考:10.1.1
15、RTP协议
16、录音record (11.5)
输入指令:originate user/1234 &record (C:/test2/1.wav) —— 可以进行录音
但是改变路径后:
originate user/1234 &record(C:/Program Files/FreeSWITCH/test/1.wav)
又或者:originate user/1234 &record(C:/Program Files/FreeSWITCH/recordings/1.wav)
会正常建立通话,但是没有生成录音文件。(C:/Program Files/FreeSWITCH路径下不可以保存???可能是权限问题)
另外:
呼叫一个rec开头的号码,会出现 FreeSWITCH 直接退出的情况。
将expression="^rec(.*)$" 改为 expression="^16\d+$"后就可以正常录音了。
以上,
将录音的保存路径改为C:/Program Files/FreeSWITCH下时,不会生成对应的录音文件,但是会在C盘下生成 名为 Program.PCMU的文件。
上面说的是单腿录音,下面介绍一下 对两条腿进行录音(参考11.5.2):
首先,输入指令: originate user/1234 &echo —— 接通后会生成对应的uuid
然后,输入指令:uuid_record <channel_uuid> start C:/test/1.wav —— 对正在进行的通话录音(需要事先知道相关channel的UUID)
如果决定不录音了,可以输入以下指令:uuid_record <channel_uuid> stop C:/test/1.wav
同单腿录音,当改变录音的保存路径为 C:/Program Files/FreeSWITCH文件下时,不会生成对应的录音文件,但是会在C盘下,生成对应 Program-in.PCMU、Program-out.PCMU 两个文件。
最后,可以对所生成的录音进行playback测试:
即在Dialplan中正常进行设置:
<action application="playback" data="C:/test/1.wav"/>
而且对于上面不按规定路径生成的文件(单腿录音):Program.PCMU ,也可以通过playback直接播放(只要在播放时不带扩展名)
在Dialplan中的设置如下 :
<action application="playback" data="C:/Program"/>
双腿录音,同理。
(注:.PCMU 文件称为原生格式的文件,可以最大限度地节省系统资源,具体参考11.5.5-原生格式
单腿录音时,要想将声音生成录制成原生格式,只需在录音时不提供录音文件的扩展名即可。
如:
originate user/1009 &record(C:/test/12) —— 就会在对应文件夹下生成12.PCMU文件
双腿录音同理,输入指令:
uuid_record a0983b53-c93f-4f9e-92b6-15231ca8d131 start C:/test/zhou —— 就会生成zhou-in.PCMU 和 zhou-out.PCMU两个文件 )
17、相关模块
(1)mod_portaudio —— 支持本地的音频设备(默认不编译)
(2)mod_native_file —— 为了最大限度地节省系统资源,可以将声音文件录制成原生(Native)格式。这种格式就是由mod_native_file 模块提供的。
Native 格式:
(3)mod_shout —— 实现了对MP3文件的支持
(4)mod_local_stream —— 该模块实现了一些Stream,即“流”(如:实现了local_stream)
(5)mod_flite —— 是FreeSWITCH基于Flite语音合成引擎的一个TTS模块。目前该模块仅支持英文
(6)mod_fifo —— 实现一些简单的ACD(Automatic Call Distribution,自动电话分配)功能
(7)
(8)
(9)
(10)
18、Say能读的数据类型
具体参考11.6.3。
19、playback的参数
(具体参考11.6.1)
1、声音文件
2、local_stream
3、silence_stream
4、tone_stream
5、file_string
6、其他接口参数
20、Dilplan中 action application 和data 的对应关系
参考:11.6.1或者11.7.1小节
如:11.7.1
这两种写法是等价的。
再如:11.6.1-6
21、fifo相关的通信变量
详细参考12.1.3。
22、mod_callcenter中动态管理队列和座席的相关指令
(以及mod_fifo 中的动态坐席的配置)
(具体参考12.2.2)
mod_callcenter提供了一个callcenter_comfig的API命令,用于管理与该模块相关的各种资源。
(1) callcenter_config agent set status 1005@default 'Available' —— (在座席已正确配置的基础上)把座席的状态变成Available,该座席就准备好接听电话了
(2)callcenter_config agent set status 1005@default 'Logged out' —— (同上)不会再有电话分配到该座席
(3)callcenter_config agent list —— 列出当前所有的坐席
如果座席本身没有在配置文件中配置,也可以使用,命令添加:
(4)callcenter_config agent add 1007@default callback —— 添加一个名字为1007@default的座席
当然,还需要用下列命令给它设置相关的参数,如contract:
(5)callcenter_config agent set contract 1007@default user/1007
(6)callcenter_config queu list —— 列出当前的队列
(7)callcenter_config tier list —— 列出当前的梯队
另外:关于mod_fifo模块中,提供了一个fifo_member 命令用于动态坐席的配置:
(1)fifo_member add user/1007 —— 增加一个座席
(2)fifo_member del user/1008 —— 删除一个座席
....
23、FreeSWITCH支持的媒体编码
FreeSWITCH支持的媒体编码默认是在conf/vars.xml文件中定义的,如:(参考:8.1.3&12.4.1)
注意:修改上述文件实际上修改的是全局变量,一般来说需要重启FreeSWITCH才能使之生效。
(12.4.1给出了不需要重启FreeSWITCH就能是使之生效的一个技巧(以UNIX类平台为例))