当前位置: 首页 > news >正文

FreeSWITCH入门到精通系列(四):FreeSWITCH模块介绍与使用

FreeSWITCH模块介绍与使用

FreeSWITCH 是一个模块化的开源通信平台,支持语音、视频、即时消息和 WebRTC。其灵活性主要来源于模块化架构,允许用户根据需求加载不同的功能模块。本文将详细介绍 FreeSWITCH 的模块体系、核心模块、如何加载/卸载模块,并举例说明如何配置和使用它们。


1. FreeSWITCH 模块体系

在 FreeSWITCH 中,模块分为以下几类:

模块类型作用
核心模块 (Core Modules)FreeSWITCH 内部运行所必须的模块,例如 mod_sofia (SIP 处理)、mod_dptools (拨号计划工具) 等
应用模块 (Application Modules)用于扩展拨号计划功能,例如 mod_conference (会议)、mod_fifo (队列)
协议模块 (Endpoint Modules)处理不同的通信协议,例如 mod_sofia (SIP)、mod_verto (WebRTC)
编解码器模块 (Codec Modules)提供语音和视频编解码器,如 mod_opus (Opus)、mod_h264 (H.264)
数据库模块 (Database Modules)允许 FreeSWITCH 访问数据库,如 mod_pgsql (PostgreSQL)
事件处理模块 (Event Handling Modules)提供事件驱动能力,如 mod_esl (Event Socket Library)
脚本语言模块 (Scripting Modules)允许使用 Lua、Python、Perl 进行脚本编写,如 mod_luamod_python
媒体处理模块 (Media Processing Modules)提供音频处理、录音、TTS 等功能,如 mod_av (视频处理)

2. FreeSWITCH 模块管理

2.1 查看已加载模块

在 FreeSWITCH 控制台输入:

fs_cli -x "show modules"

示例输出:

name                    type        description
mod_sofia               endpoint    SIP Endpoint Module
mod_conference          application Conference Module
mod_opus                codec       Opus Codec
...

其中:

  • name:模块名称
  • type:模块类型(endpoint, application, codec, etc.)
  • description:模块说明

2.2 加载模块

在 FreeSWITCH 控制台执行:

fs_cli -x "load mod_sofia"

2.3 卸载模块

fs_cli -x "unload mod_sofia"

2.4 重新加载模块

fs_cli -x "reload mod_sofia"

2.5 在配置文件中启用模块

打开 /etc/freeswitch/autoload_configs/modules.conf.xml,找到 <modules> 部分,添加需要加载的模块:

<modules>
    <load module="mod_sofia"/>
    <load module="mod_conference"/>
    <load module="mod_opus"/>
</modules>

然后重启 FreeSWITCH:

systemctl restart freeswitch

3. 重要 FreeSWITCH 模块介绍

3.1 mod_sofia (SIP 处理)

mod_sofia 是 FreeSWITCH 的 SIP 处理模块,支持 SIP 终端和中继。
启用配置:

<configuration name="sofia.conf" description="Sofia SIP">
    <profiles>
        <profile name="internal">
            <gateway name="my_sip_provider">
                <param name="username" value="1001"/>
                <param name="password" value="password"/>
                <param name="proxy" value="sip.example.com"/>
            </gateway>
        </profile>
    </profiles>
</configuration>

常见命令:

fs_cli -x "sofia status"
fs_cli -x "sofia profile internal restart"

3.2 mod_conference (会议)

用于创建音频/视频会议室。
配置示例 (conference.conf.xml):

<configuration name="conference.conf" description="Conference Settings">
    <profiles>
        <profile name="default">
            <param name="energy-level" value="30"/>
            <param name="comfort-noise" value="true"/>
        </profile>
    </profiles>
</configuration>

拨号计划 (dialplan/default.xml):

<extension name="Conference">
    <condition field="destination_number" expression="^3000$">
        <action application="conference" data="3000@default"/>
    </condition>
