FreeSWITCH 架构

总体架构

核心和多个外围模块组成。

核心

核心实现关键的数据结构、状态机、数据库等。核心代码提供Public API 调用核心功能。核心保持了最高程度的抽象,因为可以调用不同的功能、不同协议的模块。

数据库(DB)

FS核心使用内部队列、哈希存储数据外,还采用外部数据库来存储。提高性能、降低死所的风险。FreeSWITCH内置SQLite 作为数据存储。核心数据库存储位置/usr/local/freeswitch/db/core.db

公共应用程序接口

FS 在核心层实现了一些Public API ,这些API 可以被外围的模块调用。

接口

FS 层还提供了很多抽象的接口,供外围模块实现。

事件

FS 在内部也使用消息和事件机制进行进程间和模块间通信。

在FS外部,可以通过Event Socket等接口订阅相关的事件  

订阅事件的方法:

/event plain ALL

/event plain CHANNEL_ANSWER

/event plain CUSTOM sofia::register

终端(EndPoint)

EndPoint  是终结FS的地方,他主要包含了不同呼叫控制协议的接口,比如:SIPTDM硬件H323以及Google Talk等。

拨号计划

主要功能是查找电话路由功能,系统默认是由mod_dialplan_xml提供,它是由xml描述的。

聊天计划

ChatPlan是对文本消息进行路由,如:SIP SIMPLE,SKYPE Message,XMPP Message等。它是在mod_sms中实现的。

应用程序(Application, APP)

FS 提供了许多App使复杂的任务变得简单,比如:mod_voicemail模块可以实现语音留言。mod_conference模块泽实现高质量的多方会议。是由mod_dptools提供。

命令接口(FSAPI)

FSAPI  是一种对对外的命令接口,原理输入一个字符串,该字符串由内部模块处理,然后输出一个具备一定格式的文本。

XML 接口

XML接口支持多种获取XML的方式,它可以从本地配置文件或数据库中读取,也可以通过HTTP 服务器中读取。

编解码器

FS 支持多种语音、视频的codec。

语音识别及语音合成

支持ASR和TTS合成

格式、文件接口

支持不同格式声音文件回放、录音。如果wav和mp3等。

日志

日志可以写到控制台、日志文件、系统日志以及远程的日志服务器。实现日志的模块:mod_console、mod_logfile、mod_syslog

定时器

实时语音通话需要非常准确的定时器,在FS中,可以使用软时钟或内核时钟。FS最理想的工作时钟频率是1000Hz,而某些Linux发行版或虚拟机的内核默认是100Hz或250Hz,在这种情况下,可以使用内核提供的时钟接口,或者重新编译内核调整时钟频率。

嵌入式语言

通过swig可以支持多种嵌入语言进行控制呼叫流程。

事件套接字

通过Event Socket可以控制呼叫流程,扩展FS功能。

 

原文地址:https://www.cnblogs.com/damizhou/p/14130436.html