FreeSWITCH 的 mod_spy
模块是一个用于实现通话监听(Call Monitoring)功能的模块,通常用于监控或介入正在进行的通话。它支持多种模式,如耳语(Whisper)、密语(Barge-in)或静默监听,适用于客服中心、培训场景或安全监控。以下是详细介绍:
1. 核心功能
- 监听模式:
- 耳语(Whisper):监听者可以与其中一方(如客服)通话,但另一方(如客户)无法听到监听者的声音。
- 密语(Barge-in):监听者可以同时与双方通话,直接介入对话。
- 静默监听(Eavesdrop):仅监听双方通话,不发出任何声音。
- 多目标支持:可同时监听多个通话。
- 动态控制:通过 API 或拨号计划动态启停监听。
2. 启用与配置
2.1 加载模块
在 FreeSWITCH 配置文件(autoload_configs/modules.conf.xml
)中添加:
<load module="mod_spy"/>
2.2 权限控制
在 acl.conf.xml
中配置允许监听的 IP 或用户组,确保安全性:
<list name="spy-allow" default="deny">
<node type="allow" cidr="192.168.1.0/24"/>
</list>
3. 使用方法
3.1 通过拨号计划触发
在拨号计划(dialplan
)中设置扩展,例如:
<extension name="spy_demo">
<condition field="destination_number" expression="^spy_(\d+)$">
<action application="set" data="spy_target=${sip_h_X-Spy-Target}"/>
<action application="answer"/>
<action application="spy" data="${spy_target} w"/>
<!-- "w" 表示耳语模式 -->
</condition>
</extension>
- 用户拨打
spy_1234
时,监听分机1234
的通话(耳语模式)。
3.2 通过 API 命令
使用 uuid_spy
命令动态监听指定 UUID 的通话:
# 在 FS_CLI 中执行
uuid_spy <target_uuid> <spy_uuid> [w|b|e]
w
: Whisper(耳语)b
: Barge(密语)e
: Eavesdrop(静默)
4. 使用场景
- 客服质量监控:管理员监听客服与客户的通话,确保服务质量。
- 实时培训:新员工通过耳语模式接受指导,客户无感知。
- 安全合规:金融或医疗行业记录敏感通话以满足合规要求。
5. 注意事项
- 法律合规:监听前需获得相关方同意,避免违反隐私法规(如 GDPR、HIPAA)。
- 提示音配置:部分国家要求播放提示音告知通话被录音,可通过
mod_say
模块实现。 - 性能影响:大规模监听可能增加系统负载,需合理规划资源。
6. 扩展功能
- 与录音集成:结合
mod_sndfile
或mod_sofia
的录音功能,同步保存监听内容。 - 事件通知:通过
mod_event_socket
发送监听开始/结束事件到外部系统。
7. 常见问题
- 监听失败:检查目标 UUID 是否存在,或权限是否配置正确。
- 无声音:确认音频路径(如 RTP 端口)未被防火墙阻止。
通过合理配置 mod_spy
,可灵活实现通话监控需求,但务必确保符合伦理与法律规范。建议结合 FreeSWITCH 文档(官方 Wiki)进一步探索高级用法。