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

    mod_verto

    前一阵,我们讲了mod_rtc。mod_rtc是一个纯媒体的模块,目的是为了支持WebRTC。然而,任何的通信都需要一定的信令支持,mod_verto就是配合mod_rtc的信令模块。 众所周知,WebRTC从诞生的第一天起就只定义了媒体的交互和传输,而把信令留给大家自己实现,以便有更大的自由度。最初,大部分WebRTC的例子都是基于GAE的,但在电信的VoIP领域,SIP还是占统治地位的,因而,包括FreeSWITCH在内,又有一些SIP代理和软交换设备实现了配合WebRTC使用的SIP信令,这但是SIP over WebSocket。FreeSWITCH对SIP over WebSocket的支持是直接扩展了Sofia-SIP协议栈。 但无论如何,虽然SIP与传统的VoIP协议如H323相比,脱离了老式的电信信令思维,采用了类似HTTP协议的文本协议,但,它从电信领域诞生的基因决定了它还是很难融入互联网,退一步讲,人们还是认为SIP通信专业性太强了,SIP就是SIP,互联网就是互联网。 单从协议内容角度讲,SIP对于浏览器尤其是对于移动浏览器来说,还是有些庞大了。而基于文本的SIP协议解析起来对浏览器来说,即使不是一种负担,也不是非常的优雅。对浏览器来说,最适合的数据格式是JSON已是不争的事实。 我们很高兴地看到,FreeSWITCH团队开放了mod_verto。它采用了JSON及JSON-RPC相关的信令协议,非常优雅的与mod_rtc相配合,将热闹的互连网与冷冰冰的SIP通信结合在了一起。也就是说,FreeSWITCH不再是互联网从业者眼里专业的运动员,而跟MySQL,Apache一样,可以实实在在的融入互联网了。 在在WebRTC设计之初,就非常重视安全问题,因而,一切都是加密的,不管是在媒体层还是在信令层,这是个好事,唯一比较麻烦的是,对于没有耐心的实践者来说,你在跑通mod_verto前要设置好你的Web服务器以及证书。 笔者经过测试,顺利的跑通了该模块。有兴趣的读者也可以试试啊,步骤有些复杂,点击下面的「阅读原文」原文可以看到详细的Wiki说明。 https://confluence.freeswitch.org/display/FREESWITCH/mod_verto

    02

    mod_skypopen

    mod_skypeopen是一个有意思的模块,它提供FreeSWITCH与Skype的互通。 Skype是世界上广泛使用的VoIP软件,不过,在被微软收购后表现不怎么样,最近又传出Skype将停止提供第三方API接口,也就是说FreeSWITCH将无法与新版的Skype互通。 不过,旧版的Skype好像不受影响,而且,不管以后FreeSWITCH是否能与Skype互通,mod_skypopen对我们都有借鉴意义。 mod_skypopen的前身是mod_skypiax,后来才改为此名。该模块实现的很有意思。Skype不是提供API吗?也就是说它允许外部的程序通过一定的API控制Skype(相当于通信信令)。所以,理论上讲,就可以将控制Skype的部分代码放到FreeSWITCH中,而仍然需要启动一个Skype实例登录到实际的Skype网络中与其它Skype进行通信。在Linux中,通过使用内核中的虚拟声卡,可以指定不同的Skype实例使用不同的虚拟声卡,而在FreeSWITCH中通过访问这些虚拟声卡读写音频数据(相当于媒体流),进而完成信令和媒体的交互。 最初的Skype一个Skype账号在一台主机上只允许登录一次,所以我们最初使用时,注册了20个Skype账号,在一台Linux服务器上启动了20个Skype实例,并分别用不同的账号注册上去。对于FreeSWITCH而言,这20个实例就相当于20条外线,我们的SIP账号就可以通过这20条“Skype”外线打电话到其它的Skype账号上。 有什么用呢?当初我们在做在线一对一英语口语教学的,美国的老师使用SIP客户端,而学员一般使用手机(SIP客户端在我国不怎么稳定)与老师对话。但问题是,有的学员手机信号不好,有的呢,千里迢迢漫游到北京去上学习班(但却买我们的网络口语教学课程),无法支付高昂的漫游费。而使用Skype就解决了这一问题。 后来,Skype允许在一台主机上用同一账号多次登录,所以,我们就用同一个Skype账号登录20个Skype实例,实现了类似模块中继线的功能——打出去对外显示一个号。 当然,该模块是跨平台的,在Windows上也可以使用,也支持多账号。当前闲着没事的时候,我也实现了Mac来台上的支持,只不过后来没有继续开发,也没有合并到主分支里去。 mod_skypopen也是一个Endpoint。 ---------------------------------------- 题图:Before I die 来自 Google ---------------------------------------- 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 。

    02

    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

    mod_cluechoo

    今天,来说一说mod_cluechoo这个模块。在QQ群中看到好多朋友对此很好奇。 从名字看,不知道该模块是干什么的,而Wiki上对它的介绍也就只有一句话:mod_cluechoo implements Toyoda Masashi's famous Steam Locomotive (SL) command for FreeSWITCH。即,该模块在FreeSWITCH中实现了Toyoda Masashi的蒸汽机车命令。那么,该蒸汽机车又到底是什么东东呢?说来话长,可以看这里: http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html 。在UNIX系统上有一个ls命令,但有时候容易输错,成了sl,便会提示命令错误。而该蒸汽机车实现了一个sl命令,即蒸汽机车(Steam Locomotive)的英文缩写。实际上,该程序只是一个小小的玩笑,没什么实际用处。 该程序主要上对SL的介绍是这样的:SL (Steam Locomotive) runs across your terminal when you type "sl" as you meant to type "ls". It's just a joke command, and not usefull at all. Put the binary to /usr/local/bin. 那么,在FreeSWITCH中怎么玩呢? 该模块是默认编译和加载的,在FreeSWITCH控制台上重新加载一下该模块,便可以从日志中看出一些信息: freeswitch> reload mod_cluechoo 2014-01-18 22:30:17.610597 [CONSOLE] switch_loadable_module.c:1464 Successfully Loaded [mod_cluechoo] 2014-01-18 22:30:17.610597 [NOTICE] switch_loadable_module.c:269 Adding Application 'cluechoo' 2014-01-18 22:30:17.610597 [NOTICE] switch_loadable_module.c:315 Adding API Function 'cluechoo' 从上面的日志中可以看出,该模块实现了一个cluechoo App,以及一个cluechoo API。如果对App和API是什么东东不了解的同学可以复习一下前几天发的文章(我发文章有时候也是有伏笔的,呵呵)。 接着在命令控制台上输入以下命令,便会看到一辆小火车开过: freeswitch> cluechoo 那么App怎么使用呢?构造如下的Dialplan,拨打cluechoo试一试。 <extension name="cluechoo"> <condition field="destination_number" expression="^cluechoo$"> <action application="answer" data=""/> <action application="cluechoo" data=""/> </condition> </extension> 到这里,如果还不明白的同学继续回去看前几天讲的API和App。有兴趣的同学也要以看一看其源代码实现,挺有趣的哟 :) 。 ---------------------------------------- 题图:Steam Locomotive 来自FreeSWITCH cluechoo ---------------------------------------- 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中文社区,2

    03

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券