什么是 FreeSWITCH?

FreeSWITCH 是一个开源的电话软交换平台(Soft Switch),用于构建各种电话、语音、视频通信应用。由 Anthony Minessale 于 2006 年创建,使用 C 语言编写,以高性能、高稳定性著称。

💡 如果说 Asterisk 是"电话 PBX",那 FreeSWITCH 更像是"电话操作系统"——更底层、更灵活、更强大。


核心定位

┌─────────────────────────────────────────────────────┐
│                   上层应用                           │
│   呼叫中心  IVR系统  视频会议  语音网关  UC平台       │
├─────────────────────────────────────────────────────┤
│                 FreeSWITCH 核心                      │
│         媒体处理  信令处理  路由  计费  录音           │
├───────────────┬─────────────────────────────────────┤
│   SIP / WebRTC│  PSTN / GSM / ISDN / 模拟线路        │
└───────────────┴─────────────────────────────────────┘

核心架构

1. 🧠 核心引擎(Core)

  • 事件驱动、多线程架构

  • 模块化设计,功能通过模块动态加载

  • 内置状态机管理呼叫生命周期

2. 📦 模块系统(Modules)

类型

模块示例

功能

终端模块

mod_sofia

SIP 协议支持(最核心)

媒体模块

mod_opus mod_g729

音视频编解码

应用模块

mod_dptools

呼叫控制工具集

语言模块

mod_lua mod_python

脚本扩展

ASR/TTS

mod_tts_commandline

语音识别/合成

录音模块

mod_record

通话录音

数据库

mod_cdr_csv mod_odbc

CDR 话单入库

3. 🔌 ESL(Event Socket Layer)

  • 外部程序通过 TCP Socket 与 FreeSWITCH 实时交互

  • 支持 内联模式(inbound)外联模式(outbound)

  • 可用 Python、Node.js、Java、Go 等语言控制呼叫


支持的协议

协议

说明

SIP

最主流的 VoIP 信令协议,mod_sofia 实现

WebRTC

浏览器直接通话,mod_verto 实现

H.323

企业视频会议协议

PSTN

接入传统电话网络(配合硬件板卡)

RTMP

与流媒体平台对接

XMPP

即时消息与语音融合


支持的编解码

音频:G.711 / G.722 / G.729 / Opus / iLBC / SILK
视频:H.264 / VP8 / H.263

典型应用场景

☎️ 1. 企业 PBX / IP 电话系统

  • 分机注册、内部通话、外线呼入呼出

  • 替代传统硬件交换机

📞 2. 呼叫中心

  • ACD(自动呼叫分配)

  • 坐席管理、排队、监控、录音

🤖 3. IVR 语音自动应答

  • 结合 TTS/ASR 实现智能语音导航

  • 配合 Lua/Python 脚本灵活定制

🌐 4. VoIP 运营商 / 语音网关

  • SIP Trunk 接入

  • 协议转换(SIP ↔ H.323 ↔ PSTN)

🎥 5. 视频会议系统

  • 多方音视频会议

  • 配合 WebRTC 实现浏览器接入

🤖 6. AI 语音机器人

  • 结合 ASR(科大讯飞/百度)+ TTS + NLP

  • 实现智能外呼、智能客服


与 Asterisk 对比

对比项

FreeSWITCH

Asterisk

创建时间

2006

1999

编程语言

C

C

架构

多线程,稳定性强

早期单线程,新版改进

并发能力

极高(单机千路+)

中等

学习曲线

较陡

相对平缓

配置方式

XML 配置文件

.conf 文件

社区生态

较小但专业

更大更活跃

适用场景

运营商级、大并发

中小企业 PBX


关键特性亮点

  • 🚀 高并发:单机可承载 数百到数千路并发通话

  • 🔧 高度模块化:按需加载,极致灵活

  • 🌍 跨平台:Linux / Windows / macOS / FreeBSD

  • 📜 脚本驱动:Lua、Python、JavaScript 均可控制呼叫流程

  • 🔒 媒体安全:支持 SRTP + TLS 加密通话

  • 📊 CDR 话单:完整的呼叫详单记录


快速感受一下配置风格

<!-- 拨号计划示例:拨打 1000 转接到某分机 -->
<extension name="call_1000">
  <condition field="destination_number" expression="^1000$">
    <action application="bridge" data="user/1000"/>
  </condition>
</extension>
-- Lua 脚本示例:播放语音后挂机
session:answer()
session:streamFile("/sounds/welcome.wav")
session:sleep(1000)
session:hangup()

生态与工具

工具

说明

FusionPBX

基于 FreeSWITCH 的 Web 管理界面

FreePBX

也支持对接 FreeSWITCH

ESL 客户端库

Python-ESL、Node-ESL、Go-ESL

CDR-Stats

话单统计分析平台

Kamailio

常与 FreeSWITCH 配合做 SIP 代理


总结

FreeSWITCH = 高并发 + 高灵活 + 高稳定的电话中间件平台

它不是一个开箱即用的产品,而是一个强大的电话能力底座。如果你需要构建:呼叫中心、AI 语音机器人、运营商语音平台、WebRTC 通话应用……FreeSWITCH 都是非常值得考虑的技术选型。