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

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 模块的基本使用。如果有任何问题,欢迎交流!🚀


http://www.kler.cn/a/599524.html

相关文章:

  • langchain-ollama的ragflow简单实现
  • [Windows] AI智能音频分离软件SpleeterGui v2.9.5.0【官方中文版】
  • 作业12 (2023-05-15 指针概念)
  • 卷积神经网络 - LeNet-5
  • Python+AI助力智能仓储:效率与科技的完美融合
  • Xamarin.Android实现本地化部署DeepSeek的对话功能
  • 【DFS】羌笛何须怨杨柳,春风不度玉门关 - 4. 二叉树中的深搜
  • STM32八股【3】------RAM和片上FLASH
  • System.arraycopy 在音视频处理中的应用
  • TDengine 用户权限管理
  • Elasticsearch:设置向量搜索
  • 【机器学习基础 4】 Pandas库
  • 大模型应用(Java)2025/3/24
  • [Lc18_BFS拓扑排序] 邻接表 | 课程表I II
  • AI Tokenization
  • windows与linux开发板之间设置nfs共享文件
  • 23种设计模式-外观(Facade)设计模式
  • C#中 String类API(函数)
  • 数据结构八股
  • Android11-12-13 替换系统默认壁纸