您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

开源IPPBX讲座-如何实现和优化电话会议解决方案

2018-03-13 14:22:56   作者:james.zhu   来源:CTI论坛   评论:0  点击:


  电话会议是企业IPPBX非常必要的常用的功能之一,也是企业通信办公环境中经常使用的沟通手段。开源FreePBX等产品也可以支持电话会议的功能。在本讲座中,我们介绍一下关于电话会议的概念,使用场景和如何配置电话会议功能,最后,我们讨论关于电话会议的性能等相关技术问题。
  1、电话会议称之为Conference call。简单来说,一般的多方通话都可以称之为电话会议,而一般的2方通话我们是一般的呼叫。如果参与人数大于2人以上,我们称之为电话会议。一般的电话会议可能至少是3人以上或者更多人数。电话会议的好处就是可以直接创建一个虚拟会议室,相关人员可以快速便捷地对某一个事件进行专门的讨论,会议结束则自行解散电话会议。早期的电话会议只能通过PSTN或者SIP来发起,功能比较简单易用。现在很多的电话会议功能引入了视频会议和其他的app介入。本讲座中我们仅涉及基于语音的电话会议。
  2、电话会议可以已经使用在很多场景中。我们常见的就是在IPPBX创建一个会议室,邀请相关人员进入会议室,会议室人员对某个特定的话题进行讨论发言。或者,会议人员呼叫某个电话号码,然后根据IVR引导,进入电话会议系统。电话会议可以使用的场景包括:
  • 公司业务人员,技术人员和客户的沟通培训
  • 公司,教育机构和客户沟通
  • 企业内部人员和其他部门人员通过电话系统的沟通
  3、启用电话会议相对比较简单,可以方便地支持普通的PSTN线路和手机等设备,设置也相对比较简单灵活,而且稳定性相对比较好,一般它不会收到网络环境和终端的影响。设置电话会议包括以下几个要素:
  • 创建电话会议室
  • 管理员邀请会议人员
  • 管理员可以踢出会议人员,可以禁言,可以设置会议密码
  • 会议人员可以通过电话邀请电话呼入会议室的方式加入到电话会议
  • 会议室可以对进入会议室的人员播放语音提示等
  • 现在让我们看看如何在freepbx 环境下创建电话会议以及电话会议的参数设置。
  • Conference Number
  • 创建一个会议室号码,会议代表可以拨打此号码进入电话会议
  • Conference Name
  • 会议名称,用来区别于其他的会议室名称。
  • User PIN 要求电话会议代表进入会议室时输入密码验证。这是一个可选设置。
  • Admin PIN 会议管理员密码。此选项是可选的,如果使用了 'leader wait' ,则需要管理员输入密码验证管理员身份。
  Join Message 当会议代表进入会议室前,对代表播放的语音提示。如果加入其他的录音文件,请使用 "System Recordings" 菜单中的选项。
  Leader Wait 等待时间,直到会议主持人或者管理员进入到会议室。
  Talker Optimization
  开启会议发言人优化设置。当开启此设置以后,Asterisk将把不发言的代表设置为静音状态,通过这样的优化方式,没有语音解码处理,并且收到的语音不会被处理,这样节省了数据传输带宽,并且减少了背景噪音。
  Talker Detection 设置发言人检测的话,asterisk将通过AMI 发送一个事件,来确认此通道是否正在进行语音通话。发言人状态可以通过CLI 命令下的meetme 命令来查看。
  Quiet Mode
  退出模式 (不播放进入/离开语音提示)
  User Count
  播报会议室总人数
  User Join/Leave
  播报用户加入或者离开状态。如果开启此选项,所有会议代表在进入会议室之前都将需要报告用户名称,并且系统会播报他们的名称。
  Music on Hold
  当会议室只有一个用户时,开启音乐等待功能。
  Music on Hold Class
  对进入会议的代表播放语音,等待会议开始。如果需要选择不同的音乐等待时,选择 "inherit"。
  Allow Menu
  当系统收到“*”时,当前用户菜单状态。
  Record Conference
  对电话会议进行录音
  Maximum Participants
  最多参加会议人数。
  Mute on Join
  进入会议室时对每个用户静音。请注意,如果没有设置 'Leader Wait' 到yes 状态,用户必须开启 'Allow Menu' ,并且设置为 Yes,取消自己静音设置。
  如果开启Meetme 菜单或者按 *键访问菜单
  4、现在让我们重点探讨一下电话会议的系统性能的问题。如果熟悉Asterisk的用户可能知道,早期的电话会议功能是基于meetme 模块来实现的,时钟支持来自语音卡dahdi模块。meetme也一直使用在很多呼叫中心,电话会议等应用场景中,而且其非常稳定性也非常不错。就笔者知道的几个国内早期使用Asterisk开发电话会议系统的公司在电话会议市场都有非常不错的表现,而且也在一些比较大型的公司中使用。但是因为时钟源使用dahdi 模块的关系,采样率只能支持到8kHz(PSTN采样率),因此meetme的拓展就受到了很多局限。在Asterisk-1.6以后逐渐使用了ConfBridge来替换meetme模块。ConfBridge则支持了更多的灵活性包括用户属性设置,菜单支持等,并且提供了多种采样率的支持。
  稍微熟悉VOIP通信领域的读者可能知道知道,只要是会议功能,无论是语音电话会议还是目前最热门的视频会议,混音是一个非常消耗系统资源的处理流程,也是一个技术难点。因为混音需要大量的CPU和内存资源,采样率的高低和采样周期可以直接影响系统的性能。因此,读者在优化电话会议系统时需要注意以下几个方面的因素:
  • 用户应该尽量让系统平均分配系统中断,这样可以保持每个CPU的core都能充分工作。笔者经常看到很多即使是生产系统,系统的CPU中断完全没有被充分平衡地利用起来,这样就没有完全发挥CPU的处理能力。
  • 尽量从默认设置开始测试,通过不同的采样周期和采样率组合测试系统的稳定性。通过不同的组合,可能导致不同的延时。读者要注意,低延时是电话会议一个非常重要的指标。在rfc6366中关于延迟的方面也做了规定,编码延时必须低于30ms,低于10ms是一个期望值。
  • 修改代码测试更大的支持能力(#define MAX_DATALEN 8096)。当然,这需要用户承担一定的风险。
  • 开启dsp_drop_silence 选项,如果某些会议人员不发言,则不会对其进行混音。
  设置mixing_interval 控制CPU资源和语音质量。设置此值较低,则会获得比较好的语音质量,但是会消耗大量的CPU;反之亦然,设置此值比较高,语音质量较低,消耗相对比较少的CPU资源。关于此值得设置带来的不同结果,读者可以参考资料中的链接做进一步的研究。
  尽量让所有会议人员使用同一采样率,避免增加系统的处理流程。
  尽量让Asterisk取得比较高的运行优先级。
  尽量减少各种处理流程的延时, 需要注意的延时要素包括:采样率的延时,压缩耗时延时,传输延时,编码解压延时,3D语音延时处理,Buffering 处理延时等。
  如果读者希望进一步提高或优化Asterisk平台底层性能的话,可以考虑换编译器,例如Intel发布的编译器。笔者没有更多关注Intel的编译器,Intel官方曾经使用Intel编译器做过一些多核状态下的测试,官方的测试结果可以证明,Intel的编译器可以帮助系统提高性能。




  在本章节中,笔者介绍了开源IPPBX电话会议的功能,包括电话会议的基本概念,电话会议的使用场景和如何设置电话会议,最后重点介绍了如何优化电话会议系统和其主要的几个影响电话会议性能的参数。总结今天的讲座,使用开源freepbx可以成功设置一台稳定管理功能丰富的企业电话会议系统,完全可以满足企业中小型IPPBX 电话会议的功能要求。另外,如果需要优化系统的性能的话,笔者同时提供了多种解决方法和思路,希望读者可以通过这些方法来进一步优化和开发性能更加稳定的电话会议系统和IPPBX系统。
  参考资料:
  https://tools.ietf.org/html/rfc6366
  http://ml.stat.purdue.edu/docs/modelvoip.ejs.2010.pdf
  http://www.en.voipforo.com/codec/codecs-g711-alaw.php
  http://research.edm.uhasselt.be/jori/thesis/onlinethesis/chapter3.html
  https://pdfs.semanticscholar.org/10ea/4654d1fd60c97a5216b1ee1d0df5375dc806.pdf
  关注微信公众号:asterisk-cn,获得有价值的行业分享。访问5060社区-开源IPPBX论坛获得技术帮助:www.ippbx.org.cn, wiki: www.freepbx.org.cn
  融合通信商业解决方案首选产品:www.hiastar.com
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题