首页
学习
活动
专区
工具
TVP
发布

FreeSWITCH中文社区

专栏作者
148
文章
200687
阅读量
59
订阅数
如何在XSwitch中开启TLS
随着时代的发展,TLS也慢慢成了SIP通信的标配,下面我们来看一下如何在XSwitch中开启TLS支持。
Seven Du
2022-06-24
1.1K0
用Android Studio编译BareSIP
BareSIP是开源的SIP协议栈,我们可以基于BareSIP开发软电话应用。我们可以在项目中直接引入BareSIP的库,也可以将BareSIP的源代码引入到项目中,目前BareSIP还不是很稳定,因此,使用后者的方式方便我们对BareSIP进行二次开发以及修改问题。
Seven Du
2020-12-21
1.4K0
iproute2: ip 和 ss
如果你装了Debian 9,很可以像笔者一样发现,有一些常用的命令如`ifconfig`和`netstat`不见了。
Seven Du
2020-12-21
9750
SIP鉴权过程
在SIP终端注册或呼叫时,为了安全起见,SIP Server通常需要对用户(主叫)的身份进行认证。
Seven Du
2020-12-21
4.1K0
如何让windows也能做代理。
上次杜老师分享了如何在Mac上使用Squid做代理让内网的机器可以联网,这次我给大家分享下如何让Windows也能做代理。
Seven Du
2020-12-21
2K0
在同一台电脑上启动多个FreeSWITCH实例
在《FreeSWITCH权威指南》中,我们曾讲过一个在同一台电脑上启动多个FreeSWITCH实例的例子。当时所有实例都使用同一个IP,下面,我们使用另一种方式实现,每个FreeSWITCH使用一个IP。
Seven Du
2020-12-21
1.2K0
你可不知道的抓包方法
说道抓包,可能大家都知道,直接打开wireshark选中网卡就可以开始了,有啥可说的?
Seven Du
2020-12-21
1.4K0
讨厌的ALG
这几天测试FreeSWITCH的Bypass Media功能,FreeSWITCH在公网上,客户端在私网,发现SDP数据被篡改,影响通话。
Seven Du
2020-12-21
1K0
码农怎么做SIP测试
最近,在测试一个比较复杂的FreeSWITCH功能和应用场景,这个场景是我们自己开发的,在远程服务器上开发,实验环境也不容易在本地重现,关键的问题是必须有一个远方的分机配合测试。
Seven Du
2020-12-21
9610
小技巧---FreeSWITCH在多张网卡的情况下指定IP
很多同学问,在FreeSWITCH有多张网卡的情况下怎么指定走哪一张。其实,FreeSWITCH是不知道网卡的,只知道IP。FreeSWITCH在启动时会自己选一个它认为最靠谱的IP(一般是能上互联网的那一个)做为默认的IP,这个IP就体现在 local_ip_v4 这个通道变量。那如果你想使用另外的网卡做为默认的IP呢?最简单的办法就是在vars.xml里加上一行,手动指定local_ip_v4。
Seven Du
2020-12-21
1.9K0
使用FreeSWITCH检测声音文件中的DTMF信息
今天,有网友问到一个问题——使用什么工具检测录音文件中的DTMF信息。其实FreeSWITCH本身就具备检测DTMF的功能,简单配置一下,写几个脚本就可以了。
Seven Du
2020-12-21
2.3K0
一个NAT问题解决过程
首先是有一个网友在QQ里私下问我问题,一般来说,我是不会私下回答任何问题的。因此,我让他到知识星球里问,后来就看到知识星球里有人问一个在NAT环境下电话不通的问题(不知道是不是跟私聊的一个人,私聊跟知识星球里对不上号,呵呵)。
Seven Du
2020-12-21
1.2K0
生活中的信令和媒体
这还不简单,咔咔咔,我能讲一小时。但对于非技术人员来讲,我应该怎么解释呢?讲个故事吧。
Seven Du
2020-12-21
1.3K0
模拟丢包测试
首先,FreeSWITCH在公网上,客户端在NAT环境中。我们先用客户端呼叫9196。呼通后可以听到自己的回音。
Seven Du
2020-12-21
2.5K0
OpenSIPs 2.1的一个问题
ERROR:rest_client:resume_async_http_req: curl_multi_perform: Please call curl_multi_perform() soon
Seven Du
2020-12-21
6150
使用Grandstream S口网关连接模拟话机和FreeSWITCH
准备接下来写一些FreeSWITCH与设备对接的内容。GrandStream在近两期培训中赞助了不少设备,先从GrandStream讲起吧。
Seven Du
2020-12-21
1K0
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
Seven Du
2020-12-21
1.1K0
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 。
Seven Du
2020-12-21
1.2K0
mod_enum
今天,说说mod_enum。说起enum,千万不要跟C语言里的枚举类型(enum)混了。ENUM是E.164 Number to URI Mapping的综合,即E.164号码到URI的映射关系。如果说到这里你还不理解的话,想象一下域名到IP地址的映射关系吧。当你在Internet上访问一个域名(网址)时,如www.freeeswitch.org.cn,将先由DNS服务器将该域名翻译成一个IP地址,进而,你的注册品会访问该IP地址以获取它想要的网页内容。ENUM也是一样,它只不过是使用了类似DNS的技术,将一个E.164的电话号码(也就是我们常用的电话号码)映射为一个相应的VoIP地址(可以是SIP、H323或Jabber的地址),这样,我们就可以通过拨打一个普通的电话号码来访问一个VoIP地址。提供这个号码映射关系的网站有e164.org和freenum.org,有兴趣读者可以试一下。如果读者比较仔细的话,可以看到在FreeSWITCH默认的Dialplan中有如下的设置: <extension name="enum"> <condition field="
Seven Du
2020-12-21
1.3K0
mod_rtmp
基于Flash的实时多媒体通信是基于Adobe的RTMP协议进行的。FreeSWITCH中通过“mod_rtmp”实现了一个基于RTMP协议的Endpoint,可以支持用Flash实现的软电话。虽然随着WebTC的出现,Flash前景不再被看好,但是在一定范围内它还将顽强的存在。而且,作为有别于SIP模块(“mod_sofia”)的另外一个Endpoint,也很有参考和借鉴意义。
Seven Du
2020-12-21
1.9K1
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档