</extension>

进入会议室:

fs_cli -x "conference 3000 list"

3.3 mod_fifo (队列)

用于创建呼叫队列,实现简单的呼叫中心功能。
配置示例 (fifo.conf.xml):

<configuration name="fifo.conf" description="FIFO Queues">
    <fifos>
        <fifo name="support_queue@default">
            <param name="announce" value="support-queue.wav"/>
        </fifo>
    </fifos>
</configuration>

拨号计划 (dialplan/default.xml):

<extension name="Enter FIFO Queue">
    <condition field="destination_number" expression="^4000$">
        <action application="fifo" data="support_queue@default in"/>
    </condition>
</extension>

3.4 mod_esl (事件处理)

用于外部应用控制 FreeSWITCH,可以通过 Python、Lua 监听事件。
ESL 连接示例 (python):

import ESL
con = ESL.ESLconnection("127.0.0.1", "8021", "ClueCon")
if con.connected():
    con.sendRecv("api status")
    print(con.getBody())

3.5 mod_lua (Lua 脚本)

FreeSWITCH 可以使用 Lua 处理自定义逻辑。
示例 (script.lua):

session:answer()
session:sleep(1000)
session:streamFile("hello.wav")
session:hangup()

拨号计划调用 Lua 脚本:

<extension name="Lua Script">
    <condition field="destination_number" expression="^5000$">
        <action application="lua" data="script.lua"/>
    </condition>
</extension>

4. 结论

  • FreeSWITCH 采用模块化架构,可灵活加载不同功能模块。
  • 通过 autoload_configs/modules.conf.xml 进行模块管理。
  • 关键模块包括 mod_sofia (SIP)、mod_conference (会议)、mod_fifo (队列)、mod_esl (事件处理) 和 mod_lua (脚本扩展)。
  • 结合不同模块可以构建复杂的 VoIP 应用,如呼叫中心、IVR、WebRTC 语音系统等。

希望这篇文章能帮助你掌握 FreeSWITCH 模块的基本使用。如果有任何问题,欢迎交流!🚀

相关文章:

  • C . Serval and The Formula【Codeforces Round 1011 (Div. 2)】
  • 社群经济4.0时代:开源链动模式与AI技术驱动的电商生态重构
  • DockerFile制作镜像(Dockerfile Creates an Image)
  • 在Spring Boot中,可以通过实现一些特定的接口来拓展Starter
  • 心法利器[132] | 大模型系统性能优化trick
  • 5.2 位运算专题:LeetCode 268. 丢失的数字
  • Ubuntu 系统部署 Ollama + DeepSeek + Docker + Ragflow
  • 企业微信实现“关联外部选项“、“审批控件中的外部选项“
  • Four.meme是什么,一篇文章读懂
  • 信息的度量
  • 安宝特方案丨安宝特AR远程医疗方案如何重塑智慧医疗服务体系?
  • Jetson Orin NX使用 Ollama 本地部署 deepseek
  • 2025年上软考——【系统架构设计师】考前60天冲刺学习指南!!!
  • 内网渗透-端口映射
  • ngrep :网络嗅探的利器
  • 【RAG综述系列】之 RAG 相关背景和基本原理
  • 乐道突围特斯拉
  • 六十天前端强化训练之第三十天之深入解析Vue3电商项目:TechStore全栈实践(文结尾附有源代码)
  • VRRP协议介绍及一些常见问题
  • C语言实现的冰墩墩
  • 中国银行副行长刘进任该行党委副书记
  • 外交部亚洲司司长刘劲松向菲方严肃交涉
  • 王毅:坚持金砖团结合作,改革完善全球治理
  • 第二艘国产大型邮轮实现坞内起浮,重点强化邮轮供应链本土化建设
  • 吕国范任河南省人民政府副省长
  • 消费维权周报|上周违规经营类投诉较多,涉诱导加盟等