FreeSWITCH
文章平均质量分 58
介绍FreeSWITCH维护与开发的点滴
云梦谭
这个作者很懒,什么都没留下…
展开
-
FreeSwitch资源库
感谢杜老师的分享:GitHub - rts-cn/awesome-freeswitch: A curated list of awesome FreeSWITCH resources, modules, libraries and software. FreeSWITCH资源精选。原创 2024-03-16 15:54:31 · 232 阅读 · 0 评论 -
[转]WebRTC 人声检测与舒适噪音
早期版本的舒适噪音的格式定义在RFC 1890中,这个版本的格式只包含一个字段,就是噪音级别。舒适噪音生成器在接收端根据发送到给的参数,来产生类似接收端的舒适噪音, 用来模拟发送方的噪音环境。接收方在收到新的CN包后,会更新产生舒适噪音的参数。如果B具有VAD检测功能,那么B就可以在不说话的时候,发送特殊标记的语音流或者通过减少语音流发送的频率,来减少无意义语音的发送。除此以外,人声检测还能用于减少网络中语音包传输的数据量,从而极大的降低语音的带宽,极限情况下能降低50%的带宽。很少可能是两个人都说话的。转载 2024-01-27 13:32:32 · 117 阅读 · 0 评论 -
FreeSwitch发INVITE时怎么添加RURI参数
FreeSwitch发INVITE时怎么添加RURI参数原创 2023-01-01 08:00:00 · 609 阅读 · 0 评论 -
FreeSwitch消息队列
FreeSwitch 消息队列转载 2022-07-29 10:14:25 · 451 阅读 · 0 评论 -
FreeSwitch的限流配置
FreeSwitch的限流配置原创 2022-07-15 08:58:53 · 787 阅读 · 0 评论 -
FreeSwitch的docker部署
Docker部署FS是一种非常好的选择。而且FS本身就提供了支持。在FS源码包里,有一个名为docker的子目录:进入这个目录,可以看到三个子目录和一个说明文档README:base_image master README release进入master,看看它的Dockerfile:# vim:set ft=dockerfile:FROM debian:jessie# Source Dockerfile:# https://github.com/docker-libr原创 2022-05-31 18:03:08 · 2298 阅读 · 0 评论 -
FreeSwitch读帧代码走读
FreeSwitch 的switch_core_session_read_frame函数代码走读笔记。原创 2022-03-24 16:59:21 · 808 阅读 · 2 评论 -
freeSwitch DISA实现
D.I.S.A. (Direct Inward System Access),是提供一种呼入平台转呼出的特性。注意这类特性的安全。摘录来自wiki的一个lua实例。dialplan:<extension name="disa"> <condition field="destination_number" expression="^disa$"> <action application="lua" data="disa.lua"/>...原创 2022-01-04 17:41:48 · 265 阅读 · 0 评论 -
FreeSWITCH的MRCP端口范围
FeeSwitch 的MRCP模块RTP端口配置。原创 2021-11-22 17:07:02 · 1500 阅读 · 0 评论 -
FreeSWITCH 1.10.7发布
FreeSWITCH 1.10.7发布FreeSWITCH 1.10.7版发新版本发布以及2021ClueCon大会即将开幕。https://mp.weixin.qq.com/s/L02iTFpaRmAQ_PAjg154LgFreeSWITCH 1.10.x Release notes - FreeSWITCH - Confluence很感谢杜老师的资源。从中学习了很多。...原创 2021-10-26 09:41:09 · 764 阅读 · 0 评论 -
FreeSwitch Originate API
FreeSwitch originate API的使用详解。原创 2021-10-25 17:07:08 · 2922 阅读 · 0 评论 -
FreeSwitch Inline Dialplan
在组织FreeSwitch的dialplan时,很多时候APP操作的是extension(比如说bridge或originate)。但是,在一些场景,我们又希望在代码里由嵌入另一段dialplan执行,而不是指定某个特定的extension,这时,inlinedialplan就派上用场了。1. 基本语法'app1:arg1,app2:arg2,app3:arg3' inline注意:单引号通常是必要的,但是,如果只执行一对简单的app:arg,是可以不带单引号的。比如:...原创 2021-10-08 09:35:41 · 756 阅读 · 0 评论 -
FreeSwitch mod_dptools: playback
1.概述About playback的用途是在当前channel播放一个文件。 如果文件是MP3格式的,那么需要编译加载mod_shout模块。 可以用uuid_breakAPI命令打断文件的播放。2.用法<action application="playback" data="<sound-file-to-play>[@@<seek-offset>]"/> 参数 描述 实例 sou...翻译 2021-09-28 09:53:03 · 1848 阅读 · 1 评论 -
FreeSwitch uuid_bridge代码分析
uuid_bridge是个API调用。它的功能是把两个channel桥接在一起。 uuid_bridge是由mod_commands模块实现的。这个模块实现了很多API命令接口。首先从SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)里找API的实现映射,即入口函数名uuid_bridge_function:跳转到函数的实现处:这个函数很短,关键调用就一个:switch_ivr_uuid_bridge。接下...原创 2021-09-22 09:01:36 · 1365 阅读 · 0 评论 -
uuid_broadcast用法
FreeSwitch的uuid_broadcast API,可以在指定的Channel上执行任意的APP,典型的比如播放一条插入的语音什么的。其参数的基本语法:"app::args" 。基本用法(播放语音,path指定文件路径): uuid_broadcast <uuid> <path> [aleg|bleg|both] 执行APP时,可以让在执行完APP后FS自动拆线,这时用!+hangup_cause描述,APP如果有参数,用两个冒...原创 2021-09-15 17:41:05 · 1404 阅读 · 2 评论 -
FreeSWITCH锁定协商好的codec
在呼叫持续期间,如果通话中的一方使用电话保持功能,会触发re-invite,由于某种原因,re-invite协商的结果,可能会和初始INVITE的协商结果不同。但是,在大部分场合里,我们是希望整个通话过程中,codec不要变化的。有没有什么解决办法呢? 为了达成目的,我们可以在同一context下添加一个extension:<extensionname="lock_codec"><conditionfield="destination_nu...原创 2021-08-03 15:37:12 · 649 阅读 · 0 评论 -
FreeSwitch与redis
FreeSwitch与redis相关的模块有两个,mod_redis和mod_hiredis。其中mod_redis实现一种后端呼叫限制的机制;而mod_hiredis则实现了配置和运行redis的一套接口。所以,后者完全能够实现前者的功能。1. mod_redis1.1编译安装 进入FreeSWITCH源码所在的目录modules.conf文件,确保mod_redis已经启用,然后执行以下命令编译:make mod_redis-install把r...原创 2021-07-22 15:44:45 · 1348 阅读 · 3 评论 -
freeSWITCH detect_speech源码分析
前段时间用detect_speech配合阿里的引擎做了些ASR的测试。涉及到一点源码的改动。这里记录detect_speech的源码。有助于理解FS的ASR实现。原创 2021-07-07 17:11:33 · 1057 阅读 · 1 评论 -
FreeSWITCH 对接阿里SDM(MRCP-SERVER)
1. 准备工作开通阿⾥云智能语⾳服务1. 注册阿⾥云账号;2. 到“智能语⾳交互服务”⻚⾯,点击『⽴即开通』,开通ASR/TTS相关服务https://data.aliyun.com/product/nls;测试账号是免费的,但并发路数有限2. 安装部署SDM按照阿里提供的文档《SDM(MRCP-SERVER)公共云镜像使⽤》部署就可以。3. FreeSWITCH安装配置3.1编译mod_unimrcp并安装打开,保证这一行打开asr_tts/mod_unimr原创 2021-06-28 13:59:32 · 2101 阅读 · 7 评论 -
mod_unimrcp配置
mod_unimrcp是FreeSWITCH实现媒体资源控制协议(MRCP)通信的模块。FS充当MRCP的Client端,与MRCPSERVER交互。MRCPV1使用RTSP协商,V2使用SIP。mod_unimrcp同时支持这两个版本。这里描述unimrcp的SIP交互的配置。 通过MRCP,可以实现ASR、TTS这类业务。mrcp_profiles MRCP profile定义了一个特定MRCPSERVER的通信配置。这个机制让FS可以和不同的...原创 2021-06-24 13:08:29 · 1574 阅读 · 1 评论 -
FreeSwitch 的Lua脚本与数据库
转至元数据结尾由Belaid Areski创建, 最终由Mike Jerris修改于2016.01.26转至元数据起始AboutLua scripts allow one to connect to databases and external resources.Two Lua options are available if you are developing a FreeSWITCH application interfacing with a DBMS.C...翻译 2021-06-15 17:49:30 · 1470 阅读 · 0 评论 -
FreeSwitch调试小技巧
Enabling SIP TracingAt fs_cli type:sofia loglevel all 9sofia global siptrace onLog LevelEdit console.conf.xml<param name="log_event" value="DEBUG"/> <param name="all" value="DEBUG"/>Edit switch.conf.xml (especially if you have.原创 2021-06-07 16:54:37 · 739 阅读 · 0 评论 -
FreeSwitch的正则表达式实例
https://freeswitch.org/confluence/display/FREESWITCH/Regular+Expression1 摘要 本文列举一些便利的正则表达式。在FreeSwitch的世界里,正则表达式的身影随处可见。这份文档里有很多实例,说明XML拨号方案的条件表达式里是怎样使用正则表达式的,有兴趣的话可参考。2 值的获取 圆括号里的模式匹配时,其值会按顺序转储到变量里,变量名$1, $2......而变量$0包含完整的p...翻译 2021-05-25 09:07:42 · 2583 阅读 · 0 评论 -
如何通过CLI获取Freeswitch的某个channel的通道变量列表
在FS的二次开发过程中,通道变量扮演极其重要的角色。那么,有没有办法实时获取通道变量的值呢? FS提供了一个app,叫info,可以在dialplan时获取通道变量信息。 用法用于当前leg:<actionapplication="info"/>用于bleg:<actionapplication="set"data="bridge_pre_execute_bleg_app=info"/>用在lua脚本...原创 2020-11-30 09:12:56 · 2406 阅读 · 4 评论 -
FreeSwtich的监听功能
FreeSwitch提供了一个APP实现通道的监听功能,它的名字是:eavesdrop。如果要持续监听某个用户,那么要用mod_spy里实现。用法Usageeavesdrop [<uuid>|all]相关通道变量<actionapplication="set"data="eavesdrop_require_group=<groupID>"/><actionapplication="set"data="ea...原创 2020-10-26 08:54:20 · 2459 阅读 · 1 评论 -
openresty配置自签证书供Freeswitch https连接
HTTPS需要的证书,必须是认证机构颁发的,但是在开发环境下,注重实践,也不一定拥有证书对应的域名,那么可以用openssl生成,自己给自己颁发一个证书!1. openssl的版本信息# openssl versionOpenSSL 1.1.1c FIPS 28 May 20192. openresty的版本信息# /usr/local/openresty/nginx/sbin/nginx -vnginx version: openresty/1.17.8.23. ...原创 2020-09-28 17:39:35 · 753 阅读 · 0 评论 -
FreeSWITCH背后的故事(译)
http://www.dujinfang.com/2009/10/31/freeswitchbei-hou-de-gu-shi.html本文原是是Anthony Minessale写的。杜金房先生翻译的。个人认为对研究FS还是有借鉴意义,转载于此。[freeswitch] 本文由Anthony Minessale写于2007年5月。来自www.freeswitch.org。翻译它是因为我觉得永远都不会过时... --Seven 我开发FreeSWITCH已经近两...转载 2020-06-28 10:07:15 · 675 阅读 · 1 评论 -
FreeSwitch 的Ring group功能
FreeSwtich安装完毕之后,自带Ring group功能。拨号方案 <extension name="call-group-simo"> <condition field="destination_number" expression="^82(\d{2})$"> <action application="bridge" data="{leg_timeout=15,ignore_early_media=true}...原创 2020-06-17 16:35:08 · 1783 阅读 · 5 评论 -
利用mod_lua实现动态配置FreeSwtich
FreeSwtich默认的配置体系是XML文件,修改配置后需要reloadxml生效。这对于大型线上系统,是不可接受的。FreeSwitch本身提供了几种不同的动态配置接口,比如mod_xml_curl,本文介绍利用mod_lua动态配置FS的方法。 通过mod_lua模块,你可以利用lua实现动态配置。绑定一个脚本处理XML请求,就像mod_xml_curl那样,动态地把所需要的XML片段喂给FS,指示FS的执行。实现应用与数据的分离。FreeSWITCH需要某种XML信...原创 2020-06-15 17:07:45 · 2248 阅读 · 5 评论 -
CentOS FreeeSwitch安装后处理
文件权限设置 一般情况下,我们经常用root用户编译安装FS。并用root用户运行FS。 基于安全考虑,我们安装完毕后,还是需要配置一下,建立一个FS专属的运行用户。执行下面脚本post_install_fs.sh:#!/bin/bash # create user 'freeswitch'# add it to group 'freeswitch'# change owner and group of the freeswitch i...原创 2020-06-01 09:25:40 · 315 阅读 · 0 评论 -
FreeSwitch呼出流程分析
为了简单起见,用下面的fs cli命令发起一路单边外呼:originate sofia/192.168.1.8/1000 &playback(ivr/8000/ivr-welcome_to_freeswitch.wav) 注意连接串写的是sofia/192.168.1.8/1000,直接指定sofia的具体profile,而不是用user/1000,因为后者是个虚拟的逻辑概念,定位过程中会引入originate的递归调用,增加复杂度。endpoint_in...原创 2020-05-25 08:58:56 · 2232 阅读 · 2 评论 -
FreeSwitch呼入处理流程
为了简单起见,本文分析一个单边呼叫。让终端呼入到FS,然后播放一个文件就退出,不执行FS的呼出动作。参考拨号方案: <extension name="fs_one_way_inbound"> <condition field="destination_number" expression="^10086$"> <action application="sleep" data="1000 "/> <...原创 2020-05-20 08:45:39 · 2327 阅读 · 1 评论 -
FreeSwitch状态机静态接口分析
本文从静态数据结构的视角描述FreeSwitch的状态机。 FreeSwitchcore实现了一个有限状态机。每一路呼叫的一条腿,都由一个状态机实例维护。状态机定义接口在freeswitch-1.8.7\src\include\switch_types.h文件中/*! \enum switch_channel_state_t \brief Channel States (these are the defaults, CS_SOFT_EXECUT...原创 2020-05-19 13:03:19 · 1170 阅读 · 0 评论 -
FreeSwitch Sofia模块加载过程
上时序图:原创 2020-05-14 17:12:01 · 798 阅读 · 1 评论 -
FreeSwitch模块加载过程
本文基于FreeSwitch V1.8.7分析。 首先是模块接口定义: 类型定义:接口定义于\freeswitch-1.8.7\src\include\switch_types.htypedef struct switch_loadable_module_function_table { int switch_api_version; switch_module_load_t load; switch_module_shutdown_t s...原创 2020-05-13 17:14:29 · 710 阅读 · 0 评论 -
CentOS8 安装FreeSwitch的RPM源设置
FS官方在1.6版本时,针对CentOS7有一个依赖解决方案的,在CentOS 7 64位也是可以工作的。不过似乎没有找到CentOS8的。感谢大神提供的另一个源,可以解决大部分需要的依赖包,减少大部分自己编译的工作: https://okay.network/blog-news/rpm-repositories-for-centos-6-and-7.html...原创 2020-05-12 09:58:26 · 1338 阅读 · 0 评论 -
FreeSwitch配置ODBC
环境:CentOS7FS版本:V1.8.5安装unixODBCyum install -y unixODBC unixODBC-devel mysql-connector-odbc配置数据源数据源编辑/etc/odbc.ini[freeswitch]Driver = MySQLSERVER = localhostPORT = 3306DATABA...原创 2019-05-07 17:26:28 · 2847 阅读 · 1 评论 -
FreeSwitch 编码协商
https://freeswitch.org/confluence/display/FREESWITCH/Codec+Negotiation摘要 编码协商可能是一个令人困惑的主题。如果您不熟悉SDP(会话描述协议),那么这就增加了一层额外的神秘。如果你对这个话题感到陌生(或者只是对你所读过的和经历的东西感到困惑),那么希望通过这个简短的介绍,事情会变得更清楚一些。...翻译 2019-03-27 16:54:01 · 6178 阅读 · 0 评论 -
CentOS 7 安装FreeSwitch 1.8.5
这两天因为需要,在CentOS上安装FS V1.8.5,期间碰到些问题,记录下安装过程。操作系统:CentOS 7 64位(本文所述方法不适用于32位的安装)准备工作依赖包安装yum install-y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm epel-releaseyum insta...原创 2019-03-18 16:18:09 · 3791 阅读 · 2 评论 -
Freeswitch一路呼叫的生命周期
源文:https://freeswitch.org/confluence/display/FREESWITCH/Life+Cycle+of+a+Call作者 Brian West, 最后修订者 John Boteler ,修订日期 2016.01.31 摘要本文描述FreeSWITCH如何处理一路典型的SIP呼叫。 1 FreeSWITCH上注册分机间的典型SIP呼叫 2 ...翻译 2018-08-22 19:22:28 · 1888 阅读 · 0 评论