Freeswitch中uuid_transfer转接通话至会议时conference_auto_record失效求助
问题分析与解决方案
1. 修正变量作用域与传递逻辑
conference_auto_record 仅在当前通道设置时,转接后的会议进程可能无法继承该变量。有两种修复方式:
- 全局配置会议profile:在
conf/autoload_configs/conference.conf.xml对应的会议profile节点下添加全局自动录制配置:<param name="auto-record" value="fsRecordAudioPath"/> - 转接时显式传递变量:修改
api_on_answer中的转接命令,直接将录制路径变量附加到会议参数后:bridge {api_on_answer='sched_api +1 none uuid_transfer ${uuid} -both "conference:confname@profile&conference_auto_record=fsRecordAudioPath" inline'}sofia/gateway/callin/abcxyz
2. 调整转接触发时机
sched_api +1 的延迟可能导致变量未在会议初始化前生效。可以尝试:
- 缩短延迟时间(比如改为
+0),或直接移除sched_api包装,直接调用uuid_transfer:
注意:移除延迟需测试是否会引发桥接状态冲突。bridge {api_on_answer='uuid_transfer ${uuid} -both "conference:confname@profile&conference_auto_record=fsRecordAudioPath" inline'}sofia/gateway/callin/abcxyz
3. 会议dialplan中强制设置变量
在会议对应的dialplan extension里提前设置录制变量,确保会议启动时必然加载:
<extension name="conf_ext"> <condition field="destination_number" expression="^confname$"> <action application="set" data="conference_auto_record=fsRecordAudioPath"/> <action application="conference" data="confname@profile"/> </condition> </extension>
4. 开启debug日志定位根因
在fs_cli中执行以下命令开启会议模块debug日志,重新测试后查看变量加载细节:
loglevel conference debug
重点检查会议创建时的日志输出,确认 conference_auto_record 是否被正确读取。
内容的提问来源于stack exchange,提问作者Vuong
相关产品推荐
相关产品推荐

