CreateEventSubscribe_音视频通信_API文档

插件下载了解更多
VS Code 插件
安装插件之前,确保已安装 VS Code安装插件之前,确保已安装 VS Code
Alibaba Cloud Developer Toolkit is a collection of extensions that can help access Alibaba Cloud services in Visual Studio Code.
JetBrains 插件
安装插件之前,确保已安装 JetBrains IDE安装插件之前,确保已安装 JetBrains IDE
The Alibaba Cloud Developer Toolkit for JetBrains makes it easier to access Alibaba Cloud services.

接口说明

使用说明

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

QPS 限制

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

流控信息

当前云产品API请求速率暂未透出。

授权信息

如下是此API对应的授权信息,用于RAM权限策略语句的Action元素中,为RAM用户或RAM角色授予调用此API的权限。请通过 RAM 访问控制设置,使用方法可参考访问控制帮助文档

具体说明如下:展开详情

操作访问级别资源类型条件关键字关联操作
暂无数据

请求参数

字段名称字段详情
Usersarray<string>

订阅的用户。

示例值:user1子级条数 <= 64
Eventsarray<string>

订阅的事件。

示例值:ChannelEvent子级条数 <= 16
AppIdstring

订阅的应用 ID。

示例值:9qb1****
ChannelIdstring

订阅的频道 ID。展开详情

示例值:123333参考取值来源:
    DescribeRtcChannelList
CallbackUrlstring

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

示例值:http://****.com/callback
ClientTokenstring

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

示例值:123e4567-e89b-12d3-a456-42665544****
NeedCallbackAuthboolean

是否开启回调鉴权,取值:展开详情

示例值:false
Roleinteger<int64>

用户角色,取值:展开详情

注意 该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。
示例值:1

请求说明

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 用户事件

参数类型是否必须描述
UserIdstring用户 ID。
SessionIdstring用户 SessionID。
EventTagstring事件类型,取值:
- Join:入会。
- Leave:离会。
- PublishVideo:开始推视频流。
- PublishAudio:开始推音频流。
- PublishScreen:开始屏幕共享。
- UnpublishVideo:停止推视频流。
- UnpublishAudio:停止推音频流。
- UnpublishScreen:停止屏幕共享。
- Roleupdate:角色切换。
Timestampnumber事件发生的时间戳。
Reasoninteger入会、离会原因(仅 Join 事件有),取值:
- 1:正常入会、离会。
- 2:重连入会(当前会中已有该用户实例,该用户再次入会)。
- 3:跨频道转推。
- 4:超时离会。
- 5:用户启用新的会话,当前会话被挤下线。
- 6:被踢出。
- 7:频道解散。
Roleinteger角色类型,取值:
- 1:主播。
- 2:观众。
TerminalTypeinteger终端类型,取值:
- 1:Windows 设备。
- 2:Android 设备。
- 3:Mac 设备。
- 4:iOS 设备。
- 5:Linux 设备。
- 6:其他(只有 Native SDK 入会可以解析终端类型)。
UserTypeinteger用户类型,取值:
- 1:Native SDK。
- 2:WebRTC(非小程序,非 Native 都归为 WebRTC)。
- 3:小程序。
Mediasinteger推流类型,取值:
- 1:音频。
- 2:视频。
- 3:屏幕共享。

ChannelEvent 频道事件

参数类型是否必须描述
EventTagstring事件类型,取值:
- Open:会议开始。
- Close:会议结束。
Timestampnumber事件发生的时间戳。

回调鉴权说明

事件回调鉴权功能默认关闭,用户可在创建事件回调时启用鉴权。启用鉴权后,鉴权逻辑如下所示:

  • 阿里云音视频通信服务发起回调请求时在 HTTP(S)请求头中包含Ali-Rtc-TimestampAli-Rtc-Signature字段,供回调消息接收服务端进行签名认证。Ali-Rtc-Timestamp值计算方式为:Ali-Rtc-Signature=MD5SUM(MD5CONTENT)。其中,MD5CONTENT=回调域名|Ali-Rtc-Timestamp 取值|鉴权 Key;回调域名指配置回调 URL 的域名,鉴权 Key 指用户创建 AppId 时生成的 AppKey。
  • 回调消息接收服务端接收回调消息时,将回调域名、Ali-Rtc-Timestamp取值、鉴权 Key 进行拼接后计算 MD5 值,得到加密字符串,再将计算出的加密字符串与音视频通信服务发起的 HTTP(S)请求头中的Ali-Rtc-Signature字段值进行对比,如果不一致,则请求非法。

返回参数

字段名称字段详情
SubscribeIdstring

创建的订阅 ID。

示例值:ad53276431c****
RequestIdstring

请求 ID。

示例值:760bad53276431c499e30dc36f6b26be

返回示例

错误码

全局错误码
HTTP 状态码错误码错误信息操作
200
ErrorIdempotent
%s诊断
400
ErrorAPIQueryRow
%s诊断
400
ErrorAPINoAppId
%s诊断
400
ErrorInvalidCallBackURL
%s诊断
400
ErrorIdempotentParameterMismatch
%s诊断
500
InternalError
%s诊断

变更历史

暂无变更历史

相关示例