本文更新于2022-12-09,使用FreeSWITCH 1.10.7。

目录

官方帮助文档:https://freeswitch.org/confluence/


(资料图片)

说明:下文中,部分大写为自定义变量,根据实际情况填写。使用[]引起表示内容可选,|表示使用左侧或右侧内容,...表示重复之前内容。

目录结构

在Linux下的默认安装路径为/usr/local/freeswitch,在Windows下的默认安装路径为C:\Program Files\FreeSWITCH。

命令行

freeswitch

freeswitch可使用以下命令行选项:

以及:

fs_cli

配置文件为~/.fs_cli_conf。

进入控制台可执行以下命令:

端口

日志

日志级别可使用数值或字符串表示。数值越大显示越详细,字符串不区分大小写:

信号

数据库

core.db

show命令的大部分内容基于这些表。

包含的表有:

sofia_reg_PROFILE.db

每个Profile都使用一个单独的数据库(PROFILE替换为实际的Profile名字)。

包含的表有:

接口

FreeSWITCH在核心(Core)中提供了很多抽象的接口,这些接口对同类型的逻辑或功能实体进行了抽象,但没有具体实现,具体的实现一般由外围的模块负责,核心层通过回调(钩子)方式调用具体的实现代码。

拨号计划

系统支持的拨号计划(Dialplan)及对应的模块:

呼叫字符串

呼叫字符串格式为(此处使用<>引起表示内容可选,/表示使用左侧或右侧内容,...表示重复之前内容。):

<{GLOBALVAR=VALUE<,...>}...><[LOVALVAR=VALUE<,...>]>DIALSTR<,/|...>

{}括起的通道变量是全局的,作用于呼叫字符串中每一条腿;[]括起的通道变量为局部通道变量,只作用于呼叫字符串中靠近它的某一条腿。通道变量VALUE中的逗号需要使用\转义,或在VALUE的开头使用^^C来将分隔符替换为指定的字符C。DIALSTR使用,隔开表示同振,使用|隔开表示顺振。

DIALSTR可为(一般来说,每种Endpoint都会提供相应的呼叫字符串,每一种呼叫字符串的类型都属于一个Endpoint Interface):

示例:

{origination_caller_id_name=test}{effective_caller_id_name=haha}user/1000{origination_caller_id_name=test}{effective_caller_id_name=haha}user/1000|sofia/internal/1001{origination_caller_id_name=test}[effective_caller_id_name=haha]user/1000,[effective_caller_id_name=hehe]sofia/internal/1001

挂机原因

官方文档见:https://freeswitch.org/confluence/display/FREESWITCH/Hangup+Cause+Code+Table

挂机原因有:

Channel状态机

HuntingNEW --> INIT --> ROUTING ---------> EXECUTE --> HANAGUP --> REPORTIG --> DESTROY                    ^                  |                    |     Transfer     |                    +------------------+

再Hunting时,只解析Dialplan,并不执行任何Action,而是将所有满足条件的Action都放到一个列表中,待呼叫流程进行到EXECUTE阶段时,再依次执行列表中的Action。

事件

Channel事件发生顺序:

  1. CHANNEL_CREATE
  2. CHANNEL_PROGRESS
  3. CHANNEL_PROGRESS_MEDIA
  4. CHANNEL_ANSWER
  5. CHANNEL_BRIDGE
  6. CHANNEL_EXECUTE
  7. CHANNEL_EXECUTE_COMPLETE
  8. CHANNEL_HANGUP
  9. CHANNEL_HANGUP_COMPLETE
  10. CHANNEL_DESTROY

媒体协商

在FreeSWITCH中,编码名称的格式为CODEC@HZh@PTIMEi。h代表Hz,即采样频率;i代表ptime,即打包间隔。CODEC、HZ、PTIME为实际的值。

FreeSWITCH支持的协商策略有:

推荐内容