外观
FreeSWITCH 模块配置文件详解 (autoload_configs/)
本文详细介绍 freeswitch-install/etc/freeswitch/autoload_configs/ 目录下全部核心模块配置文件(.conf.xml)的参数含义、配置结构、修改要点与典型应用场景。
1. autoload_configs 目录与配置机制概述
在 FreeSWITCH 体系中,除拨号计划(dialplan/)、分机目录(directory/)和 SIP 协议栈(sip_profiles/)外,所有核心引擎与扩展模块的参数均统一定义在 autoload_configs/ 目录下:
- 命名规范:模块名去除
mod_前缀并加.conf.xml(例如mod_sofia对应sofia.conf.xml,mod_event_socket对应event_socket.conf.xml); - 主引擎与核心系统配置:包括
switch.conf.xml(系统核心)、modules.conf.xml(加载清单)、acl.conf.xml(访问控制)等; - 热重载机制:大部分模块配置修改后,在
fs_cli执行reload <module_name>或reloadxml即可免重启即时生效。
2. 核心基础设施配置 (Core Infrastructure)
2.1 系统核心配置:switch.conf.xml
定义 FreeSWITCH 全局并发、媒体端口、软时钟与底层线程池。
xml
<configuration name="switch.conf" description="Core Configuration">
<settings>
<!-- 1. 最大并发呼叫通道数与每秒新呼叫速率控制 -->
<param name="max-sessions" value="1000"/> <!-- 最大并发呼叫数 -->
<param name="sessions-per-second" value="50"/> <!-- 每秒最大允许发起的新呼叫数 (CPS) -->
<!-- 2. RTP 媒体端口范围 (必须与防火墙 UDP 放行一致) -->
<param name="rtp-start-port" value="30000"/>
<param name="rtp-end-port" value="30199"/>
<!-- 3. 核心数据库连接 (通过 $${ops_db_dsn} 集中接入高性能 PostgreSQL,替代本地 SQLite) -->
<param name="core-db-dsn" value="$${ops_db_dsn}"/>
<param name="auto-create-schemas" value="true"/> <!-- 启动时自动校验并初始化核心数据表 -->
<!-- 4. 核心软时钟 (推荐 soft,避免虚拟机/容器下物理时钟漂移) -->
<param name="rtp-enable-timer" value="true"/>
<param name="soft-timer" value="true"/>
<!-- 5. 核心日志与 CPU 保护 -->
<param name="colorize-console" value="true"/>
<param name="min-idle-cpu" value="25"/> <!-- 当空闲 CPU 低于 25% 时降级/拒接新呼叫 -->
</settings>
</configuration>💡 核心数据库迁移至 PostgreSQL 的价值: 默认 SQLite 采用单文件锁,当并发呼叫或频繁注册达到峰值时极易引发
database is locked异常。配置core-db-dsn="$${ops_db_dsn}"后,通道会话表、SIP 注册表统一由外部 PostgreSQL 处理,消除 I/O 锁竞争,同时支撑跨实例高可用与状态共享。
2.2 静态模块加载清单:modules.conf.xml
定义 FreeSWITCH 启动时自动加载的模块列表。
xml
<configuration name="modules.conf" description="Modules">
<modules>
<load module="mod_console"/>
<load module="mod_logfile"/>
<load module="mod_sofia"/>
<load module="mod_event_socket"/>
<load module="mod_audio_fork"/> <!-- AI 实时语音流式识别关键模块 -->
<load module="mod_shout"/> <!-- 流式 TTS 播放模块 -->
<load module="mod_opus"/> <!-- 高清音频编解码 -->
<load module="mod_dptools"/>
<load module="mod_commands"/>
<!-- 按需增删对应模块即可 -->
</modules>
</configuration>2.3 网络访问控制列表:acl.conf.xml
定义允许访问 SIP、ESL 或 Web 服务的 IP 白名单/CIDR 网段。
xml
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<!-- 局域网白名单 -->
<list name="lan" default="deny">
<node type="allow" cidr="192.168.0.0/16"/>
<node type="allow" cidr="10.0.0.0/8"/>
<node type="allow" cidr="172.16.0.0/12"/>
<node type="allow" cidr="127.0.0.1/32"/>
</list>
<!-- 运营商 SIP Trunk 信任 IP 列表 -->
<list name="carrier-whitelist" default="deny">
<node type="allow" cidr="203.0.113.50/32"/>
</list>
<!-- WebRTC TURN Relay 候选过滤 ACL -->
<list name="softphone-turn-relay" default="deny">
<node type="allow" cidr="123.57.205.60/32"/> <!-- 填入公网 coturn IP -->
</list>
</network-lists>
</configuration>2.4 日志系统配置:console.conf.xml 与 logfile.conf.xml
控制终端与文件日志的输出级别与滚动策略。
xml
<!-- logfile.conf.xml: 本地日志文件写入 -->
<configuration name="logfile.conf" description="File Log">
<settings>
<!-- 日志文件最大体积(字节),超过后自动按时间戳轮转归档 -->
<param name="rollover" value="104857600"/> <!-- 100MB -->
<param name="maximum-rotate" value="30"/> <!-- 最多保留 30 个历史归档 -->
</settings>
<profiles>
<profile name="default">
<settings>
<param name="logfile" value="$${log_dir}/freeswitch.log"/>
<!-- 输出级别:DEBUG, INFO, NOTICE, WARNING, ERR, CRIT, ALERT -->
<param name="level" value="info"/>
</settings>
</profile>
</profiles>
</configuration>3. 实时 AI 语音与多媒体配置 (AI & Media)
3.1 流式 TTS 播放与 MP3 编解码:shout.conf.xml
mod_shout 模块由底层库 libshout(流媒体推流)、libmpg123(MP3 解码)和 libmp3lame(MP3 编码)驱动。它在 AI Voice 平台中承担 流式 TTS 边合成边播报 的核心职责。
3.1.1 配置文件全貌与音量调节指南 (freeswitch-install/etc/freeswitch/autoload_configs/shout.conf.xml)
xml
<configuration name="shout.conf" description="mod shout config">
<settings>
<!-- 1. 指定 MP3 解码器 CPU 指令集架构 (默认留空,由 libmpg123 自动探测最优 CPU 指令集) -->
<!-- 可选值: generic, i586, mmx, 3dnow, sse, x86-64, arm, neon 等 -->
<!-- <param name="decoder" value="generic"/> -->
<!-- 2. 全局音量缩放倍率 (浮点数,默认 1.0 为原始音量;若需软件增益放大可设为 1.2 ~ 1.5) -->
<!-- <param name="volume" value="1.0"/> -->
<!-- 3. 输出定点数幅度缩放 (默认 32768 为 100% 满量程标准音量) -->
<!-- ⚠️ 注意:若设为 8192 会被衰减至 1/4 (25% 音量,相当于 -12dB),导致播放声音极小! -->
<!-- <param name="outscale" value="32768"/> -->
</settings>
</configuration>3.1.2 outscale 原理解析与声音偏小排查方案
什么是 outscale?
libmpg123 在解码 MP3 时,内部计算使用浮点数,输出时需转换为 16 位有符号定点 PCM(范围 -32768 ~ 32767):
32768(标准默认值):32768 / 32768 = 1.0(0 dB,100% 满量程输出,正常音量);8192(严重衰减):8192 / 32768 = 0.25(-12 dB,音量仅剩正常音量的 25%);- 为什么官方注释会提及 8192?:某些未经正规母带处理的高增益音乐文件容易在解码时产生削顶爆音(Clipping),设置
8192是极端保守的防爆音手段,但在普通 TTS 语音播报场景下会导致声音听感非常轻/偏小。
声音变小了如何调整?
| 调整目标 | 推荐配置 / 指令 | 说明 |
|---|---|---|
| ① 恢复标准正常音量(最常用 ⭐️) | 注释掉 <param name="outscale".../>或设为 <param name="outscale" value="32768"/> | 恢复 100% 标准音量输出 |
| ② 软件全局增益放大 | <param name="volume" value="1.3"/> | 在解码器层将整体音量放大 1.3 倍 |
| ③ 业务通话动态增益(无需改配置) | Dialplan: <action application="set" data="playback_volume=3"/>ESL: uuid_audio <uuid> start write level 3 | 在 FreeSWITCH 通道层增加 +3dB 播报增益 |
| 模式 | 调用语法 | 底层工作机制与 AI 平台应用 |
|---|---|---|
| ① HTTP 流式 TTS 实时播放 (Streaming TTS ⭐️) | playback shout://<tts-host>:9080/tts-stream/<id>.mp3 | mod_shout 作为 HTTP/Shoutcast 客户端向 sherpa-tts-server 发起 HTTP GET 请求。TTS 服务一边推理一边分块输出 MP3 字节流,mod_shout 边接收边通过 libmpg123 实时解码为 8k/16k/48k PCM 音频送入电话通道,将 TTS 首包播放延迟降至 200ms 以内。 |
| ② 本地 MP3 文件静态播放 | playback /var/recordings/welcome.mp3 | FreeSWITCH 核心格式子系统识别 .mp3 后缀并交由 mod_shout 解码,无需提前将音频批量转码为 .wav。 |
| ③ 通话实时推流与广播录音 (Live Stream Broadcast) | record shout://source:pass@icecast-server:8000/live.mp3 | 结合 libmp3lame 将通话通道中的双向实时混音动态编码为 MP3 格式,并以 Shoutcast/Icecast 协议实时推流到远端流媒体服务器,用于在线直播质检或外部广播。 |
3.2 本地连续流媒体与背景环境音:local_stream.conf.xml
mod_local_stream 负责将本地指定目录中的音频文件预先循环解码到内存中,以固定采样率生成连续、无间断的实时音频流通道(URL 语法形如 local_stream://<channel_name>)。
3.2.1 核心配置与 AI 平台通道全貌 (freeswitch-install/etc/freeswitch/autoload_configs/local_stream.conf.xml)
xml
<configuration name="local_stream.conf" description="stream files from local dir">
<!--
=============================================================================
【本地音频目录循环流服务配置 (local_stream.conf)】
本配置文件定义由 mod_local_stream 模块提供的内存级循环音频流。
该模块将指定磁盘目录下的所有音频文件(如 WAV 格式的保持音乐、自然白噪音、
办公室交谈声)预加载并以固定采样率在内存中循环混音推流。
【AI 语音平台业务实战机制】
1. 零磁盘 I/O 损耗:内存单实例循环解码,千路并发通道同时挂接同一流时零额外 CPU/磁盘开销。
2. 高拟真 AI 背景音注入:
外呼或进线通话转接至会议室 (Conference) 后,通过调用:
ctx.conference.startBackgroundAudio("local_stream://ambient/office/16000")
向通话通道持续混合轻微的办公室键盘敲击、走动交谈背景音,消除纯 AI 对话在静音期
的“真空死寂感”,大幅提升人机对话的自然逼真度与信任感。
3. 采样率对齐:
提供 8000Hz、16000Hz、32000Hz 与 48000Hz 独立流配置,呼叫协商为 16k(如 Opus/G722)
时必须选用 16000 流,杜绝通话过程中的动态重采样失真。
=============================================================================
-->
<!-- 默认备用等待音乐流 (8kHz) -->
<directory name="default" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<!-- 8kHz 标清等待音乐流 -->
<directory name="moh/8000" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<!-- 16kHz 高清等待音乐流 -->
<directory name="moh/16000" path="$${sounds_dir}/music/16000">
<param name="rate" value="16000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<!-- 32kHz 超高清等待音乐流 -->
<directory name="moh/32000" path="$${sounds_dir}/music/32000">
<param name="rate" value="32000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<!-- 48kHz 全频带等待音乐流 -->
<directory name="moh/48000" path="$${sounds_dir}/music/48000">
<param name="rate" value="48000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="10"/>
<param name="timer-name" value="soft"/>
</directory>
<!--
【AI 呼叫中心通话背景环境音流 (窄带 8kHz)】
供 PSTN / 标清 G.711 通话混音使用,营造真实的真实坐席职场背景氛围
-->
<directory name="ambient/office/8000" path="$${sounds_dir}/ambient/office/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="false"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<!--
【AI 呼叫中心通话背景环境音流 (宽带 16kHz)】
供 WebRTC / Opus / G.722 宽带通话混音使用
-->
<directory name="ambient/office/16000" path="$${sounds_dir}/ambient/office/16000">
<param name="rate" value="16000"/>
<param name="shuffle" value="false"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
</configuration>3.2.2 核心参数解析与 AI 会议背景音机制
| 参数名 | 典型取值 | 参数作用与配置建议 |
|---|---|---|
path | $${sounds_dir}/ambient/office/16000 | 循环播放的音频文件所在宿主机目录(支持 WAV 格式) |
rate | 8000 / 16000 / 32000 / 48000 | 音频流采样率(Hz)。必须与目标通话编解码率匹配(PSTN 选 8k,Opus/WebRTC 选 16k)避免重采样开销 |
shuffle | false (背景音) / true (等待音) | 是否随机乱序播放目录下的音频文件。背景音流必须设为 false 确保持续平滑过渡 |
channels | 1 (单声道) | 声道数。VoIP 与 AI 通话统一采用单声道 |
interval | 20 (毫秒) | RTP 媒体包发包间隔时序(默认 20ms 一包) |
timer-name | soft | 强制使用 soft 软时钟。杜绝依赖物理时钟在虚拟机或高负载容器下抖动失步 |
⚠️ 为什么会议室背景音必须走
mod_local_stream而严禁使用mod_shout? 在apps/callflow-esl的双人/多人会议室(mod_conference)场景中,AI 机器人外呼时需要持续混入微弱的办公室白噪音。若使用mod_shout播放 MP3,当音频流停止时,底层驱动会阻塞mod_conference唯一的混音线程 0.1 ~ 2.0 秒,导致会议内所有成员瞬间爆音或听感卡顿!mod_local_stream将 WAV 预载入内存并由独立软时钟驱动,与会议混音引擎完全异步解耦,CPU 与磁盘 I/O 均为 0 开销,是 AI 通话背景音混音的唯一最佳生产方案。
3.3 答录机与留言蜂鸣音检测:avmd.conf.xml & vmd.conf.xml
用于 AI 外呼机器人自动辨识对端是否已进入语音信箱蜂鸣阶段(Beep Detect)或为人机应答。
xml
<!-- avmd.conf.xml: 高级答录机检测 -->
<configuration name="avmd.conf" description="Advanced Voicemail Detection">
<settings>
<!-- 采样率 -->
<param name="sample_rate" value="8000"/>
<param name="debug" value="0"/>
<!-- 报告状态:会话结束时是否触发事件 -->
<param name="report_status" value="1"/>
<!-- 快速三角函数计算优化 -->
<param name="fast_math" value="0"/>
<!-- 判定频率方差阈值 (越小越严格) -->
<param name="variance_threshold" value="0.0001"/>
</settings>
</configuration>3.4 远端音频 HTTP 缓存:http_cache.conf.xml
当播放远端 HTTP/HTTPS 音频文件时自动下载并缓存在宿主机,避免重复拉取。
xml
<configuration name="http_cache.conf" description="HTTP GET cache">
<settings>
<param name="enable-file-formats" value="false"/>
<!-- 最大缓存 URL 数量 -->
<param name="max-urls" value="10000"/>
<!-- 缓存文件存放根目录 -->
<param name="location" value="$${cache_dir}"/>
<!-- 缓存默认过期保持时间 (秒) -->
<param name="default-max-age" value="86400"/>
<param name="prefetch-thread-count" value="8"/>
<param name="prefetch-queue-size" value="100"/>
<param name="ssl-cacert" value="$${certs_dir}/cacert.pem"/>
<param name="ssl-verifypeer" value="true"/>
<param name="ssl-verifyhost" value="true"/>
</settings>
</configuration>4. 事件驱动与外部控制 (Event & Socket)
4.1 Inbound ESL 管理控制:event_socket.conf.xml
对外开放 8021 TCP 端口,驱动业务中台与 callflow-esl 深度控制。
xml
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<!-- 绑定地址::: 表示 IPv4/IPv6 双栈监听 -->
<param name="listen-ip" value="::"/>
<param name="listen-port" value="8021"/>
<!-- 认证密码:生产环境必须修改 -->
<param name="password" value="ClueCon"/>
<!-- 仅允许内网或特定 ACL 接入 -->
<!-- <param name="apply-inbound-acl" value="lan"/> -->
</settings>
</configuration>4.2 RabbitMQ 消息队列集成:amqp.conf.xml
将 FreeSWITCH 底层呼叫状态事件直接投递到 RabbitMQ / AMQP 消息总线。
xml
<configuration name="amqp.conf" description="mod_amqp Configuration">
<producers>
<profile name="default">
<connections>
<connection name="primary">
<param name="hostname" value="127.0.0.1"/>
<param name="port" value="5672"/>
<param name="username" value="guest"/>
<param name="password" value="guest"/>
</connection>
</connections>
<params>
<param name="exchange-name" value="fs.events"/>
<param name="exchange-type" value="topic"/>
<param name="send-queue-size" value="5000"/>
</params>
</profile>
</producers>
</configuration>5. 呼叫中心与多方协作配置 (Call Center & Conference)
5.1 呼叫中心座席队列:callcenter.conf.xml
定义呼叫中心技能组、队列等待策略与座席分派规则。
xml
<configuration name="callcenter.conf" description="CallCenter">
<settings>
<param name="odbc-dsn" value=""/>
</settings>
<queues>
<!-- 客服技能组队列定义 -->
<queue name="support@default">
<!-- 轮询策略:ring-all (全振铃), longest-idle-agent (最长空闲优先), round-robin (轮询) -->
<param name="strategy" value="longest-idle-agent"/>
<param name="moh-sound" value="local_stream://moh"/> <!-- 排队等待音乐 -->
<param name="record-template" value="$${recordings_dir}/callcenter-${strftime(%Y-%m-%d-%H-%M-%S)}-${destination_number}.wav"/>
<param name="time-base-score" value="system"/>
<param name="max-wait-time" value="300"/> <!-- 最大排队等待时长 300 秒 -->
<param name="tier-rules-apply" value="false"/>
</queue>
</queues>
<agents>
<!-- 座席定义 -->
<agent name="1000@default" type="callback" contact="[leg_timeout=20]user/1000" status="Logged Out" max-no-answer="3" wrap-up-time="10" reject-delay-time="10" busy-delay-time="10"/>
</agents>
</configuration>5.2 多方音视频会议室:conference.conf.xml
定义高并发会议室参数、混音采样率与视频分屏布局。
xml
<configuration name="conference.conf" description="Audio Conference">
<profiles>
<profile name="cdquality">
<!-- 混音采样率:支持 8000, 16000, 32000, 48000 -->
<param name="rate" value="48000"/>
<param name="interval" value="20"/>
<param name="energy-level" value="100"/> <!-- 自动静音能量门限 -->
<param name="auto-gain-level" value="0"/> <!-- 自动增益控制 -->
<param name="moh-sound" value="local_stream://moh"/> <!-- 仅一人在会时的等待音乐 -->
<param name="enter-sound" value="tone_stream://%(200,0,500)"/> <!-- 入会提示音 -->
<param name="exit-sound" value="tone_stream://%(200,0,250)"/> <!-- 离会提示音 -->
<param name="video-layout-name" value="grid"/> <!-- 默认视频宫格布局 -->
</profile>
</profiles>
</configuration>6. 音频编解码与信号流配置 (Codecs & Audio)
6.1 Opus 高清音频:opus.conf.xml
xml
<configuration name="opus.conf" description="OPUS Codec Configuration">
<settings>
<param name="use-vbr" value="1"/> <!-- 启用动态可变比特率 (VBR) -->
<param name="use-inband-fec" value="1"/> <!-- 启用带内前向纠错 (FEC),抗丢包 -->
<param name="maxaveragebitrate" value="32000"/> <!-- 目标平均码率 32kbps -->
<param name="maxplaybackrate" value="48000"/> <!-- 允许最高播放采样率 48kHz -->
<param name="complexity" value="10"/> <!-- 编码复杂度 (0-10) -->
</settings>
</configuration>6.2 本地等待音乐与连续流:local_stream.conf.xml
定义本地循环等待音乐(MOH),支持多采样率自适应无转码广播。
xml
<configuration name="local_stream.conf" description="stream files from local dir">
<directory name="moh/48000" path="$${sounds_dir}/music/48000">
<param name="rate" value="48000"/>
<param name="shuffle" value="true"/> <!-- 随机轮播文件 -->
<param name="channels" value="1"/>
<param name="interval" value="20"/>
</directory>
<directory name="moh/16000" path="$${sounds_dir}/music/16000">
<param name="rate" value="16000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
</directory>
</configuration>FreeSWITCH 配置文件 freeswitch-install/etc/freeswitch/autoload_configs/local_stream.conf.xml 在 MOH 之外额外声明了会议背景音 目录,供 callflow-esl 的 ctx.conference.startBackgroundAudio() 播放办公室底噪:
xml
<!-- 通话背景音流定义 -->
<directory name="ambient/office/16000" path="$${sounds_dir}/ambient/office/16000">
<param name="rate" value="16000"/>
<param name="shuffle" value="false"/> <!-- 底噪按固定顺序,不随机跳变 -->
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>三条部署约束:
name就是播放地址。ambient/office/16000对应 callflow-esl 的backgroundAudio.profiles.office.streamUrl = "local_stream://ambient/office/16000"。两侧任一改名 都不会报错——callflow-esl 侧 profile 名写错会静默落到兜底地址,FreeSWITCH 侧目录不存在则播放 无声,详见 callflow-esl 配置参考。path目录必须真的有素材,且rate与素材采样率一致。发布包docker_fs_server.tar.gz已完整内置背景音流配置与预置办公室环境音素材(解压后直接位于$${sounds_dir}/ambient/office/8000/与.../16000/),开箱即用,无需额外手动复制素材。 若需替换或扩展自定义素材,请确保放入对应采样率目录,目录为空时mod_local_stream不报错, 只是没有声音;采样率标错则会以错误速率播放。mod_local_stream要在modules.conf.xml里加载,目录声明只在启动或reloadxml后重新扫描。验证顺序:module_exists mod_local_stream返回true→local_stream show列出ambient/office/8000与ambient/office/16000→ 在测试会议里conference <id> play local_stream://ambient/office/16000 async能听到底噪。
7. 数据库、话单与脚本配置 (DB, CDR & Scripting)
7.1 Redis 高性能缓存:hiredis.conf.xml
xml
<configuration name="hiredis.conf" description="mod_hiredis">
<profiles>
<profile name="default">
<connection>
<param name="hostname" value="127.0.0.1"/>
<param name="port" value="6379"/>
<param name="password" value=""/>
<param name="timeout_ms" value="500"/>
<param name="max_connections" value="10"/>
</connection>
</profile>
</profiles>
</configuration>7.2 CSV 话单持久化:cdr_csv.conf.xml
xml
<configuration name="cdr_csv.conf" description="CDR CSV Format">
<settings>
<param name="default-template" value="standard"/>
<param name="rotate-on-hup" value="true"/>
</settings>
<templates>
<!-- 定义 CSV 每行字段顺序:主叫、被叫、开始时间、接通时间、结束时间、时长、挂机原因 -->
<template name="standard">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}"</template>
</templates>
</configuration>7.3 嵌入式 Lua 脚本引擎:lua.conf.xml
xml
<configuration name="lua.conf" description="LUA Configuration">
<settings>
<!-- Lua 脚本执行根目录 -->
<param name="script-directory" value="$${script_dir}/"/>
<!-- C 模块及依赖搜索路径 -->
<param name="module-directory" value="/usr/local/lib/lua/5.2/?.so"/>
<!-- 启动时自动运行的初始化后台脚本(可选) -->
<!-- <param name="startup-script" value="startup.lua"/> -->
</settings>
</configuration>8. 全部 67 个模块配置文件分类速查一览表
以下为 freeswitch-install/etc/freeswitch/autoload_configs/ 目录下全部 67 个 XML 配置文件 的完整分类速查表:
8.1 核心引擎与系统调度配置 (Core Engine & System)
配置文件名 (autoload_configs/) | 对应模块 / 体系 | 核心功能用途 |
|---|---|---|
switch.conf.xml | 核心引擎 (Core) | 全局最大并发通道数(max-sessions)、每秒新建呼叫上限(CPS)、RTP 动态媒体端口范围(30000-30199)、软时钟与 CPU 保护门限 |
modules.conf.xml | 核心加载器 (Loader) | 静态定义随 FreeSWITCH 主服务启动时自动加载的 .so 模块清单 |
pre_load_modules.conf.xml | 核心加载器 | 系统启动最初期需要最优先预加载的基础底层模块清单 |
post_load_modules.conf.xml | 核心加载器 | 系统所有核心服务就绪后,在最后阶段延迟加载的辅助模块清单 |
acl.conf.xml | 访问控制 (ACL) | 定义局域网白名单(lan)、运营商 SIP Trunk 信任 IP 及 WebRTC TURN relay 候选网段 |
logfile.conf.xml | mod_logfile | freeswitch.log 本地日志文件写入级别、单文件大小轮转归档与保留份数 |
console.conf.xml | mod_console | 控制台终端彩色日志输出级别(debug/info/notice/warning/err)与高亮规则 |
syslog.conf.xml | mod_syslog | Linux 系统标准 Syslog 日志导出与 Facility 级别配置 |
timezones.conf.xml | 时区子系统 | 全球时区定义列表,用于 Dialplan 按工作时间段路由及话单时间戳校准 |
8.2 实时 AI 语音与多媒体流处理 (AI Speech & Streaming ⭐️)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
shout.conf.xml | mod_shout | 流式 TTS 播放与 MP3 编解码。shout:// 边下边播缓冲区、音量缩放与 Icecast 推流 |
avmd.conf.xml | mod_avmd | 高级智能答录机识别 (AMD)。基于快速幅值/频率方差算法精确判定是否为人机应答 |
tts_commandline.conf.xml | mod_tts_commandline | 命令行外部 TTS 工具调用模板、入参变量占位符与生成临时音频格式 |
http_cache.conf.xml | mod_http_cache | 远程 HTTP/HTTPS 音频素材自动下载与本地缓存目录、过期时间(TTL)与最大容量 |
sndfile.conf.xml | mod_sndfile | 基于 libsndfile 的标准音频文件(WAV、AIFF、FLAC 等)读写参数 |
av.conf.xml | mod_av | 基于 FFmpeg / LibAV 的多媒体音视频容器封装与流格式转换 |
8.3 通信端点与协议栈配置 (Endpoints & Protocols)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
sofia.conf.xml | mod_sofia | SIP 协议栈总索引。全局引入 internal.xml、external.xml 等 Profile 文件 |
verto.conf.xml | mod_verto | FreeSWITCH 原生 WebRTC JSON-RPC 信令端点:明文 8081 / 加密 8082(secure="true" + wss.pem) |
rtmp.conf.xml | mod_rtmp | RTMP 流媒体服务监听配置与推拉流绑定 |
skinny.conf.xml | mod_skinny | 思科 SCCP(Skinny Client Control Protocol)协议监听与 IP 话机注册配置 |
alsa.conf.xml | mod_alsa | Linux ALSA 声卡驱动声道数、采样率与物理麦克风/扬声器测试 |
signalwire.conf.xml | mod_signalwire | SignalWire 官方云通信中继对接连接器 |
msrp.conf.xml | mod_msrp | MSRP(Message Session Relay Protocol)富媒体即时消息通信协议参数 |
8.4 事件总线与外部管理控制 (Event & Socket)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
event_socket.conf.xml | mod_event_socket | ESL 管理核心。对外开放 TCP 8021 端口,配置认证密码、监听 IP 与 ACL |
amqp.conf.xml | mod_amqp | RabbitMQ / AMQP 消息总线连接池、Topic Exchange 路由与呼叫事件直投 |
event_multicast.conf.xml | mod_event_multicast | 局域网 UDP 组播事件广播、跨多机器节点状态同步与加密通信 |
erlang_event.conf.xml | mod_erlang_event | 与 Erlang 节点进行 C-Node 级事件直连互通 |
8.5 拨号计划与呼叫路由策略 (Dialplans & Routing)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
easyroute.conf.xml | mod_easyroute | 基于数据库前缀匹配的轻量级呼叫路由配置 |
lcr.conf.xml | mod_lcr | 动态最少成本路由(Least Cost Routing)费率计算、运营商比价与路由轮询 |
enum.conf.xml | mod_enum | ENUM 国际电话号码到 DNS NAPTR / SIP URI 的递归查询规则 |
distributor.conf.xml | mod_distributor | 呼叫按设定权重随机轮询分发器(用于多线路/网关动态负载均衡) |
dialplan_directory.conf.xml | mod_dialplan_directory | 从分机用户目录直接解析并匹配拨号计划 |
translate.conf.xml | mod_translate | 号码前缀正则翻译、前缀增删与主被叫号码重写规则 |
8.6 呼叫中心、会议室与业务应用 (Applications & Call Center)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
callcenter.conf.xml | mod_callcenter | 呼叫中心座席队列调度系统 (ACD)。技能组、等待音乐、座席签入与分派策略 |
conference.conf.xml | mod_conference | 高并发音视频会议室。混音采样率(48kHz)、自动静音门限、入会提示音与角色 |
conference_layouts.conf.xml | mod_conference | 会议室视频 1+N、田字格、九宫格分屏网格几何坐标与缩放规则 |
fifo.conf.xml | mod_fifo | 简单先进先出呼叫等待排队队列与超时转接 |
ivr.conf.xml | mod_dptools | 传统按键式交互式语音应答(IVR Menu)导航菜单与按键动作 |
voicemail.conf.xml | mod_voicemail | 语音信箱存储上限、录音时长限制与邮件通知模版 |
voicemail_ivr.conf.xml | mod_voicemail_ivr | 语音信箱 IVR 按键导航交互流程 |
blacklist.conf.xml | mod_blacklist | 骚扰/恶意呼叫黑名单阻断拦截列表 |
cidlookup.conf.xml | mod_cidlookup | 来电号码归属地与姓名反查(支持 HTTP RESTful 或 SQL 查询) |
nibblebill.conf.xml | mod_nibblebill | 通话实时计费与预付费账户扣费结算 |
directory.conf.xml | mod_directory | 企业员工姓名拼音/英文拨号分机导航服务 |
presence_map.conf.xml | 状态子系统 | SIP Presence 状态(在线/离线/通话中/勿扰)与 BLF 键位指示灯映射 |
8.7 音视频编解码器配置 (Codecs & Transcoding)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
opus.conf.xml | mod_opus | Opus 高清音频。可变比特率(VBR)、带内前向纠错(FEC 抗丢包)与 48kHz 采样率 |
spandsp.conf.xml | mod_spandsp | DSP 信号处理核心。T.38 传真网关、DTMF 双音频信号分析与音频检测 |
amr.conf.xml | mod_amr | 3G/蜂窝移动网络 AMR 窄带语音编解码模式 |
amrwb.conf.xml | mod_amrwb | 移动 VoLTE 4G HD AMR-WB 宽带高清语音编解码模式 |
vpx.conf.xml | mod_vpx | VP8 / VP9 视频编解码器参数与关键帧间隔 |
fax.conf.xml | mod_spandsp | 传真收发参数(最大/最小波特率、页面分辨率与防错) |
8.8 音频流媒体与信号音配置 (Audio Streams & Tones)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
local_stream.conf.xml | mod_local_stream | MOH 等待音乐 + 会议背景音连续流。定义本地广播目录、自适应采样率(8k/16k/32k/48k)与轮播;含 ambient/office/*(见 6.2) |
8.9 数据库、缓存与数据存储 (Databases & Storage)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
hiredis.conf.xml | mod_hiredis | 高性能 Redis 客户端连接池、超时时间与分布式锁配置 |
redis.conf.xml | mod_redis | Redis 基础连接驱动与数据库实例配置 |
db.conf.xml | mod_db | 基于 SQLite 的持久化键值对存储与计数器 |
hash.conf.xml | mod_hash | 内存全局 Hash 键值表与呼叫并发频控(Limit 机制) |
8.10 话单记录与统计分析 (CDR & Logging)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
cdr_csv.conf.xml | mod_cdr_csv | CSV 话单导出。定义本地 CSV 话单每行字段顺序、通话时长与挂机原因模版 |
cdr_pg_csv.conf.xml | mod_cdr_pg_csv | 将通话 CDR 话单直接写入 PostgreSQL 数据库 |
cdr_sqlite.conf.xml | mod_cdr_sqlite | 将通话 CDR 话单直接写入本地 SQLite 数据库 |
xml_cdr.conf.xml | mod_xml_cdr | HTTP POST 远程上报 XML 结构化全量话单。包含 SIP 信令与详细通话指标 |
format_cdr.conf.xml | mod_format_cdr | 自定义格式话单格式化输出插件 |
graylog2.conf.xml | mod_graylog2 | GELF 格式远程日志推送到 Graylog / ELK 日志收集中心 |
8.11 脚本语言与 Web 动态集成 (Languages & Dynamic XML)
配置文件名 (autoload_configs/) | 对应模块 | 核心功能用途 |
|---|---|---|
lua.conf.xml | mod_lua | Lua 5.2 脚本引擎。定义 Lua 脚本根目录(script-dir)与启动自运行后台脚本 |
httapi.conf.xml | mod_httapi | HTTP RESTful 动态交互式语音响应协议(由远程 Web 服务返回 XML 驱动通话) |
xml_curl.conf.xml | mod_xml_curl | 动态配置拉取。向远程 Web API 实时请求 Dialplan / Directory / Sofia 网关配置 |
xml_rpc.conf.xml | mod_xml_rpc | XML-RPC Web 远程管理接口(默认监听 8080 端口) |
xml_scgi.conf.xml | mod_xml_scgi | SCGI 协议后端连接器 |
curl.conf.xml | mod_curl | 全局 HTTP CURL 请求连接超时与证书校验配置 |