接收会议状态消息推送

云视频会议的消息可通过HTTP方式推送给客户,以方便客户根据会议的相关状态进行对应的业务处理,当前云视频会议推送的消息分为4类:

  1. 会议开始/结束

  2. 成员加入/离开

  3. 会议控制,如静音/取消静音等

  4. 最高并发,每天向客户推送当前最高会议并发

云视频会议的消息推送需要使用EventBridge产品,需要客户前往EventBridge产品页面开通,开通后按照以下流程开通和接收推送消息。

  1. 登录云视频会议控制台,单击左边菜单概览

  2. 在页面右侧会议消息推送处,单击启动开关,如下图所示:

注:消息推送功能依赖EventBridge服务,云视频会议会自动创建SLR用于云产品之间服务调用,客户无需手动操作. 如开通消息提示用户没有创建SLR权限,则单击SLR说明完成第一步准备工作,授予用户权限策略即可成功开通。

如何配置事件过滤条件

1、事件Rule与Target简介

  • Rule -规则可以过滤哪些字段?

    • filterPattern:用户对事件的过滤条件,过滤以下事件字段:

      source:事件源(当前为定长为1的数组,指定自己需要过滤的source,source是云服务接入时注册在eventbridge的名字,如acs.oss, acs.aliyuncvc)
      type:事件类型(事件的类型,当前要求是字符串数据,如["aliyuncvc:meetingEvent:MeetingStateEvent","aliyuncvc:MeetingEvent:MemberStateEvent"],要求是云服务注册到eventbridge时,填写的事件类型的子集)
      subject:事件的资源描述(事件发生的资源描述,当前可以是字符串数组如["acs:aliyuncvc:cn-hangzhou:1234567:123122/1234567"],也可以是前后缀表达式数据如[{"prefix":"acs:aliyuncvc:cn-hangzhou:1234567:123122/"}])
  • Targets -目标是什么?

    事件过滤成功后需要将事件路由(推送)到下游的target,targets就是对多个下游的描述信息。以HTTP类型的target为例,他记录了目标的回调HTTP地址,回调参数类型,回调失败重试机制等信息。目前暂时只支持HTTP的回调。

2、配置EventBridge

开通eventBridge服务

  1. 登录EventBridge控制台,单击左侧菜单规则—》创建规则。 进入事件规则创建界面:

  2. default事件总线:阿里云会议事件统一推送到default 默认总线,选择默认事件选项:

  3. 填写名称与描述,如下图所示:

  4. 选择事件源与事件类型:选择服务提供方阿里云服务,阿里云服务选择Aliyun Meeting Service,选择需处理的事件类型(事件类型描述见下节)如下图所示:image.png

  5. 填写Target 目标信息:可选择消息推送至哪里,目前只支持HTTP POST,设置如下,推送格式选择完整事件,如下图所示:

如何接收订阅的事件

接收HTTP推送demo

  • 目前事件方式只支持HTTP推送。

  • HTTP请求路径需要与target中的HTTP配置地址一致。

  • 推送方式为POST。

  • 事件信息在body中,数据格式是json。json格式请参考后面详细说明。

  • 域名需要支持外网访问。

如下demo是以java springboot为例,接收事件推送的代码。其中rule,target配置信息如下:

rule配置

rules=[
    EventRuleDTO{
      eventBusName='default',
      ruleARN='acs:eventbridge:cn-hangzhou:XXXXXX:eventbus/default/rule/ruleAliyuncvc',
      ruleName='ruleAliyuncvc',
      description='null',
      status='ENABLE',
      filterPattern='{"source":["acs.aliyuncvc"],"type":["aliyuncvc:MeetingEvent:MeetingStateEvent","aliyuncvc:MeetingEvent:MemberStateEvent","aliyuncvc:MeetingEvent:MemberOperate","aliyuncvc:MeetingEvent:MeetingStatistic"]}'

target配置

 targets=[
        TargetEntry{
          id='bikiEcs',
          type='http',
          endpoint='http://api.xtingke.com/eventBridge/revieveMessage',
          pushSelector='MATCHED_EVENT',
          pushRetryStrategy='BACKOFF_RETRY'
        }
      ],
      ctime=1587634012545,
      mtime=1587720803167
    }
  ]

接收事件代码示例

PostMapping路径和eventBridge控制台-目标设置-URL对应

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@SpringBootApplication
@Slf4j
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @PostMapping("/eventBridge/revieveMessage")
    @ResponseBody
    public String revieveMessage(@RequestBody String data) {
        log.info("revieveMessage");
        log.info(data);
        return "received";
    }
}

接收事件信息json如下

{
  "data":"{"meetingName":"app_ios_cb0_us1364648695gkof","action":"meeting_end","time":1595334143810,"meetingUUID":"hz-37192739hudhui"}",//事件具体信息在此,详情看下表分解
  "id":"45ef4dewdwe1-7c35-447a-bd93-fabd2a2",//id标识
  "source":"acs.aliyuncvc",//事件源 
  "type":"aliyuncvc:MeetingEvent:MeetingStateEvent",//事件类型
  "subject":"acs.aliyuncvc:cn-hangzhou:{此阿里云主账户id}:215672",//事件主题 
  "time":"2020-07-21 20:22:01.961000"//触发时间
}

其中4种事件类型对应的事件信息(data字段)json格式如下:

事件类型与格式

云视频会议的事件类型与每种事件的数据格式如下表所示:

事件类型

事件名称

数据格式

备注

会议开始/结束

aliyuncvc:MeetingEvent:MeetingStateEvent

{meetingUUID/ meetingName/action/time}

参数含义:{会议id/会议名称/动作/时间戳}

成员加入/离开

aliyuncvc:MeetingEvent:MemberStateEvent

{meetingUUID/meetingName/action/time/groupId/userId/state/startTime/callState}

只有离会时才有state(passive/active)和startTime,只有PSTN方式入会,才有callState(call_in). 参数含义:{会议id/会议名称/动作/时间戳/企业id/用户id/主动被动离会/入会时间/呼入呼出}

成员会中操作

aliyuncvc:MeetingEvent:MemberOperate

{meetingUUID/meetingName/action/time/groupId/userId}

参数含义:{会议id/会议名称/动作/时间戳/企业id/用户id}

会议统计数据

aliyuncvc:MeetingEvent:MeetingStatistic

{time/meetingCount/meetingTime/meetingMember/meetingConcurrency}

参数含义:{时间戳/会议数量/会议时长/会议人数/会议最高并发量(同时在会议中人数)}