云视频会议的消息可通过HTTP方式推送给客户,以方便客户根据会议的相关状态进行对应的业务处理,当前云视频会议推送的消息分为4类:
会议开始/结束
成员加入/离开
会议控制,如静音/取消静音等
最高并发,每天向客户推送当前最高会议并发
云视频会议的消息推送需要使用EventBridge产品,需要客户前往EventBridge产品页面开通,开通后按照以下流程开通和接收推送消息。
登录云视频会议控制台,单击左边菜单概览
在页面右侧会议消息推送处,单击启动开关,如下图所示:
注:消息推送功能依赖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服务
登录EventBridge控制台,单击左侧菜单规则—》创建规则。 进入事件规则创建界面:
选default事件总线:阿里云会议事件统一推送到default 默认总线,选择默认事件选项:
填写名称与描述,如下图所示:
选择事件源与事件类型:选择服务提供方为阿里云服务,阿里云服务选择Aliyun Meeting Service,选择需处理的事件类型(事件类型描述见下节)如下图所示:
填写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} | 参数含义:{时间戳/会议数量/会议时长/会议人数/会议最高并发量(同时在会议中人数)} |