调用CreateEventSubscribe创建订阅房间消息的回调。

使用说明

本接口用于创建订阅房间消息的回调。例如:在创建回调时,您可以配置回调地址、事件类型等参数。

QPS限制

本接口的单用户QPS限制为1000次/分钟。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。更多信息,请参见QPS限制

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String CreateEventSubscribe

操作接口名,系统规定参数,取值:CreateEventSubscribe

AppId String 9qb1****

订阅的应用ID。

CallbackUrl String http://****.com/callback

回调地址。回调内容请参见以下回调内容示例。

ClientToken String 123e4567-e89b-12d3-a456-42665544****

客户端创建订阅的幂等标识。

Events.N RepeatList ChannelEvent

订阅的事件,取值:

  • ChannelEvent:频道事件。
  • UserEvent:频道内用户事件。

详细信息请参见以下表格说明。

ChannelId String 123333

订阅的频道ID。

说明 如果Users.N参数不为空,则此参数必填。
Users.N RepeatList user1

订阅哪些用户的消息,参数为空表示订阅该房间全部用户(包含主播和观众)。格式如下所示:


Users.1=****
Users.2=****
......

CallBack

RTC通过用户传入的CallbackUrl,回调用户的内容,示例如下所示:


Request:

POST /callbackURL

Body
(x-www-form-urlencoded)

{
    MsgId: "消息ID",
    MsgTimestamp: 12312324, // 消息发送时的Unix时间戳
    SubscribeID: "订阅ID",
    AppId:"",     // 产生该消息的appid 
    ChannelID:"", // 产生该消息的频道
    "Contents": [
      {
        "Event": "UserEvent",//订阅的事件:频道内用户事件
        "UserEvent": {
          "UserId": "80331631628db0d1",    // 用户ID
          "EventTag": "Publish",    // 事件,包括Join, Leave, Publish, Unpublish, Roleupdate
          "SessionId": "0dr15rrnhkz0jnvz6o8sxo01hoondhu1", // 产生该事件的SessionID
          "Timestamp": 1609854786,    // 事件发生Unix 时间戳
          "Reason": 1 // 入会、离会原因,仅Join事件有
          "Role": 1 //  角色类型, 主播,观众
          "TerminalType": 1 // 终端类型, win, android
          "UserType":1 // 用户类型,native sdk, applete, webrtc
          "Medias":[1,2,3] // 推流类型:用户推了哪些流
        }
      },
      {
        "Event": "ChannelEvent",//订阅的事件:频道事件
        "ChannelEvent": {
          "ChannelId": "8888889999",
          "EventTag": "Open",   // 频道事件,包括开启与关闭Open, Close
          "Timestamp": 1609854530, // 事件发生Unix 时间戳
        }
      }
   ]
}

Response 
HTTP STATUS 200

UserEvent用户事件

参数

类型

是否必须

描述

UserId

string

用户ID。

SessionId

string

用户SessionID。

EventTag

string

事件类型,取值:

  • Join:入会。
  • Leave:离会。
  • PublishVideo:开始推视频流。
  • PublishAudio:开始推音频流。
  • PublishScreen:开始屏幕共享。
  • StopPublishVideo:停止推视频流。
  • StopPublishAudio:停止推音频流。
  • StopPublishScreen:停止屏幕共享。
  • Roleupdate:角色切换。

Timestamp

number

事件发生的时间戳。

Reason

integer

入会、离会原因(仅Join事件有),取值:

  • 1:正常入会、离会。
  • 2:重连入会(当前会中已有该用户实例,该用户再次入会)。
  • 3:跨频道转推。
  • 4:超时离会。
  • 5:用户启用新的会话,当前会话被挤下线。
  • 6:被踢出。
  • 7:频道解散。

Role

integer

角色类型,取值:

  • 1:主播。
  • 2:观众。

TerminalType

integer

终端类型,取值:

  • 1:Windows设备。
  • 2: Android设备。
  • 3:Mac设备。
  • 4:iOS设备。
  • 5:Linux设备。
  • 0:其他(只有Native SDK入会可以解析终端类型)。

UserType

integer

用户类型,取值:

  • 1:Native SDK。
  • 2:WebRTC(非小程序,非Native都归为WebRTC)。
  • 3:小程序。

Medias

integer

推流类型,取值:

  • 1:音频。
  • 2:视频。
  • 3:屏幕共享。

ChannelEvent频道事件

参数

类型

是否必须

描述

EventTag

string

事件类型,取值:

  • Open:会议开始。
  • Close:会议结束。

Timestamp

number

事件发生的时间戳。

返回数据

名称 类型 示例值 描述
RequestId String 760bad53276431c499e30dc36f6b26be

请求ID。

SubscribeId String ad53276431c****

创建的订阅ID。

示例

请求示例

http(s)://rtc.aliyuncs.com/?Action=CreateEventSubscribe
&AppId=9qb1****
&CallbackUrl=http://****.com/callback
&ClientToken=123e4567-e89b-12d3-a456-42665544****
&Events.1=ChannelEvent
&<公共请求参数>

正常返回示例

XML格式

<CreateEventSubscribeResponse>
  <RequestId>760bad53276431c499e30dc36f6b26be</RequestId>
  <SubscribeId>ad53276431c****</SubscribeId>
</CreateEventSubscribeResponse>

JSON格式

{
  "RequestId": "760bad53276431c499e30dc36f6b26be", 
  "SubscribeId": "ad53276431c****"
}