全部产品
云市场
云游戏

接收会议状态消息推送

更新时间:2020-07-21 21:12:15

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

  1. 会议开始/结束
  2. 成员加入/离开
  3. 会议控制,如静音/取消静音等
  4. 最高并发,每天向客户推送当前最高会议并发

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

启用消息推送

  1. 登录云视频会议控制台,单击左边菜单概览
  2. 在页面右侧会议消息推送处,单击启动开关,如下图所示:控制台

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

如何配置事件过滤条件

1、事件Rule与Target简介

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

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

      1. source:事件源(当前为定长为1的数组,指定自己需要过滤的sourcesource是云服务接入时注册在eventbridge的名字,如acs.oss, acs.aliyuncvc
      2. type:事件类型(事件的类型,当前要求是字符串数据,如["aliyuncvc:meetingEvent:MeetingStateEvent","aliyuncvc:MeetingEvent:MemberStateEvent"],要求是云服务注册到eventbridge时,填写的事件类型的子集)
      3. 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控制台,单击左侧菜单规则—》创建规则。 进入事件规则创建界面:EB创建规则

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

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

  4. 选择事件源与事件类型:选择服务提供方阿里云服务,阿里云服务选择Aliyun Meeting Service,选择需处理的事件类型(事件类型描述见下节);添加目标设置中,可选择消息推送至哪里,目前只支持HTTP POST,设置如下,推送格式选择完整事件,如下图所示:EB创建规则-1

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

如何接收订阅的事件

接收http推送demo

  • 目前事件方式只支持http推送。
  • http请求路径需要与target中的http配置地址一致。
  • 推送方式为POST。
  • 事件信息在body中,数据格式是json。json格式请参考后面详细说明。
  • 域名需要支持外网访问。

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

rule配置:

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

target配置:

  1. targets=[
  2. TargetEntry{
  3. id='bikiEcs',
  4. type='http',
  5. endpoint='http://api.xtingke.com/eventBridge/revieveMessage',
  6. pushSelector='MATCHED_EVENT',
  7. pushRetryStrategy='BACKOFF_RETRY'
  8. }
  9. ],
  10. ctime=1587634012545,
  11. mtime=1587720803167
  12. }
  13. ]

接收事件代码示例:

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

  1. import lombok.extern.slf4j.Slf4j;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.PostMapping;
  6. import org.springframework.web.bind.annotation.RequestBody;
  7. import org.springframework.web.bind.annotation.ResponseBody;
  8. @Controller
  9. @SpringBootApplication
  10. @Slf4j
  11. public class DemoApplication {
  12. public static void main(String[] args) {
  13. SpringApplication.run(DemoApplication.class, args);
  14. }
  15. @PostMapping("/eventBridge/revieveMessage")
  16. @ResponseBody
  17. public String revieveMessage(@RequestBody String data) {
  18. log.info("revieveMessage");
  19. log.info(data);
  20. return "recieved";
  21. }
  22. }

接收事件信息json如下:

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

其中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} 参数含义:{时间戳/会议数量/会议时长/会议人数/会议最高并发量(同时在会议中人数)}