视频会议
    视频会议
    • 视频会议信道设计
    • 广播文件管理接口
      • 文件列表
        GET
      • 文件上传
        POST
      • 文件删除
        GET
      • 发送广播接口
        GET
    • AI语音助手接口
      • 语义识别接口
        POST
    • 获取房间列表信息
      GET
    • 获取房间详细信息
      GET
    • 删除房间
      GET
    • 所有房间列表
      GET
    • 登录接口
      GET
    • 检测接口暂停恢复专用接口
      GET
    • 移除房间用户
      GET
    • 安装 ingress
      GET
    • 获取用户Ip
      GET

    视频会议信道设计

    视频会议信道设计#

    所有终端订阅 MQTT频道 : dingchannel,所有信道信息统一在此频道发布.
    所有终端收到消息后,请先判断to:的值,
    如果to:的值和自己账号一致或to值等于call_all,call_group,call_users才会触发响应.
    如果from:的值和自己账号一致则无视此消息.
    所有终端无论是未接电话或已接电话记录到本地,方便一键回拨.
    1.peer-to-peer模式
    1
    终端A 呼叫终端B 发送呼叫信令
    timeout:超时时间(单位毫秒),retries:重试次数:默认0;interval:重试间隔时间
    📌
    通过接口获取呼叫配置
    /api/call/config?from={A-MAC}&to={B-MAC}&calltype=video
    返回以下呼叫配置,如果获取不到,则调用本地默认配置.
    {
            "room":"{A-MAC}-{B-MAC}", //如果同意呼叫将进入的房间名称,防止特殊定义,如不定义则调用默认配置,为了防止窜房,默认配置房间名:请用账号名-隔开.
            "timeout": 20000,//呼叫超时时间,单位毫秒
            "retries": 0,//呼叫失败重试次数
            "interval": 2000//重试呼叫间隔时间,单位毫秒.
            "calltype":"video"//默认video video:视频通话 audio:音频通话 mute:视频通话静音模式(类似直播,观众只能听不能发声),此配置和 room 需要广播告知接听方.
    }
    📌
    发送广播信息 通话邀请
    {
        "type": "call",
        "to": "{B-MAC}",
        "from": "{A-MAC}",
        "room":"{A-MAC}-{B-MAC}",
        "command": "invitation",
        "calltype":"video", 
        "id":"通话ID,请使用{A-MAC}+毫秒时间戳16进制",
        "info": "说明(可空):终端A向终端B发起视频通话邀请"
    }
    2
    终端B答复终端A呼叫信令
    B端收到订阅消息,判断to:账号和自己账号一致,界面展示接听界面(接听和拒绝)
    📌
    同意接听
    {
           "type": "reply",
           "to": "{A-MAC}",
           "from": "{B-MAC}",
           "command": "agree",
           "id":"呼叫ID",
           "info": "说明:终端B通知终端A接受通话邀请"
    }
    📌
    拒绝接听
    {
         "type": "reply",
         "to": "{A-MAC}",
         "from": "{B-MAC}",
         "id":"呼叫ID",
         "command": "reject",
         "info": "说明:终端B通知终端A接受通话邀请"
    }
    3
    A端判断B端响应状态
    A端发起呼叫B端期间,请优先判断B端答复.如果B端超时未答复,则呼叫失败,根据呼叫配置判断是否重拨.
    如果B端接听,则A端和B端进入{room} 建立通话,
    如果A端和B端建立通话后 一方主动挂断电话,则告知对方退出聊天室.
        {
          "type": "hangup",
          "to": "{A-MAC}",
          "from": "{B-MAC}",
          "id": "呼叫ID",
          "command": "dissolve",
          "info": "说明:终端B通知终端A挂断电话"
        }
    如果A端和B端建立通话后 这时候C端拨打B端或者A端电话,A端和B端需要发送正在通话,C端此时停止重拨.
        {
          "type": "busy",
          "to": "{C-MAC}",
          "from": "{B-MAC}",
          "id": "呼叫ID",
          "command": "dissolve",
          "info": "说明:终端B通知终端C正在忙碌,无法接通电话,且拒绝自动重拨,可手动重拨.B端需展示未接电话"
        }
    2.多人会议模式
    全体用户参加会议
    此模式一般为后台发送通知消息.此模式挂断不发送挂断消息.
    用户判断to值是call_all,弹出接听画面,
    如果接听则不发送通知直接进入会议室.
    如果不接听则根据收到信息 timeout retries interval 配置 去弹出接听画面.
    {
          "type": "call",
          "to": "call_all",
          "from": "admin",
          "room":"admin-call_all",
          "command": "invitation",
          "calltype":"video", 
          "id":"通话ID,请使用{A-MAC}+毫秒时间戳16进制",
          "timeout": 20000,//呼叫超时时间,单位毫秒
          "retries": 0,//呼叫失败重试次数
          "interval": 2000//重试呼叫间隔时间,单位毫秒.
          "info": "说明(可空):终端A向群体用户发起视频通话邀请"
      }
    群组参加会议
    此模式一般为后台发送通知消息.此模式挂断不发送挂断消息.
    用户判断to值是call_group,请判断自己经销商Id值是否和group_id值一致,
    如果一致弹出接听画面,如果不一致无视此消息.
    如果接听则不发送通知直接进入会议室.
    如果不接听则根据收到信息 timeout retries interval 配置 去弹出接听画面.
    {
          "type": "call",
          "to": "call_group",
          "group_id":"经销商ID",
          "from": "{A-MAC}",
          "room":"{A-MAC}-call_group",
          "command": "invitation",
          "calltype":"video", 
          "id":"通话ID,请使用{A-MAC}+毫秒时间戳16进制",
          "timeout": 20000,//呼叫超时时间,单位毫秒
          "retries": 0,//呼叫失败重试次数
          "interval": 2000//重试呼叫间隔时间,单位毫秒.
          "info": "说明(可空):终端A向终端B发起视频通话邀请"
      }
    多用户参加会议
    此模式一般为邀请模式.
    此模式和单用户拨号使用相同界面,唯一区别就是拨多个号用英文逗号隔开.
    如果判断到用户拨打号码中包含英文逗号,请使用此模式发送呼叫信息
    用户判断to值是call_users,请使用英文逗号分割users并判断自己账号是否在此数组中.
    如果一致弹出接听画面,如果不一致无视此消息.
    如果接听则不发送通知直接进入会议室.
    如果不接听则根据收到信息 timeout retries interval 配置 去弹出接听画面.
    此模式非创建者挂断不发送挂断消息.
    {
          "type": "call",
          "to": "call_users",
          "users":"MAC1,MAC2,MAC3,MAC4",
          "from": "{A-MAC}",
          "room":"{A-MAC}-call_users",
          "command": "invitation",
          "calltype":"video", 
          "id":"通话ID,请使用{A-MAC}+毫秒时间戳16进制",
          "timeout": 20000,//呼叫超时时间,单位毫秒
          "retries": 0,//呼叫失败重试次数
          "interval": 2000//重试呼叫间隔时间,单位毫秒.
          "info": "说明(可空):终端A向多个终端发起视频通话邀请"
      }
    如果挂断用户同from值一致,则发送挂断通知
          {
            "type": "hangup",
            "to": "call_users",
            "users":"MAC1,MAC2,MAC3,MAC4",
            "from": "{A-MAC}",
            "id": "呼叫ID",
            "command": "dissolve",
            "info": "说明:创建会议的终端A通知本房间所有用户解散会议室."
          }
    强制参加会议
    如果发送参数携带 compulsion为true,则为强制接听模式,所属终端收到消息后 不需要点击接听,自动接听并加入聊天室.此参数默认为false
    {
        "compulsion":true
    }
    如果发送参数携带mute为true,则进入聊天室为禁言模式.除房间建立者 禁止所有用户麦克风.此参数默认为false
    {
        "mute":true
    }
    如果发送参数携带 visible为false,除房间建立者 其余人则进入聊天室不显示摄像头.此参数默认为true
    {
        "visible":false
    }
    修改于 2024-09-14 16:06:37
    下一页
    文件列表
    Built with