• 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的对应关系,容易控制了。

  • 相关阅读:
    CF446DDZY Loves Games【高斯消元,矩阵乘法】
    PHP操作MongoDB数据库
    PHP linux spl_autoload_register区分大小写
    win7 64位安装redis 及Redis Desktop Manager使用
    svn的搭建
    php 扩展 redis
    CI reids 缓存
    拿起键盘写下我的第一封博客
    自我介绍
    课程目标
  • 原文地址:https://www.cnblogs.com/cqvoip/p/8079047.html
Copyright © 2020-2023  润新知