首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

mod_lua和mod_v8

这两个模块都是在FreeSWITCH支持使用嵌入式语言来控制呼叫流程的。我们在以前的文章中也曾不同程度地提到他们。 其中,mod_lua支持Lua语言,Lua是很有名的嵌入式语言,能非常好地嵌入其它语言的程序中。该模块有两个版本,最新的版本支持Lua 5.2,而支持Lua 5.1的版本现在已被移动到源代码的legacy目录中。 而mod_v8支持Javascript,由Google的v8库提供支持,v8库已被成功用于Chrome及node.js中,性能强劲。其实对Javascript的支持也有两个版本,另一个版本也在legacy目录中,叫做mod_spidermonkey。Spidermonkey是Firefox中的Javascript引擎。 Lua和Javascript两种语言有很多相似的地方,我们不必多说,先来看两个脚本: test.lua session:answer() session:sleep(1000) session:streamFile("/tmp/hello-lua.wav") session:hangup() test.js session.answer(); session.sleep(1000); session.streamFile("/tmp/hello-js.wav"); session.hangup(); 可以看出,两个脚本的内容和功能基本上一样。第一行,对当前呼叫进行应答;然后,小睡一会(以确定能正确的建立媒体流);接着,播放一个声音文件;最后,挂机。 可以分别使用如下Dialplan将来话路由到上述脚本: <action application=“lua” data=“/tmp/test.lua”/> 或 <action application=“javascript” data=“/tmp/test.js”/> 当然,两个脚本本质上是Lua或Javascript,因而你可以很容易地在脚本中加入条件判断、循环等,甚至也可以通过相关的API与数据库或其它系统交互。能实现什么样的程序,完全在于你的想象力,从现在起,就写个脚本练一练吧? ---------------------------------------- FreeSWITCH-CN是什么? ---------------------------------------- FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的「FreeSWITCH中文社... 」,或在通迅录->订阅号中搜索「FreeSWITCH-CN」来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。 FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。Seven Du于2007年听说、2008年开始使用FreeSWITCH,2009年创办FreeSWITCH-CN中文社区,2011~2013连续三年参加了在美国芝加哥举办的ClueCon全球VoIP开发者大会,该会议是由FreeSWITCH核心团队主办的。 如果你在学习和使用FreeSWITCH的过程中,有什么有趣的故事,也欢迎与我分享。移动设备上打字不方便,如果想写长的留言可以发邮件到 wechat@freeswitch.org.cn 。

01

干货 | 携程呼叫中心移动坐席解决方案

作者简介 本文作者为携程基础业务研发部呼叫中心团队,其在传统呼叫中心基础上,结合软交换、智能分配、自动语音语义处理等技术,为携程用户提供人性化、人机互动、便捷的电话语音服务。 一、前言 智能手机早已成为日常生活中不可或缺的一部分,随着移动互联网的快速发展,人们的生活习惯与工作方式也在不断发生改变。从移动通信、移动支付,再到移动办公,“移动化”已渗透至各行各业,并逐步成为企业业务发展的趋势。 携程呼叫中心研发团队根据业务的需求,研发完成了一套完整的呼叫中心移动坐席解决方案,使业务坐席不再受制于工作时间、办公地

07

mod_sofia

今天来说说mod_soifa,它就是FreeSWITCH中的SIP模块。 FreeSWITCH并没有自己开发新的SIP协议栈,而是使用了比较成熟的开源SIP协议栈Sofia-SIP,以避免“重复发明轮子”。Sofia-SIP是由诺基亚公司开发的SIP 协议栈,它以开源的许可证LGPL发布。参见 http://sofia-sip.sourceforge.net/ 。 在FreeSWITCH中,实现一些互联协议接口的模块称为Endpoint。FreeSWITH支持很多类型的Endpoint,如SIP、H232等。这些不同的Endpoint主要是使用不同的控制协议跟其他的Endpoint通话。所以说,Endpoint一般是跟通话相关的。 有的读者可能会问,那么实现SIP的模块为什么不支持叫mod_sip呢?这是由于 FreeSWITCH的Endpoint是一个抽象的概念,你可以用任何的技术来实现。实际上mod_sofia只是对Sofia-SIP库的一个粘合和封装。除Sofia-SIP外,还有很多开源的SIP协议栈,如pjsip、osip等。最初选型的时候,FreeSWITCH 的开发团队也对比过许多不同的SIP协议栈,最终选用了Sofia-SIP。FreeSWITCH 是一个高度模块化的结构,如果你喜欢其他协议栈,可以自己实现如mod_pjsip或mod_osip等,它们是互不影响的。这也正是FreeSWITCH架构设计的精巧之处。 mod_sofia实现了SIP中的注册服务器,重定向服务器,媒体服务器、呈现服务器、SBC等各种功能。它的定位是一个B2BUA,它不能实现SIP代理服务器的功能。实现SIP代理服务器的开源软件有OpenSIPS、Kamailio等。它们可以很好的与FreeSWITCH配合工作。 在mod_sofia中,有一个概念是SIP Profile,它相当于一个SIP UA,通过各种不同的配置参数可以配置一个UA的行为。一个系统中可以有多个Profile,每个Profile都可以监听不同的IP地址和端口对。 一个Profile中有多个Gateway,Gateway可以直译为网关,它主要用于定义一个远端的SIP服务器,使FreeSWITCH可以与其他服务器通信。FreeSWITCH可以作为一个SIP客户端(UAC)向远端的网关进行“注册”;当然也可以不注册,而是使用与远端服务器对等的方式(俗称SIP Trunk,即SIP中继)相互通信(我们将在第14章讲到FreeSWITCH与与它系统相连的各种拓扑结构)。 FreeSWITCH可以作为注册服务器,这时候,其他的SIP客户端就可以向它注册。FreeSWITCH将通过用户目录(Directory)中的配置信息对注册用户进行鉴权。这些SIP客户端所代表的用户就称为本地SIP用户、简称本地用户。 牢记FreeSWITCH是一个B2BUA。如果Alice通过FreeSWITCH给Bob打电话,Alice首先向FreeSWITCH发起呼叫,对FreeSWITCH而言,这路通话就称为来话(Inbound Call);然后FreeSWITCH再去呼叫B,这路通话称为去话(Oubtound Call)。如果来、去话都是在与本地用户之间的,又称为本地来话和本地去话。 如果来、去话的发起者和目的地不是本的用户。而是以中继方式进行的,就称为中继来话或中继去话。但是,中继的叫法只是沿用传统的PSTN网络中的概念,在SIP术语中,本来是没有中继的概念的。 FreeSWITCH默认配置了internal和external以及internal-ipv6等三个Profile。其中internal主要用于本地用户的注册,它与external的区别除了使用的端口号不同外,它们之间最大的区别就是发送到internal这个Profile上的呼叫(INVITE请求)是需要鉴权的,但发送到external上的INVITE请求却不需要鉴权。这一点,用户在使用中可以慢慢体会。只要不被它们的名字所迷惑,知道所有的Profile其实都是一样的,这两个Profile只是FreeSWITCH默认提供的两个例子而已,它们之间的不同在于使用了不同的配置参数。 该模块是FreeSWITCH中最大的一个模块,也是最主要的一个模块,它的功能和配置都很多,留待我们日后慢慢讲。点击左下角的「查看原文」也可以看到更多的信息。 ---------------------------------------- 题图:Sofia 来自wikipedia Sofia是保加利亚的首都和最大城市,跟我们的mod_sofia可没有半毛钱关系啊。 ---------------------------------------- FreeSWITCH-CN是什么? FreeSWITCH-CN是FreeSWITCH中文社区,

04
领券