You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过终端在FreeSWITCH中录制通话?需修改拨号计划吗?

嘿,这个问题我熟!在FreeSWITCH里录制通话有两种常见方式:一种是终端手动触发录制(无需改拨号计划),另一种是通过拨号计划配置自动录制(需要修改配置)。下面给你详细拆解每一种实现方式:

一、终端手动录制通话(无需修改拨号计划)

这种方式适合临时录制某一通特定通话,步骤很简单:

  1. 先进入FreeSWITCH的CLI终端,在系统终端执行命令:fs_cli
  2. 找到目标通话的UUID:输入show calls命令,会列出当前所有活跃通话,找到你要录制的那通的UUID(一串类似550f1b8a-xxxx-xxxx-xxxx-xxxxxx的字符)
  3. 启动录制:执行命令 uuid_record <通话UUID> start <录制文件路径>,比如:
    uuid_record 550f1b8a-1234-5678-9abc-def123456789 start /usr/local/freeswitch/recordings/my_call.wav
    
    👉 注意:存储路径必须是FreeSWITCH进程有权限写入的目录,否则会录制失败
  4. 停止录制:需要结束时,执行 uuid_record <通话UUID> stop,录制文件就会保存到你指定的路径了
  5. 小技巧:如果想实时监听录制内容,可以在启动命令后加listen参数:
    uuid_record <UUID> start /path/to/file.wav listen
    
二、通过拨号计划配置自动录制(需要修改拨号计划)

如果需要对特定号码、前缀或者所有通话自动录制,就得修改拨号计划配置了。默认的拨号计划文件路径是/usr/local/freeswitch/conf/dialplan/default.xml(如果用了自定义上下文,就对应修改相应的配置文件)。

1. 全局自动录制所有通话

<context name="default">标签内,添加一个全局扩展,让所有通话都自动录制:

<extension name="auto-record-all-calls">
  <condition field="destination_number" expression=".*">
    <action application="record_session" data="/usr/local/freeswitch/recordings/${uuid}.wav"/>
  </condition>
</extension>
  • 解释:record_session是FreeSWITCH内置的录制应用,${uuid}会自动替换为当前通话的UUID,避免文件名重复
  • 修改完成后,在FreeSWITCH CLI执行reloadxml命令,让配置生效

2. 特定号码/前缀自动录制

比如只想录制拨打1000的通话,就可以添加这样的扩展:

<extension name="record-1000-calls">
  <condition field="destination_number" expression="^1000$">
    <!-- 先启动录制 -->
    <action application="record_session" data="/usr/local/freeswitch/recordings/1000_${uuid}.wav"/>
    <!-- 再执行桥接动作(根据你的业务需求调整) -->
    <action application="bridge" data="user/1000"/>
  </condition>
</extension>

同样,修改后执行reloadxml让配置生效。

三、录制的进阶小细节
  • 录制格式:默认是WAV格式,也可以指定MP3(需要FreeSWITCH编译时支持MP3模块),只需要把文件名后缀改成.mp3即可,比如record_session /path/to/file.mp3
  • 录制方向:默认是混合录制双方声音(mix模式),如果只想录制单方,可以用record_sessionmono参数(单声道),或者用uuid_recordleg a/leg b参数指定录制A腿(主叫)或B腿(被叫)
  • 权限问题:录制目录的权限要给对,一般FreeSWITCH进程的用户是freeswitch,可以用命令chown -R freeswitch:freeswitch /usr/local/freeswitch/recordings来设置读写权限

内容的提问来源于stack exchange,提问作者andu

火山引擎 最新活动