昨天我们大体说了一下FreeSWITCH的架构,今天,我们一起来看一下FreeSWITCH中的模块。 我们可以在FreeSWITCH的源代码目录中找到各种模块。 FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。 FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的“FreeSWITCH中文社... ”,或在通迅录->订阅号中搜索“FreeSWITCH-CN”来订阅,也可以到官方网站上扫描二维码 FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。 ,该会议是由FreeSWITCH核心团队主办的。
该文章原载于:http://www.freeswitch.org.cn/2010/01/23/freeswitch-yu-asterisk.html ,也可以点击左下角的「查看原文」查看。 FreeSWITCH的事件系统用于记录尽可能多的信息。在设计时,我假设大多数的用户会通过一个个性化的模块远程接入FreeSWITCH来收集数据。 FreeSWITCH中另一个重要的概念是中心化的XML注册表。当FreeSWITCH装载时,它打开一个最高层的XML文件,并将其送入一个预处理器。 FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。 FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的“FreeSWITCH中文社... ”,或在通迅录->订阅号中搜索“FreeSWITCH-CN”来订阅,也可以到官方网站上扫描二维码
当然,说到模块,我们还得从FreeSWITCH的架构说起。我们先用一两天的间说一下FreeSWITCH的整体架构以及模块列表,然后,就可以式一一介绍所有模块了。 FreeSWITCH的整体架构我们已经在最前面看到了,更详细一点的,我们看下图。 ? FreeSWITCH由一个稳定的核心(Core)和外围模块(Modules)组成。 在安装完成后,则可以通过FreeSWITCH安装目录(一般是/usr/local/freeswitch)中的conf/autoload_configs/modules.conf.xml文件配置FreeSWITCH FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。 FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的“FreeSWITCH中文社... ”,或在通迅录->订阅号中搜索“FreeSWITCH-CN”来订阅,也可以到官方网站上扫描二维码
FreeSWITCH的官方网站是www.freeswitch.com,如果你对FreeSWITCH还不是很了解,可以先阅读什么是FreeSWITCH:http://www.freeswitch.org.cn 上安装FreeSWITCH,但如果你是个FreeSWITCH新手,使用Debian可以少踩好多“坑”。 在Debian上安装FreeSWITCH的方法见:https://freeswitch.org/confluence/display/FREESWITCH/Debian 。 而且,从源代码安装FreeSWITCH,也不需要PAT。 源代码下载地址:https://files.freeswitch.org/freeswitch-releases/ 。 :https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+Explained 配置:FreeSWITCH 缺省的配置是作为一个Home
FreeSwitch FreeSWITCH 是一个开源的软交换平台,用于构建实时通信和电话系统。它提供了丰富的功能和灵活的架构,适用于语音通话、视频通话、即时消息传递和其他实时通信应用。 语音识别和语音合成:FreeSWITCH 集成了语音识别和语音合成功能,可以实现自动语音应答(IVR)和语音交互系统。 强大的扩展性:FreeSWITCH 提供了丰富的 API 和开发工具,使开发者可以定制和扩展其功能。 安装FreeSwitch 下载地址: http://files.freeswitch.org/windows/installer 安装FreeSwitch 选择complete完整安装,默认安装路径在 C:\Program Files\FreeSWITCH 用管理员启动FreeSwitc,出现如下成功: 图片 配置 配置目录在安装路径下的/conf中 添加账号 Freeswitch 默认设置了20个用户
默认情况下,freeswitch内置了1000-1019这20个用户,如果需要添加更多用户,可以按如下步骤操作: 一、复制用户文件 \FreeSWITCH\conf\directory\default public static void main(String[] args) throws IOException { String template = "D:\\soft\\FreeSWITCH (f); fs.write(fileContent.getBytes()); fs.flush(); fs.close(); } } 二、调整\FreeSWITCH \conf\dialplan\default.xml 创建用户的xml后,freeswitch怎么知道加载这些新用户的xml呢? 三、调整\FreeSWITCH\conf\dialplan\public.xml 1 <extension name="public_extensions"> 2 <!
FreeSWITCH TDengine模块,用于存储话单,日志等。 FreeSWITCH是一个开源、高性能的多协议的媒体引擎和通信平台。 (即FreeSWITCH只做通话转发,主、被叫号码都不在本机管辖范围内) 理解FreeSWITCH: 理解了话单,我们还需要理解一下FreeSWITCH。 FreeSWITCH是一个B2BUA,常用于转发呼叫,典型的有以下几种模式: 终端呼叫FreeSWITCH,FreeSWITCH放音,将终端加入会议等。每一通电话产生一张话单。 如下图: 终端 --------> FreeSWITCH 终端A呼FreeSWITCH,FreeSWITCH将电话转发到终端B,产生两张话单(或一张合并后的话单)。 终端A --> FreeSWITCH --> 电信运营商T --> 手机号C 终端A <-- FreeSWITCH <-- 电信运营商T <-- 手机号C FreeSWITCH <-- 电信运营商
其实我在更早的时间就开始在FreeSWITCH里基于ffmpeg写一个模块,最初叫mod_ffmpeg。第一个可以运行的版本是在从Cluecon回来的飞机上调试成功的。 重新执行FreeSWITCH的configure,让FreeSWITCH找不到libav和ffmpeg。 然后,编译安装各个版本的libav和ffmpeg。 好了,有了多个 libav和ffmpeg, 怎么让FreeSWITCH找到它呢? 然后在mod_av下面执行 make install (你的FreeSWITCH必须正常编译过一遍啊,别说我没告诉你) 一切顺利的话,你就可以在FreeSWITCH里面load mod_av了。 最简单的办法是启动FreeSWITCH的时候加到环境变量里,如,可以用以下命令启动FreeSWITCH: LD_LIBRARY_PATH=/opt/av/lib /usr/local/freeswitch
FreeSwitch中添加新用户 FreeSwitch 中默认配置了20个用户,分别是: 1000 到 1019。 FreeSwitch中配置网关的方法 在VOIP通信系统中,经常要用到网关。那么网关怎么和FreeSwitch在一起配合使用? FreeSwitch中的录像功能和播放录像功能 FreeSwitch 系统中的录像功能 和 播放录像功能,系统都默认提供。 FreeSwitch播放语音文件 上一篇介绍了 FreeSwitch 的录音功能,若想回放这些录音,是否可以实现?或者说,通过 FreeSwitch ,是否可以直接播放语音文件? 再扩展下思维,能否让 FreeSwitch 实现融屏功能,实现与会各方都能彼此看到自己!那FreeSwitch就更强大了。
FreeSWITCH 1.10.7版发布于ClueCon 2021即将到来之际。 截止目前,杜老师在FreeSWITCH项目中的贡献已有566个Commit共计153553行代码,小樱桃其它小伙伴也有贡献并在追赶中。 很显然,杜老师和小樱桃对FreeSWITCH的贡献不仅如此。 杜老师以及他创办的小樱桃科技是真正热爱开源的公司,他们很愿意把自己写的代码与大家分享,诚然,并不是所有的代码都可以被上游接受,因此,小樱桃科技还维护了一个独立的分支: 主仓库: https://github.com/rts-cn/freeswitch 国内镜像: https://gitee.com/rts-cn/freeswitch 这个仓库的代码也将很快同步更新,星星越多更新就越快,欢迎大家随手给个星(刚看到新闻说某大厂开源项目会按星星给大家发钱
package com.cnblogs.yjmyzz.freeswitch.esl; import org.freeswitch.esl.client.IEslEventListener; import org.freeswitch.esl.client.inbound.Client; import org.freeswitch.esl.client.inbound.InboundConnectionFailure ; import org.freeswitch.esl.client.transport.event.EslEvent; import org.freeswitch.esl.client.transport.message.EslHeaders 参考文章: https://freeswitch.org/confluence/display/FREESWITCH/mod_event_socket https://freeswitch.org/confluence /display/FREESWITCH/Java+ESL+Client
它是一个App,在FreeSWITCH很早的版本里就有。 如果双方正在通话,则使用 eavesdrop uuid 就能监听某一路呼叫。
开发freeswitch呼叫中心 1、配置ivr 2、启用mod_callcenter 3、开发websocker接口,通过esl接口,发送callcenter_config 命令给fs 4、开发客户端页面 ,注册,注销,就绪,置忙等接口 5、开发来电弹屏,通过客户端读取redis参数实现 freeswitch的呼叫中心模块很方便的就可以让用户体验这种呼叫中心模式,包含了很多功能,具体参数的配置在使用中自行摸索 编译安装freeswitch时需要开启mod_callcenter、mod_fifo的编译,之后在安装完成之后在conf/autoload_configs/modules.conf.xml中去掉该模块相关行的注释 配置方法,编辑conf/autoload_configs/callcenter.conf.xml 其中domain是freeswitch的服务器ip地址,这种方法是配置静态的坐席,就是在配置文件中写死的
获取源码包 wget http://files.freeswitch.org/freeswitch-releases/freeswitch-1.*.*.tar.gz 这是资源站点,自行选择版本:http ://files.freeswitch.org/freeswitch-releases/ 3. 测试ODBC isql -v freeswitch 7. 配置FS的mod 编辑 /usr/local/freeswitch-1.*.*/modules.conf 根据你的需要开启mod 8. #按步骤执行如下命令: cd freeswitch/libs git clone https://freeswitch.org/stash/scm/sd/libvpx.git cd libvpx . #按步骤执行如下命令: cd freeswitch/libs git clone https://freeswitch.org/stash/scm/sd/libpng.git cd libpng .
默认情况下,拨打内部用户时,freeswitch需要该用户注册了才能对其发起呼叫,否则会提示-ERR USER_NOT_REGISTERED ? 2、FreeSwitch返回了401 Frame 2: 718 bytes on wire (5744 bits), 718 bytes captured (5744 bits) on interface CSeq: 1 REGISTER User-Agent: FreeSWITCH-mod_sofia/1.10.2-release~64bit Allow: INVITE, 注:如果对digest计算过程感兴趣的同学,可以参考 RFC3261规范及网友的文章 4、FreeSWITCH返回200 Frame 4: 704 bytes on wire (5632 bits), 顺利的话,会看出类似上面的结果 ,freeswitch中也可以通过命令验证: ? 可以看到20个用户注册成功,挑其中1个用户1001看下详情: ?
Awesome FreeSWITCH A curated list of awesome FreeSWITCH resources, modules, frameworks, libraries and - The FreeSWITCH Community. https://freeswitch.org - FreeSWITCH社区。 https://www.gitmemory.com/signalwire/freeswitch Git Memory of FreeSWITCH https://github.com/freeswitch 一些外围FreeSWITCH模块。 FreeSWITCH Docker Image by XSwitch.cn,Useful for learning FreeSWITCH.
FreeSWITCH的mod_spandsp模块提供了基于SIP的传真收发功能,但是mod_spandsp仅限于tiff文件,我们平时要发送的传真文件大部分是非tiff的,因此在发送前,我们就需要将这些文件统一转为 -dSAFER -sDEVICE=tiffg3 -sOutputFile=/tmp/test.tiff \ /tmp/test.pdf 之后在/tmp下我们就会看到test.tiff,然后我们就可以在FreeSWITCH 我们不可能将一个个文件手动执行命令行去转为tiff,我们需要开发一个中间件,比如笔者的项目中开发了一套系统,Web页面上点击发送传真的时候,会弹出文件选择框,选择后,中间件程序会把原始文件转为tiff,然后通过FreeSWITCH
FreeSWITCH中有两个模块支持HTTP Server功能。 里面的功能不多,不过,FreeSWITCH自己带了一个小小的FreeSWITCH Portal,这一块在《FreeSWITCH权威指南》里写得很详细,我们就不多说了。 我们来看看它提供的API: $ curl --user freeswitch:works localhost:8080/api/status
在Mac上用Preview、Keynote、ImageMagick和FreeSWITCH进行图像处理 现在处理图片的软件这么多,你可能奇怪为什么需要用到FreeSWITCH处理图像。 下面的任务是要进行颜色替换,为此,我使用FreeSWITCH的库libfreeswitch写了一个程序,先看效果。 ./c wenji-5.png wenji-6.png ? 上代码。 ]); 20 switch_img_free(&img); 21 } 程序很简单(简单起见没加太多的错误处理语句),用以下命令编译,生成可执行文件c: gcc -o c -I/usr/local/freeswitch /include/freeswitch -L/usr/local/freeswitch/lib -lfreeswitch c.c 不错,至此墨色浓淡,层次感都保存较好啦。 在看到此文之前,你是不是以为Preview只能用于看图,FreeSWITCH只能用于打电话呢?
ivr/8000/ivr-welcome_to_freeswitch.wav) 总是报错缺少文件数据参数,另外发现一个可以让freeswitch瞬间崩溃的方法: originate user/1000 &loop_playback +2 ivr/8000/ivr-welcome_to_freeswitch.wav,把括号去掉,在Freeswitch Console中输入 ,马上就崩了(windows /8000/ivr-welcome_to_freeswitch.wav! 参考文章: 1、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools:+playback 2、https://freeswitch.org /FREESWITCH/mod_dptools%3A+endless_playback 4、https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools