mod_conference ESL控制一(原理)

本文介绍通过freeswitch mod_conference 的配置和APP,以及如何通过这些事件实现会议控制。

需求

ESL内联,发起会议、加人、踢人、静音、恢复静音、申请发言、结束会议等基础功能;用户加入时放欢迎音,静音、恢复静音时语言提示。

首先介绍mod_conference 相关配置

conf/autoload_configs/conference.conf.xml是mod_conference默认配置文件,以下是删减版,只用到了default profile,参会者按键部分转为DTMF事件,由ESL自行控制。

<configuration name="conference.conf" description="Audio Conference">
<advertise>
<room name="3001@$${domain}" status="FreeSWITCH"/>
</advertise>
<caller-controls>
<group name="default">
</group>
</caller-controls>

<profiles>
<profile name="default">
<param name="domain" value="$${domain}"/>
<param name="rate" value="8000"/>
<param name="interval" value="20"/>
<param name="energy-level" value="300"/>
<param name="muted-sound" value="conference/ecp_mutesound.wav"/>
<param name="unmuted-sound" value="conference/ecp_unmutesound.wav"/>
<param name="caller-id-name" value="$${outbound_caller_name}"/>
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<param name="comfort-noise" value="true"/>
</profile>

</profiles>
</configuration>

mod_conference 基础命令

  • conference 3000  bgdial sofia/gateway/vos1/13800138000 #呼叫external/13800138000并加入到会议3000中
  • conference 3000  kick 7 #从会议3000中踢出ID=7的参会者
  • conference 3000  mute 7 #静音
  • conference 3000  tmute 7 #切换静音状态
  • conference 3000  unmute 7 #取消静音
  • conference list #列出会议以及参会者

有以上命令基本上可以完整操作一次会议了。

关于DTMF识别

由于external网关不支持RFC2833和SIP-INFO,只支持inband DTMF,因此需要显示检测DTMF

conference 3000  bgdial {bridge_early_media=false,ignore_early_media=true,dtmf_type=inband,execute_on_answer=start_dtmf}sofia/gateway/vos1/13800138000
bridge_early_media=false,ignore_early_media=true #忽略掉早媒体,否则又可能将早媒体混音到会场
dtmf_type=inband #指定DTMF类型为带内
execute_on_answer=start_dtmf #当external应答是开启DTMF识别

会场控制

重要:mod_conference不用显式创建会议,会自动将接通的一方纳入到会议中,如上当13800138000 应答后才创建会议;在控制时可能不容易控制。因此可以考虑指定参会者的UUID,方便控制,如下:

originate {pstn=true,origination_uuid=5a88ca4f-7aad-4f5a-b1cf-e731895ea2ea,bridge_early_media=false,ignore_early_media=true}user/1001 3001 #呼叫user/1001,应答后transfer到3001会议室
originate {pstn=true,origination_uuid=5a88ca4f-7aad-4f5a-b1cf-e731895ea2ea,bridge_early_media=false,ignore_early_media=true}user/1001 3013 XML default #同上,显式指定拨号计划

至此,会议室ID有了,参会者UUID有了,可以建立UUID与会议ID的对应关系,容易控制了。

原文地址:https://www.cnblogs.com/cqvoip/p/8079047.html