基于FreeSwitch的会议电话系统研究与实现
- 格式:pdf
- 大小:312.01 KB
- 文档页数:4
自建企业电话会议系统 Freeswitch安装TDM400P实战配置环境:硬件: CPU酷睿3G 内存1G 网络100M 宽带ADSL 2M TDM400P(2fxs/2fxo)软件:Centos5.5,freeswitch1.07 启点IPPBX会议系统某化工厂用我们免费的启点IPPBX构建了电话会议系统,内部分机采用G711编码,会议室音质设定为宽带高质量。
只有内部分机参会时,音质很好,当外呼手机或座机用户参会时,音质明显下降。
故障排查:该厂外呼线路采用对接voip话务平台(价格0.5/分),窄带723,729编码,单路通话效果尚可。
根据会议室混音原理,系统都会将每路语音转换为L16无压缩编码。
723,729属于高压缩编码,解压混音过程中系统负担大,而且voip话务平台质量并不保障,故而外呼用户参会者的语音质量下降。
再次印证,价格和质量成正比。
解决方法:用语音卡PSTN线路外呼。
我们还推荐了一家高质量,话务量不太拥挤的话务平台对接,带宽大,支持G711。
(价格0.1/分)效果:通过语音卡外呼参会者,可获得PSTN语音质量效果。
与推荐的高质量SIP平台对接外呼,语音较PSTN稍差,但完全满足使用。
在30名参会者情况下,系统资源占用10%。
1、安装系统(略)请参考上的安装文档2、为LINUX安装tdm400p驱动(freeswitch/asterisk都需要)用户购买的是OEM卡,价格1000以内,带回声消除的会贵些。
下载zaptel-1.4.2.tar.gz$ tar -zxvf zaptel-1.4.x.tar.gz$ cd zaptel-1.4.x$ ./configure$ make$ make install$ make config编译完后确认/etc目录中有zaptel配置文件Ensure the proper zaptel.conf is in the /etc directory. Correctly configure country zone in zaptel.conf. FXO and FXS are reversed in /etc/zaptel.conf but is normal everywhere else.我的配置文件如下,采用中国时区cn----- @/etc/zaptel.conf -----loadzone=cndefaultzone=cnfxsks=4fxoks=1fxsks=2fxoks=3加载驱动# modprobe wctdm# modprobe zaptel确认配置# ztcfg -vvZaptel Version: 1.4.2Echo Canceller: MG2Configuration======================Channel map:Channel 01: FXO Kewlstart (Default) (Slaves: 01)Channel 03: FXO Kewlstart (Default) (Slaves: 03)Channel 02: FXS Kewlstart (Default) (Slaves: 02)Channel 04: FXS Kewlstart (Default) (Slaves: 04)2 channels configured.如果你的FXS/FXO配置反了,系统会出现提示。
用Freeswitch实现IVRIVR(交互式语音响应)实际上是我们经常说的电话语音菜单。
Freeswitch默认的配置包含了一个功能齐全的例子。
用一个分机拨打5000,就可以听到菜单提示了。
当然默认的提示是英文的,大意是说欢迎来到Freeswitch,按1进入Freeswitch会议;按2进入回音程序;按3会听到等待音乐;按4会转到Freeswitch开发者Brian West 的SIP电话上;按5会听到一只猴子的尖叫;按6进入下一级菜单;按9重听;拨1000~1019之间的号码则会被转到对应分机上。
1、最简单的菜单我们先来配置一种最简单的情形。
当有电话呼入时,会播放:“您好,欢迎致电某某,请直拨分机号,查号请拨0”IVR系统默认的配置文件为conf/autoload_configs/ivr.conf.xml,它装入conf/ivr_menus/目录下的所有XML文件。
系统有一个示例的IVR配置,叫demo_ivr,也就是我们刚才拨5000听到的那个。
真正的菜单配置信息放到一对<menus></menus>标签中,每一对标签就描述一个菜单。
每个菜单应该有一个唯一的名字,以便在拨号计划中引用。
前面讲过,被装入的XML文件最外层一般都有一对“<include>”标签,以保证XML文档的完整性。
为了实现目标菜单,我们创建一个XML配置文件conf/ivr_menus/welcome.xml,内容如下:<include><menus><menu name="welcome"greet-long="welcome.wav"greet-short="welcome_short.wav"invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav" exit-sound="voicemail/vm-goodbye.wav"timeout="15000"max-failures="3"max-timeouts="3"Inter-digit-timeout=”2000”digit-len="4"><entry action="menu-exec-app" digits="0"param="transfer 1000XML default" /><entry action="menu-exec-app" digits="/^(10[01][0-9])$/" param="transfer $1 XML default" /></menu></menus></include>上述配置中,首先,我们指定菜单的名字是welcome,其他各项的含义如下:greet-long:指定最开始的欢迎音,该语音文件默认的位置应该是在usr/local/freeswitch/sounds目录下。
2018年7月基于Freeswitch的高可用通信调度系统研究与实现谌介人(通号通信信息集团有限公司上海无线技术分公司,上海200000)【摘要】针对机场、核电、港口码头对通信调度稳定性要求高的特点,本文设计并实现了一种基于Freeswitch的通信调度系统。
该系统主要模块采用热备方式部署,具备较高的可靠性和可用性;模块化设计易于管理扩展,满足不同用户群体的需求。
【关键词】Freeswitch;通信调度系统;热备【中图分类号】TP311.52【文献标识码】A【文章编号】1006-4222(2018)07-0030-021引言近年来国内机场、核电、港口码头业务量爆炸式增长,这类客户对通信调度的信息化程度和通信效率的要求在不断提高,传统电话交换系统越来越难满足其需求。
随着VOIP技术的兴起和服务器处理能力的增强,越来越多的公司将原有的以传统电话交换系统为承载的业务迁移到以计算机软件为核心的软交换系统上。
与传统的电话交换系统相比,基于软交换的通信调度系统具备成本低、业务种类多、实现简单、易于扩展等诸多特点,FreeSwitch是功能强大的开源软交换系统,以纯软件形式实现了完整的专用交换机功能。
基于特定用户群体的特点并结合Freeswitch的强大功能,本文设计并实现了一套高可用的通信调度系统,该系统在国内多个机场上线运行。
2Freeswitch简介2.1Freeswitch特点Freeswitch是一个开源的、功能强大的软交换系统,在一台普通的电脑上部署Freeswitch,可将其变成一台功能强大的电话交换机,可实现拨号通信、会议电话、互动式语音应答、语音信箱、会话记录等业务功能。
作为一个优秀的开源软件, Freeswitch可以实现的功能非常多,由于其开源性更可以根据自己的实际需要在源代码中集成相应的功能。
在国外,很多ISP和运营商对它钟爱有加,把它作为运营商级的软交换设备;也有的利用它的平台建立呼叫中心,与各种企业级的应用集成;在国内,人们对它的利用同样广泛,有的企业把它作为内部的软交换中心,负责员工之间沟通,资源的调配以及管理等工作。
FreeSwitch实现简单呼叫中心功能下面的原文来自 [Freeswitch Users]的邮件列表,日期为2012年8月18日。
原文:On Thursday 16 August 2012 17:10:33 Nitin Tomer wrote:I am working on a Contact Center solution. It will support mail,chat and call queries.The requirements are:1. An end-customer calls, the call is handled by FreeSWITCH Auto Attendant.2. Customer is presented with a menu and makes selection. His call is put on hold and an entry is made in my system's database for incoming queries.3. These queries are shown to agents handling calls.4. And agent clicks on a query, he is shown an extension where call is parked. He dials that and is connected to the customer.5. He talks to the customer and resolve his queries.Please guide me on how can do it. The application will be written in Java.翻译:On Thursday 16 August 2012 17:10:33 Nitin Tomer wrote:我在一个做呼叫中心的项目中工作,该项目主要实现邮件、聊天和呼叫查询的功能。
FreeSWITCH:VoIP实战》:一个在FreeSWITCH中外呼的Lua脚本一个在FreeSWITCH中外呼的脚本前几天,一个朋友问我能否实现在FS中外呼,然后放一段录音,我说当然能,写个简单的脚本就行。
但后来他说还要知道呼叫是否成功,我说,那就需要复杂一点了。
当然,这个应用很简单,就没必要使用event_socket那些复杂的东东。
写了一个Lua脚本,基本能满足要求了。
思路是将待呼号码放到一个文件(number_file_name)中,每个一行,然后用Lua依次读每一行,呼通后播放file_to_play,结果写到log_file_name中。
为保证对方应该后才开始播放,需要ignore_early_media参数,否则,对方传回铃音或彩铃时播放就会开始,而那不是我们想要的。
prefix = "{ignore_early_media=true}sofia/gateway/cnc/"number_file_name = "/usr/local/freeswitch/scripts/number.txt"file_to_play = "/usr/local/freeswitch/sounds/custom/8000/sound.wav"log_file_name = "/usr/local/freeswitch/log/dialer_log.txt"简单起见,包装一个函数:function debug(s)freeswitch.consoleLog("notice", s .. "\n")end定义呼叫函数。
freeswitch.Session会呼叫一个号码,并一直等待对方应答。
然后,streamFile播放一段声音,挂机。
最后,函数返回挂机原因 hangup_cause。
基于FreeSwitch平台的信息通信调度指挥系统设计与实现李兴;赵雪梅;金铭;袁昊【期刊名称】《电力信息化》【年(卷),期】2017(015)008【摘要】当前各级电力调度交换网业已建成,但仍缺乏与其高效匹配的信息通信调度指挥系统.文章以实现“横向到边,纵向到底”的信息通信一体化指挥平台为建设目标,结合甘肃省电力公司信息通信工作实际情况建立了一套基于FreeSwitch平台的信息通信调度指挥系统.该系统底层通信基于IMS架构,上层应用基于SG-UAP 平台开发,实现语音调度、协同调度、录音录像、话务服务、配置服务等5个模块功能,以支撑信息通信故障处置、方式下达、调度联络、应急指挥等调度指挥协调工作,大大提升了信息通信调度的指挥协调、资源调配、应急处置、安全管控、分析预测及全景展示能力.【总页数】6页(P87-92)【作者】李兴;赵雪梅;金铭;袁昊【作者单位】国网甘肃省电力公司信息通信公司,甘肃兰州730050;国网甘肃省电力公司,甘肃兰州730050;国网甘肃省电力公司信息通信公司,甘肃兰州730050;国网甘肃省电力公司信息通信公司,甘肃兰州730050【正文语种】中文【中图分类】TP319【相关文献】1.基于FreeSwitch平台的信息通信调度指挥系统设计与实现 [J], 李兴;赵雪梅;金铭;袁昊;2.列车调度指挥系统信息共享平台的设计与实现 [J], 魏博;宋鹏飞;应志鹏3.基于FreeSwitch和DSP的多媒体会议系统的设计与实现 [J], 胡建洲;田裕鹏4.基于FreeSWITCH的视频会议服务器的设计与实现 [J], ZHANG Yu;CUI Yi-dong5.基于FreeSWITCH的视频会议服务器的设计与实现 [J], 张钰;崔毅东因版权原因,仅展示原文概要,查看原文内容请购买。
基于FreeSwitch的校园智能通信系统的设计与实现
马小青
【期刊名称】《物联网技术》
【年(卷),期】2024(14)2
【摘要】随着校园信息化建设的不断推进,越来越多的教育应用需要实现音视频通信,如网课、远程实验等。
因此,建立一种高效、稳定、低成本的校园智能通信系统是非常必要的。
本设计利用开源的FreeSwitch平台,搭建了一套多终端、多种网络环境接入、适用于多种应用场景的联络中心系统,实现了以“校园智能语音通信平台”为支撑,以“基于开放标准SIP多终端类型提供”为基础,以“虚拟集群、园区会议、智能录音、号码携带”为基本服务内容,以教室、办公室和宿舍等师生办公生活场所为依托,建立统一的智能通信园区管理平台,打造真正意义上的“没有电话线的电话网络”。
相比传统基于有线语音/数据网络的通信交换硬件系统,软件VoIP系统的优势体现在终端的多样性、网络的利旧性、接入方式的多样性与各种平台对接的开放性方面。
【总页数】4页(P48-51)
【作者】马小青
【作者单位】西安欧亚学院信息工程学院
【正文语种】中文
【中图分类】TP393
【相关文献】
1.基于微信开发的校园智能通信系统设计
2.基于Android的校园多媒体即时通信系统的设计与实现
3.基于人工智能的校园监控及通信系统的设计与研究
4.基于FreeSWITCH的IVR语音通信系统设计与实现
因版权原因,仅展示原文概要,查看原文内容请购买。
基于Freeswitch的呼叫中⼼中间件开发最近开发⼀个呼叫中⼼中间件,也可以让⽤户不懂呼叫系统完成复杂的呼叫业务。
模块⾥⾯我集成了 WebSocket RESTFul API 服务器端ws://192.168.0.250:8092/appid=xxxx&appkey=xxxxx×tamp=时间戳&sign=xxxxxxxxxx签名规则 sign=md5(appid+appkey+timestamp+"callback") 不含"+"⼼跳规则:客户端发送 {"Request": {type":"HEART_BEAT", "timestamp": "时间戳" } }服务器返回 {"Response": {type":"HEART_BEAT","timestamp": "时间戳" } }回拨呼叫dispcaller 呼叫主叫显⽰的号码dispcallee 呼叫被叫显⽰的号码caller 主叫号码callee 被叫号码callid 呼叫ID 必须唯⼀ 32位或64位record 是否录⾳ true|falsetimelong 通话时长userdata ⾃定义数据{ "Request": { "dial": {"dispcaller":"9001","dispcallee":"9000", "caller": "9000", "callee": "9001", "callid": "12345657586960", "record": "true", "timelong":"1000" ,"userdata":"test"}} }#话单返回callid 呼叫提交的IDcaller_id_number 主叫dispcaller 呼叫主叫显⽰的号码dispcallee 呼叫被叫显⽰的号码destination_number 被叫号码start_stamp 呼叫开始answer_stamp 呼叫应答end_stamp 呼叫结束recordfile 录⾳⽂件路径duration 通话时长billsec 计费时长hangup_cause 挂机原因完整返回:{"Response": {"appid": "111111","cdr": { "context":"callbak","caller_id_number":"9001","dispcaller":"9001",,"dispcallee":"9000","destination_number":"9000","start_stamp":"2019-06-11 17:52:07", "answer_stamp":"2019-06-1117:52:10","end_stamp":"2019-06-1117:52:19","channel_name":"sofia/internal/9000@192.168.0.137:5060","bridge_channel":"sofia/internal/9001@192.168.0.137:5060","duration":"12","billsec":"9","hangup_cause":"NORMAL_CLEARING #呼叫状态异步返回{"Response": {"appid": "12345678","callstate": {"callbacka_active":"主叫是否接通",state":"EARLY|DIALING|RING_WAIT|ACTIVE","callid": "呼叫ID","timestamp":"时间戳","uuid": "服务端通话ID" }}}{"Response": {"appid": "111111","callstate": {"callbacka_active":"false","state":"RINGING","callid": "12345657586960","timestamp":"1560246727","uuid":"1defac04-8727-49b2-b19d-86b60fca7e0d" }}}{"Response": {"appid": "111111","callstate": {"callbacka_active":"false","state":"ACTIVE","callid": "12345657586960","timestamp":"1560246730","uuid":"1defac04-8727-49b2-b19d-86b60fca7e0d" }}}{"Response": {"appid": "111111","callstate": {"callbacka_active":"true","state":"RING_WAIT","callid": "12345657586960","timestamp":"1560246730","uuid":"1defac04-8727-49b2-b19d-86b60fca7e0d" }}}{"Response": {"appid": "111111","callstate": {"callbacka_active":"true","state":"ACTIVE","callid": "12345657586960","timestamp":"1560246732","uuid":"1defac04-8727-49b2-b19d-86b60fca7e0d" }}}#呼叫控制uuid cti呼叫状态返回主叫的通话UUID1、挂断当前通话{ "Request": { "hangup": { "uuid": "cc70b4b6-b041-49bf-adc5-ffd51e0ef780"} } }2、监听某个通话{ "Request": { "monitor": { "uuid": "ad6ac4ea-0f33-4108-85e2-1586a71a939d","caller":"显⽰的主叫号码","callee":"监听者的号码"} } }3、通话转接{ "Request": { "transfer": { "uuid": "903aee0b-1bc1-45a3-92b0-2c615c21aaa9","caller":"显⽰的主叫号码","callee":"要转移号码"} } }4、被叫通话保持state true 开启 false 关闭{ "Request": { "hold": { "uuid": "55e27e6d-88ab-4b3e-93f7-d049dd6eba21","state":"true"} } }http api 中继管理提交⽅式:POST提交数据 Body raw 类型字段签名规则 sign=md5(appid+appkey+timestamp+"api") 不含"+"RESTFul APIip:8092/api/v1/gatewayAdd 增加中继appidappkeytimestampsignname 中继名称必须唯⼀enable 是否启⽤ip 对⽅IP 地址port 对⽅端⼝bypass_media 媒体绕过服务器默认false 否则不能录⾳register IP对接:false SIP注册:true goip注册:in 呼叫本地SIP:local username SIP注册⽤户名auth-username IMS认证⽤户名userpwd SIP注册⽤户密码prefix 拨号前缀prefix_replace 拨号替换规则limit_caller 强制主叫号码from-domain IMS 对接域地址limit_count 并发限制ip:8092/api/v1/gatewayDel 删除中继appidappkeytimestampsignname 中继名称必须唯⼀ip:8092/api/v1/gatewayGet 获取中继appidappkeytimestampsignlimit 返回的⾏数offset 开始的⾏数http api SIP⽤户管理提交⽅式:POST提交数据 Body raw 类型字段http://192.168.0.250:8092/api/v1/sipuserAdd 增加SIP⽤户appidappkeytimestampsignaccountcode SIP账号secret SIP密码calltyp 呼叫类别 in:呼⼊ out:呼出 all:呼⼊呼出record 是否录⾳http://192.168.0.250:8092/api/v1/sipuserDel 删除SIP⽤户appidappkeytimestampsignaccountcode SIP账号http://192.168.0.250:8092/api/v1/sipuserGet 获取SIP⽤户appidappkeytimestampsignlimit 返回的⾏数offset 开始的⾏数。
一、介绍FreeSWITCH桥接的概念和作用FreeSWITCH是一款开源的软交换评台,具有强大的通信功能和灵活的配置能力。
在VoIP通信领域,它被广泛应用于通联方式会议、通联方式中继、多方通话等场景。
其中,桥接是FreeSWITCH的重要功能之一,可以实现两个或多个通话的实时连接,为通信中心提供了更多的应用可能性。
本文将详细介绍FreeSWITCH桥接的原理及其实现方式。
二、FreeSWITCH桥接的原理FreeSWITCH桥接的原理是基于音频流的处理和管理。
当两个通话需要桥接时,FreeSWITCH会创建一个桥接实例,然后将两个通话的音频流分别加入到这个桥接实例中。
这样,两个通话就可以实现双向音频的传输,并且可以进行相互通话。
在桥接过程中,FreeSWITCH需要处理的主要工作包括音频流的采集、编码、解码、混音和传输。
这些工作需要高效的算法和数据结构来支持,同时还需要考虑网络延迟、带宽限制、音频质量等因素。
FreeSWITCH的桥接实现是一个复杂而严谨的技术问题,需要从多个层面进行综合考虑和设计。
三、FreeSWITCH桥接的实现方式1. 基于SIP协议的桥接在VoIP通信中,SIP协议是一种常见的信令协议,用于建立、维护和结束通话。
FreeSWITCH可以通过SIP协议来实现桥接功能,具体实现方式是通过SIP的媒体流重定向功能。
当两个通话需要桥接时,FreeSWITCH会向两个通话发送重定向命令,让它们将音频流发送到同一个桥接节点上。
这样,两个通话就能够实现桥接。
2. 基于RTP协议的桥接RTP协议是一种实时传输协议,常用于音视瓶流的传输。
在FreeSWITCH中,可以通过RTP协议来实现通话的桥接。
具体实现方式是通过RTP的混音功能,将两个通话的音频流进行混音处理,然后再进行传输。
这样,两个通话就能够实现桥接。
3. 基于WebRTC的桥接WebRTC是一种实时通信技术,可以直接在Web浏览器中实现音视瓶通话。