HowTo文档
如何在 XSwitch 中录音
录音是 XSwitch 中重要功能之一,本文将介绍在 XSwitch 中如何使用录音,以及如何下载录音文件。
通过呼叫形式区分,XSwitch 触发录音有以下三种方式:
- 路由触发:可在对应路由内开启【自动录音】功能,即可实现录音功能。
- XCC触发:需在
XNode.Dial接口内添加额外参数或调用XNode.Record接口,亦可实现录音功能。 - REST API触发:可在对应路由内开启【自动录音】功能,即可实现录音功能。
录音
路由触发
无论呼叫方向(针对XSwitch而言)是呼入还是呼出,只要通过经过路由,您可在对应的路由界面打开【自动录音】功能,均可实现录音功能。如下图所示:

注意,路由中的【自动录音】功能默认是关闭的
此方式产生的录音文件可在 XUI 【媒体文件】界面看到。也可通过 HTTP 形式下载。
XCC触发
呼入
一般情况下,若是呼入,则该通话是通过路由触发 XCC 功能,有以下两种触发录音形式:
- 通过开启路由中的【自动录音】功能,此方式与【路由触发】章节相同,不再赘述。
- 不开启【自动录音】功能时,可通过调用
XNode.Record接口,亦可触发录音功能。
第一种形式产生的录音文件可在 XUI 【媒体文件】界面看到,也可通过 HTTP 形式下载。
第二种形式产生的录音文件不可在 XUI 【媒体文件】界面看到,但可通过 HTTP 形式下载。
若您想使用XNode.Record录制的录音文件也在 XUI 【媒体文件】界面中看到,在下发XNode.Record之前,您需下发如下命令:
{ "method": "XNode.SetVar", "params": { "data": { "auto_record": "true", "auto_record_path": "/usr/local/freeswitch/storage/recordings/auto-record-41723533-6bc4-4123-950f-680d17414f00.wav", "api_hangup_hook": "lua xui/record_record.lua" } }
其中auto_record_path需与您下发的XNode.Record中的path保持一致。
呼出
若您是使用 XCC 接口 XNode.Dial 发起外部呼叫,则此通话场景下不经过路由,需要您按照如下形式改造 XNode.Dial 接口:
{ "jsonrpc": "2.0", "id": "49d6037f-e07e-4de9-aa31-a7e9bcc79676", "method": "XNode.Dial", "params": { "ctrl_uuid": "bb87cf05-0ae3-49a4-b95d-9b9ebae85b25", "destination": { "global_params": { "ignore_early_media": "true" }, "call_params": [ { "uuid": "41723533-6bc4-4123-950f-680d17414f00", "dial_string": "sofia/public/187xxxx", "params": { "absolute_codec_string": "PCMA", "auto_record": "true", "auto_record_path": "/usr/local/freeswitch/storage/recordings/auto-record-41723533-6bc4-4123-950f-680d17414f00.wav", "api_hangup_hook": "lua xui/record_record.lua", "api_on_answer_record": "uuid_record 41723533-6bc4-4123-950f-680d17414f00 start /usr/local/freeswitch/storage/recordings/auto-record-41723533-6bc4-4123-950f-680d17414f00.wav" } } ] } } }
关键参数说明:
auto_record:固定为字符串类型的trueauto_record_path:/usr/local/freeswitch/storage/recordings/为固定值,也可在最后加日期为目录,如/usr/local/freeswitch/storage/recordings/2025-06/;auto-record-41723533-6bc4-4123-950f-680d17414f00.wav中的auto-record-为固定值,不可更改,41723533-6bc4-4123-950f-680d17414f00推荐使用当前通话channel-uuid,需根据实际情况更改,.wav为固定值api_hangup_hook:固定值api_on_answer_record:uuid_record为固定值,41723533-6bc4-4123-950f-680d17414f00为当前通话的channle-uuid,start为固定值,其余部分需与auto_record_path保持一致。
至此,当您使用以上 JSONRPC 进行外呼时,当通话接通后,将开启录音功能。录音文件可在 XUI 【媒体文件】界面看到,也可通过 HTTP 形式下载。
REST API触发
若您使用 REST API 发起呼叫,则此类呼叫一般情况下为外呼。REST API 会根据您传入的destNumber值去查询路由表,构建呼叫字符串。因此您只需在与destNumber匹配的路由表内开启【自动录音】功能即可。
如您的destNumber为1000,则使用路由查询功能查询该号码所用的路由,再将此路由的【自动录音】功能开启。
此方式录音文件可在 XUI 【媒体文件】界面看到,也可通过 HTTP 形式下载。
录音文件下载
您有通过 XUI 界面和通过 HTTP 两种形式下载录音文件。
通过 XUI 界面下载
您可访问 XUI 的【媒体文件】界面,选择您所需下载的录音文件,点击下载即可。如下图所示:

注意,若您是通过XNode.Record的形式进行录音,需按照XCC呼入录音事先设置一些通道变量,否则,您将无法在 XUI 界面看到您的录音文件
通过 HTTP 下载
此方式需要您启用xswitch-nginx-xui容器,您可联系我们的工程师为您开启此功能。
接下来我将假设您已开启此功能,为您介绍下载步骤。
您只需在浏览器中访问https://yxb.xswitch.cn/recordings/auto-record-41723533-6bc4-4123-950f-680d17414f00.wav,即可下载对应录音文件。
其中https://yxb.xswitch.cn/需根据实际情况更换为您自己的域名或ip地址。若您的nginx不是用的默认端口,需在域名后添加nginx的端口。
若您在录音时的路径添加了额外的下级目录,如:/usr/local/freeswitch/storage/recordings/2025-06/auto-record-41723533-6bc4-4123-950f-680d17414f00.wav的形式,请您将url做对应修改:https://yxb.xswitch.cn/recordings/2025-06/auto-record-41723533-6bc4-4123-950f-680d17414f00.wav。
录像
录像与录音类似,若您是视频通话,只需将文件后缀.wav改为.mp4即可。