产品文档 直播技术文档 直播服务端API接口

直播服务端API接口

概述

本文档为百家云直播服务端的API文档,用户可以通过文档中提供的API接口创建及管理直播间,导出直播数据信息等。

注:百家云API仅提供基础数据,客户须将数据同步到自己数据库(DB)后,通过自己的数据库(DB)来实现业务需求。

基本约定

常见基本约定以及平台术语见下表:

内容 约定
请求协议 HTTPS
请求类型 GET/POST
参数提交方式 application/x-www-form-urlencodedmultipart/form-data
返回数据格式 json
字符编码 UTF8
接口域名 https://${private_domain}.at.baijiayun.com/
${private_domain} 个性域名
partner_id 账号的ID, 由百家云平台分配,用户可以登录百家云网站后台查看
partner_key 账号的密钥,由百家云平台分配,用于计算服务端API接口的签名,用户可以登录百家云网站后台获取

说明:文档中的数字统一用int表示,即有符号的64位整数,取值范围是-2^63~2^63;

使用流程

合作方接入百家云开放平台直播有如下几个步骤:

  1. 注册账号
    • 注册后可以登录百家云后台获取partner_idpartner_key
  2. 创建房间
    • 根据百家云提供的API接口创建和管理房间
  3. 进入房间
    • 根据百家云提供的地址或接入百家云SDK进入教室
  4. 获取统计数据
    • 使用数据统计相关的接口可以导出直播用户的统计数据

接口规范

公共请求参数:

参数 类型 示例 参数说明
partner_id int 12345678 合作方账号ID
timestamp int 1505372499 unix时间戳,当前的秒数,10位长的数字(注:不是毫秒)
sign string e10adc3949ba59abbe56e057f20f883e 根据partner_key和请求参数计算的签名,32位的小写字母或数字

公共返回参数如下:

参数 类型 示例 参数说明
code int 1001 错误码,对应的错误原因参见错误码表
msg string 签名错误 错误原因描述
data json 返回的数据,出错时返回的data为null

个性域名

百家云给每个账号都分配了一个个性域名,客户调用服务端API接口、对接客户端SDK的时候,都需要用到这个个性域名。

个性域名可以登录百家云后台,在账号信息页面查看。

成为付费客户后,可以申请修改该个性域名(只能个性一次,修改后不可再更改)。

以下服务端的接口,都是调自己个性域名下的接口。

例如:个性域名是demo123,则所有的服务端API请求的域名为:https://demo123.at.baijiayun.com/

为方便理解,以下接口中的个性域名,都用${private_domain}表示,在使用的时候请将该变量替换成自己的个性域名。

签名规则

签名计算方式

直播服务端每个接口除了传递业务参数外,还有一个用于校验的sign参数。

sign的生成规则如下:

  • 将请求参数按key字典顺序(ASCII值大小)升序排序。
  • 将排好序的参数拼成 key1=value1&key2=value2&...&keyN=valueN
  • 将以上拼好的串后面再拼上 &partner_key=<partner_key> ,其中 <partner_key> 替换成具体值。
  • 对以上拼好的串算一个32位md5值(小写),即得到了签名。

注:

  • partner_key总是拼在字符串最后面,并不参与key的排序。
  • partner_key只是计算签名时需要,在发送请求时不需要发partner_key

例如,创建房间的接口需要以下参数:

partner_id=12345678
title=测试教室
start_time=1501575608
end_time=1501579208
type=2

partner_key=rLkIPaQjxSwRQmC/ITnHh8i2rifmmbFIVsYw03SSi24zAnkrAd0ZNb2rcTzI2avy7+AmNJDdLmzU89zKUAP3Xg==

以上参数排序后的顺序为:

end_time=1501579208
partner_id=12345678
start_time=1501575608
timestamp=1501572288
title=测试教室
type=2

按以上顺序拼接的字符串为:

end_time=1501579208&partner_id=12345678&start_time=1501575608×tamp=1501572288&title=测试教室&type=2

再拼上partner_key后的字符串为:

end_time=1501579208&partner_id=12345678&start_time=1501575608×tamp=1501572288&title=测试教室&type=2&partner_key=rLkIPaQjxSwRQmC/ITnHh8i2rifmmbFIVsYw03SSi24zAnkrAd0ZNb2rcTzI2avy7+AmNJDdLmzU89zKUAP3Xg==

最后算出来32位的小写的md5值为:

70d60aca82bedd5a10a64247c3d464b1

示例代码(php)

<?php

/**
 * 生成签名参数
 * 
 * @param array $params 请求的参数
 * @param string $partner_key 
 * @return string 生成的签名
 */
function getSign($params, $partner_key) {
    ksort($params);//将参数按key进行排序
    $str = '';
    foreach ($params as $k => $val) {
        $str .= "{$k}={$val}&"; //拼接成 key1=value1&key2=value2&...&keyN=valueN& 的形式
    }
    $str .= "partner_key=" . $partner_key; //结尾再拼上 partner_key=$partner_key
    $sign = md5($str); //计算md5值
    return $sign;
}

$params =  [
    "partner_id" => 12345678,
    "title" => "测试教室",
    "start_time" => 1501575608,
    "end_time" => 1501579208,
    "type" => 2,
    "timestamp" => 1501572288,
]

$partner_key = 'rLkIPaQjxSwRQmC/ITnHh8i2rifmmbFIVsYw03SSi24zAnkrAd0ZNb2rcTzI2avy7+AmNJDdLmzU89zKUAP3Xg==';
$sign = getSign($params, $partner_key);

API列表

API 1 : 获取/重置partner_key

【功能描述】

初始的partner_keysecret_key都可登录百家云后台获取。

此接口可用于重置partner_key

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/partner/createkey

【请求参数】

参数 类型 是否必填 默认值 参数说明
partner_id int 合作方账号ID
secret_key string 合作方用于更新partner_key的密钥(由开放平台提供给合作方)
regenerate int 0 为1时表示强制重新生成partner_key(默认情况下返回当前已经存在的partner_key
timestamp int 当前unix时间戳(秒)
sign string 签名

【返回参数】

参数 类型 示例 说明
partner_key string partner_key长度不超过128位

【请求示例】

curl -d "partner_id=12345678&secret_key=e10adc3949ba59abbe56e057f20f883e" https://${private_domain}.at.baijiayun.com/openapi/partner/createkey

【返回示例】

{
      "code": 0,
      "data": {
          "partner_key": "rLkIPaQjxSwRQmC/ITnHh8i2rifmmbFIVsYw03SSi24zAnkrAd0ZNb2rcTzI2avy7+AmNJDdLmzU89zKUAP3Xg=="
      },
      "msg":""
}

API 2 : 创建房间

【功能描述】

创建房间

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/create

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
title string 直播课标题,不超过50个字符或汉字,超过部分将进行截取
start_time int 开课时间, unix时间戳(秒)
end_time int 下课时间, unix时间戳(秒)
type int 2 1:一对一课 2:普通大班课 3:小班课普通版 4:小班课专业版(需开通相关权限才可以创建) 默认为普通大班课
industry_type int 0 0:表示教育,1:表示企业(目前大班课分教育直播和企业直播)
max_users int 0 房间最大人数, 不传或传0表示不限制。注:一对一是1人,当为互动小班课人数不能超过10人;当为专业小班课时候必须传一个正整数值;普通大班课可以不设置人数上限
pre_enter_time int 1800 学生可提前进入的时间,单位为秒,默认为30分钟
is_long_term int 0 是否是长期房间,0:普通房间(注:普通房间时长小于24小时) 1:长期房间 默认为普通房间(注:需要给账号开通长期房间权限才可以创建长期房间)
is_group_live int 0 是否是分组直播,0:常规直播 1:分组直播 默认为常规直播(注:需要给账号开通分组直播权限才可以创建分组直播,必须同时指定参数type为2)2:可切换大小班的分组直播(注:需要权限,参数type须为2)
template_name string 可选值:doubleCamera(双摄像头)、classic(经典模板)、triple(三分屏)、single(单视频模板)、liveWall(视频墙);企业直播:singleVideo(单视频),docAudio(文档加音频),docVideo(文档加视频)
speak_camera_turnon int 学生发言时是否自动开启摄像头 1:开启 2:不开启 默认会开启
teacher_need_detect_device int 老师是否启用设备检测 1:启用 2:不启用 默认不启用
student_need_detect_device int 学生是否启用设备检测 1:启用 2:不启用 默认不启用
forbidden_end_types string 指定屏蔽的端,可选值(web:pc浏览器, h5:手机浏览器)多种以英文逗号分隔
is_video_main int 指定PC端是否以视频为主 1:以视频为主 2:以PPT为主 (默认是以ppt为主,该选项只针对三分屏有效)
m_is_video_main int 指定手机H5页面是否以视频为主 1:以视频为主 2:以PPT为主 (默认是以视频为主)
timestamp int 当前unix时间戳(秒)
sign string 签名
is_mock_live int 0 是否是伪直播,0:否 1:是(注:需要给账号开通伪直播权限才可以创建伪直播,选择伪直播时,必须要选择mock_video_id或mock_room_id和mock_session_id)
is_push_live int 0 是否是推流直播,0:常规直播 1:推流直播 默认是常规直播(注:需要给账号开通推流直播的权限)
mock_room_id int 0 伪直播关联的回放教室号
mock_session_id int 0 伪直播关联的回放教室session_id(针对长期房间)
mock_video_id int 0 伪直播关联的点播视频ID
switch_room_role int 0 分组直播,大小班切换控制角色 1:大班老师控制,2 小班老师控制

注意:

  1. 非长期房间,结束时间与开始时间间隔需大于15分钟并小于24小时,开始时间和结束时间范围必须在当前时间一年以内
  2. 小班课专业版,只支持PC客户端上课。默认的账号没有该权限,需要开通开通相关权限才可以创建

【返回参数】

参数 类型 示例 描述
room_id string 12345678901234 房间ID,14位的数字
admin_code string abdce2 管理员进入房间的参加码
teacher_code string 13rlkk 老师进入房间的参加码
student_code string abc213 学生公共参加码,该参加码可以进多个学生,不互踢

注意:

  1. 参加码是一种快速进入房间的形式,合作方把参加码发给用户,他们就可以通过参加码和昵称直接进入房间。
  2. 参加码为6位,由字母和数字组成。

【请求示例】

curl -d "end_time=1464343200&partner_id=123456789&start_time=1464314400×tamp=1464313928&title=test&type=2&sign=e10adc3949ba59abbe56e057f20f883e" https://${private_domain}.at.baijiayun.com/openapi/room/create

【返回示例】

{
    "code": 0,
    "data": {
        "room_id": "12345678901234",
        "admin_code": "213rjl",
        "teacher_code": "232kj1",
        "student_code": "abc213"
    },
    "msg":""
}

API 3 : 更新房间信息

【功能描述】

更新房间信息

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/update

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int 房间ID,14位
title string 房间标题
start_time int 开课时间, unix时间戳(秒)
end_time int 结束时间, unix时间戳(秒)
max_users int 房间最大人数
pre_enter_time int 学生可提前进入的时间,单位为秒
template_name string 可选值:doubleCamera(双摄像头)、classic(经典模板)、triple(三分屏)、oneone(单视频模板)、oneoneNew(单视频模板2)
forbidden_end_types string 指定屏蔽的端,可选值(web:pc浏览器, h5:手机浏览器)多种以英文逗号分隔
is_video_main int 指定PC端是否以视频为主 1:以视频为主 2:以PPT为主 (默认是以ppt为主,该选项只针对三分屏有效)
m_is_video_main int 指定手机H5页面是否以视频为主 1:以视频为主 2:以PPT为主 (默认是以视频为主)
mock_room_id int 0 伪直播关联的回放教室号
mock_session_id int 0 伪直播关联的回放教室session_id(针对长期房间)
mock_video_id int 0 伪直播关联的点播视频ID
switch_room_role int 0 分组直播大小班切换,角色控制 1:大班 2:小班
timestamp int 当前时间,unix时间戳(秒)
sign string 请求接口参数签名

【返回参数】

返回code为0时表示更新成功,返回code非0表示更新失败,失败原因在msg中返回。

【返回示例】

成功情况下:

{
    "code": 0,
    "data": null,
    "msg": ""
}

API 4 : 删除房间

【功能描述】

删除一个房间

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/delete

【接口参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int 房间id
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

返回code为0时表示删除成功,返回code非0表示删除失败,失败原因在msg中返回。

【返回示例】

{
    "code": 0,
    "data": null,
    "msg": ""
}

API 5 : 获取房间信息

【功能描述】

获取房间信息

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/info

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int 房间id
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
room_id int 12345612345699 房间id
title string 英语语法在线 直播课标题
start_time datetime 2017-08-18 14:00:00 开课时间,格式如:2017-08-18 14:00:00
end_time datetime 2017-08-18 15:00:00 结束时间,格式如:2017-08-18 14:00:00
type int 2 1:一对一课 2:班课
max_users int 0 直播间允许的最大人数
admin_code string abc123 管理员进入直播间的参加码
teacher_code string 123abc 老师进入直播间的参加码

【返回示例】

{
    "code": 0,
    "data": {
        "room_id": 17081862531088,
        "title": "长期课长期课",
        "start_time": "2017-08-18 14:10:00",
        "end_time": "2027-08-18 14:10:00",
        "type": "2",
        "max_users": "0",
        "admin_code": "u9vnnb",
        "teacher_code": "zyh5pa"
    },
    "msg": "",
    "ts": 1505382011
}

API 6 : 生成用户参加码

【功能描述】

为了方便学生进入房间,我们可以根据学生的user_number生成学生参加码。学生可以凭参加码直接进入房间。

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/getcode

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方ID
room_id int 房间ID
user_number int 合作方账号体系下的用户ID号,必须是数字
user_avatar string 用户头像,需要完整的url地址
timestamp int 当前时间, unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
student_code string 12ed45 学生参加码

说明:

  1. 参加码不会重复,长度为6位
  2. 一个学生参加码唯一对应了一个room_iduser_number
  3. user_number为0时,生成的是学生用户的通用邀请码,所有学生可使用该通用邀请码同时进入教室(免费课场景)。
  4. user_number非0时,同一个学生邀请码只支持一人同时在线(收费课场景)。后进教室的学员会将之前进的人挤下线。

【返回示例】

{
    "code": 0,
    "data": {
        "student_code": "abc123"
    },
    "msg":""
}

API 7 : 获取用户参加码信息

【功能描述】

获取参加码信息

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/getCodeInfo

【请求参数】

参数 类型 示例 描述
code string 12ed45 学生参加码

【返回参数】

参数 类型 是否必填 默认值 描述
exist bool 参加码是否存在,为true进code_info才有值
code_info.code string
code_info.room_id int 房间ID
code_info.user_number int
code_info.user_role int
code_info.user_name string
code_info.create_time datetime 参加码生成时间

【返回示例】

{
    "code": 0,
    "data": {
        "exist": true,
        "code_info": {
            "code": "uvrv4c",
            "room_id": 18121196070275,
            "user_number": 960702751,
            "user_role": 1,
            "create_time": "2018-12-11 16:12:32"
        }
    },
    "msg": "",
    "ts": 1545049343
}

API 8 : 获取已生成的参加码列表

【功能描述】

获取已经生成的学生参加码列表

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/listcode

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方ID
room_id int 房间ID
page int 1 页数,参加码数量过多时,可以分多页来获取,每页取limit条。默认值为1
limit int 100 每页获取的条数,默认值100,最大值不能超过1000
timestamp int 当前时间, unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
total int 101 该房间总共的学生参加码数
student_code string 12ed45 学生参加码
user_number int 123456 参加码对应的用ID号
user_avatar string https://xxx.png 生成参加码时传的user_avatar

【返回示例】

{
    "code": 0,
    "data": {
        "total": 3,
        "list": [
            {
                "code": "kbvt9t",
                "user_number": "11",
                "user_avatar": ""
            },
            {
                "code": "xvxavp",
                "user_number": "10",
                "user_avatar": ""
            },
            {
                "code": "2crrly",
                "user_number": "0",
                "user_avatar": ""
            }
        ]
    },
    "msg": "
}

API 9 : 获取房间列表

【功能描述】

获取已经创建的房间列表

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/list

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方ID
page int 1 页数,参加码数量过多时,可以分多页来获取,每页取limit条。默认值为1
limit int 100 每页获取的条数,默认值100,最大值不能超过1000
product_type int 0 1:教育直播,2,小班课,3:双师,4,企业直播(单一产品线账号不需要传此参数)
timestamp int 当前时间, unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
room_id int 12345678901234 房间ID
title string 英语语法在线 直播课标题
start_time int 1460426400 开始时间, unix时间戳
end_time int 1460426400 结束时间, unix时间戳
create_time int 1460426400 创建时间, unix时间戳
type int 2 1:一对一课 2:普通大班课 3:小班课普通版 4:小班课专业版
max_users int 20 1:一对一课 2:班课
admin_code string abc123 管理员进入房间的参加码
teacher_code string 123abc 老师进入房间的参加码
student_code string 321abc 学生进入房间的参加码
industry_type int 0 0:表示教育,1:表示企业(目前大班课分教育直播和企业直播)

【返回示例】

{
    "code": 0,
    "data": {
        "list": [
            {
                "room_id": "17091462522904",
                "title": "直播培训",
                "type": "2",
                "max_users": "1",
                "start_time": 1505361000,
                "end_time": 1505364600,
                "create_time": 1505360825,
                "teacher_code": "7782s9",
                "admin_code": "dkn3wd",
                "student_code": "hfaaqq"
            },
            {
                "room_id": "17091358328329",
                "title": "测试标题",
                "type": "2",
                "max_users": "1",
                "start_time": 1505291100,
                "end_time": 1505294700,
                "create_time": 1505290999,
                "teacher_code": "aca2qv",
                "admin_code": "j5e74u",
                "student_code": "bry9wk"
            }
        ]
    },
    "msg": "",
    "ts": 1505390707
}

API 10 : 直播课件文档上传

【功能描述】

上传图片或文档,可指定关联到某教室。支持的文档类型有: '.doc', '.ppt', '.pdf', '.pptx', '.docx','.jpg', '.jpeg', '.png', '.gif'

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/doc/uploadDoc

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号,如果传了教室号则文档自动绑定到该教室,不传则不绑定
ppt_animation int 0 是否使用动效PPT,只针对PPT有效,1为动效
attachment 文件 要上传的文件(文件不参与签名的计算)
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
fid int 832417 文档ID
name string 文件名 上传的文档名
bind_id int 123 只有绑定到教室才会返回绑定ID

【返回示例】

{
    "code": 0,
    "data": {
        "fid": 832417,
        "name": "fb05686be68a856fac623f2669f5ef2f.jpeg",
        "bind_id": 123
    },
    "msg": "",
    "ts": 1487649903
}

【PHP代码示例】

<?php

$url = 'https://${private_domain}.at.baijiayun.com/openapi/doc/uploadDoc';
$partner_key = 'xxx';
$data = [
    'partner_id' => 123456,
    'room_id' => 12345678912345,
    'timestamp' => 1502763925,
];

//计算签名,getSign函数参数`签名规则`,文件不参与签名的计算
$data['sign'] = getSign($data, $partner_key);
$data['attachment'] = curl_file_create('/tmp/a.docx')

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
$last_error = curl_error($ch);
curl_close($ch);

print_r($last_error);
print_r($info);
print_r($result);

API 11 : 关联文档到教室

【功能描述】

将指定文档关联到指定教室

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/doc/bindDoc

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
fid int 文档资源号
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
fid int 832417 文档ID
room_id string 16062437104161 教室号
bind_id int 123 绑定ID

【返回示例】

{
    "code": 0,
    "data": {
        "fid": 832417,
        "room_id": "16062437104161",
        "bind_id": 123
    },
    "msg": "",
    "ts": 1487649903
}

API 12 : 获取指定教室内已上传的文档列表

【功能描述】

获取教室内已上传的文档

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/doc/listDoc

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
fid int 1 文档ID
name string 文件名 上传的文档名

【返回示例】

{
    "code": 0,
    "data": {
        "room_id": "17022132908721",
        "list": [
            {
                "fid": 832416,
                "name": "fb05686be68a856fac623f2669f5ef2f.jpeg",
                "create_time": "2017-02-21 12:03:46"
            },
            {
                "fid": 832386,
                "name": "878488c7f153c5efccc9f0308a4baf89.jpg",
                "create_time": "2017-02-21 10:31:58"
            },
            {
                "fid": 832371,
                "name": "百家云API使用文档.pdf",
                "create_time": "2017-02-21 10:31:17"
            }
        ]
    },
    "msg": "",
    "ts": 1487656394
}

API 13 : 获取账号下上传的所有文档

【功能描述】

获取账号下已上传的所有文档

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/doc/listAllDoc

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
type string 可选值 all:所有文档 room:教室里上传的文件 api:从api接口上传的文档
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
fid int 1 文档ID
name string 文件名 上传的文档名
upload_source string 上传来源 api:通过API接口上传的 room:在教室里上传的
create_time datetime 上传时间

【返回示例】

{
    "code": 0,
    "data": {
        "total": 235,
        "list": [
            {
                "fid": "928445",
                "name": "测试文件.doc",
                "create_time": "2017-04-28 11:12:29",
                "upload_source": "room"
            }
        ]
    },
    "msg": "",
    "ts": 1493695441
}

API 14 : 移除教室内文档

【功能描述】

移除教室内已上传的文档

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/doc/removeDoc

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
fid int 文档ID
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

返回code=0表示删除成功

【返回示例】

{
    "code": 0,
    "data": {
        "fid": "832418"
    },
    "msg": "",
    "ts": 1487650268
}

API 15 : 获取直播教室当前上课状态

【功能描述】

获取直播教室当前的上下课状态

【请求类型】

POST/GET

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live/getLiveStatus

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
status int 0 1:上课中 0:不在上课中

【返回示例】

{
    "code": 0,
    "data": {
        "status": 1
    },
    "msg": "",
    "ts": 1488856764
}

API 16 : 获取老师是否在教室状态

【功能描述】

当前老师是否在教室的状态

【请求类型】

POST/GET

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live/getTeacherOnlineStatus

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
status int 0 1:在教室 0:不在教室

【返回示例】

{
    "code": 0,
    "data": {
        "status": 1
    },
    "msg": "",
    "ts": 1488856764
}

API 17 : 获取当前时间教室人数

【功能描述】

获取当前时间教室人数

【请求类型】

POST/GET

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live/getUserCount

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
user_count int 3 教室当前人数
display_user_count int 3 显示出来教室人数

【返回示例】

{
    "code": 0,
    "data": {
        "user_count": 2,
        "display_user_count": 2
    },
    "msg": "",
    "ts": 1489753512
}

API 18 : 导出教室聊天记录

【功能描述】

导出教室内的聊天记录。只能导出最近2周的直播的聊天记录。

【请求类型】

GET/POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/exportChatMsg

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
date string 没传递时,长期教室是最近上课的一天,短期教室默认是这次课的所有聊天信息 导出日期
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
time string 2017-04-21 15:15:01 消息发送时间
user_number int 12345 用户ID
user_role int 1 用户角色 0:学生 1:老师 2:助教
user_name string 张三 用户昵称
content string hello world 消息类容

【返回示例】

{
    "code": 0,
    "data": {
        "list": [
            {
                "time": "2017-04-21 15:15:01",
                "user_number": 12345,
                "user_role": 1,
                "user_name": "张三",
                "content": "hello world"
            },
            {
                "time": "2017-04-21 15:15:39",
                "user_number": 123,
                "user_role": 0,
                "user_name": "李4",
                "content": "[wx]"
            },
            {
                "time": "2017-04-21 15:40:28",
                "user_number": 123,
                "user_role": 0,
                "user_name": "李4",
                "content": "aaa"
            }
        ]
    },
    "msg": "",
    "ts": 1492765634
}

API 19 : 设置教室公告

【功能描述】

设置教室公告

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live/setNotify

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
content string 公告信息
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

code=0则表示设置成功,非0表示设置失败。

【返回示例】

{
    "code": 0,
    "data": null,
    "msg": "",
    "ts": 1489753512
}

API 20 : 导出直播教室学员观看记录

【功能描述】

导出直播间学员观看记录。

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/exportLiveReport

【请求类型】

GET/POST

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方用户名
room_id int 教室号
type string student 可选值 all:所有用户 student:学员 teacher:老师 admin:助教,默认只导出学员观看记录
page int 1 分页参数
page_size int 0 每页返回条数,如果不传则返回所有的
date string 0 查询日期,格式如:2018-03-02
timestamp int 当前时间,unix时间戳
sign string 签名

【返回参数】

参数 类型 示例 描述
date string 日期
user_number int 用户的ID号
user_name string 昵称
user_role int 0:学生 1:老师 2:助教
first_time datetime 最早进入教室时间
last_time datetime 最晚离开教室时间
first_heartbeat_time datetime 上课状态下,最早在教室的时间
last_heartbeat_time datetime 上课状态下,最晚在教室的时间
actual_listen_time int 实际听课时长,指上课状态下,学生在教室的时间,多次进出教室情况是把每一小段时间累加(单位秒)
user_ip string 用户IP
area string 用户所属省份
city string 用户所属城市
network_operator string 使用的网络运营商
client_type int 0:PC网页 1:pc客户端 2:m站 3:ios 4:android 5:mac客户端 6:微信小程序

【返回示例】

{
    "code": 0,
    "data": {
        "total": 2,
        "room_user_info": [
            {
                "date": "2018-03-02",
                "user_number": 151134006392569,
                "user_name": "iOS",
                "user_role": 0,
                "first_time": "2017-11-23 11:47:09",
                "last_time": "2017-11-23 11:47:15",
                "first_heartbeat_time": "",
                "last_heartbeat_time": "",
                "actual_listen_time": 0,
                "user_ip": "61.50.136.186",
                "network_operator": "联通",
                "client_type": 3,
                "area": "北京",
                "city": "北京"
            },
            {
                "date": "2018-03-02",
                "user_number": 91170602,
                "user_name": "晨晨",
                "user_role": 1,
                "first_time": "2017-11-23 11:48:07",
                "last_time": "2017-11-23 13:35:42",
                "first_heartbeat_time": "",
                "last_heartbeat_time": "",
                "actual_listen_time": 0,
                "user_ip": "61.50.136.186",
                "network_operator": "联通",
                "client_type": 1,
                "area": "北京",
                "city": "北京"
            }
        ]
    },
    "msg": "",
    "ts": 1511427372
}

API 21 : 获取指定日期所有的直播间人次和最高并发量

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/getAllRoomUserStat

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
product_type int 0 1:教育直播,2,小班课,3:双师,4,企业直播
date string 格式如:2017-11-23
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例/默认值 描述
room_id int 教室号
total_user_count int 总人次(包括学生、老师、助教)
student_count int 学生人次
peak_user int 峰值人数(包含老师和助教)

【响应示例】


{ "code": 0, "data": { "room_user_stat": { "17072641561616": { "room_id": 17072641561616, "student_count": 1, "total_user_count": 1, "peak_user": 1 }, "17112279047985": { "room_id": 17112279047985, "student_count": 2, "total_user_count": 2, "peak_user": 1 }, "17112374903200": { "room_id": 17112374903200, "student_count": 0, "total_user_count": 7, "peak_user": 3 } } }, "msg": "", "ts": 1511487411 }

API 22 : 获取指定房间一段时间内的并发量

【接口描述】

该接口用于获取一段时间内教室的并发人数变化图。由于数据量较大,本接口每10分钟取一个最大值。

如果:15:10:00 => 3 表示的是 15:10:00~15:19:59 这段时间内的最高并发数为3

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/getRoomPeakUser

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int 教室号
start_time string 格式如:2017-11-23 10:00:00
end_time string 格式如:2017-11-23 15:00:00,查询时间范围不能跨天
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例/默认值 描述
date date 日期
peak_user dict key是时间,value是峰值人数。

【响应示例】

{
    "code": 0,
    "data": {
        "date": "2017-12-07",
        "peak_user": {
            "15:00:00": 3,
            "15:10:00": 3,
            "15:20:00": 1,
            "15:30:00": 1,
            "15:40:00": 1,
            "15:50:00": 1,
            "16:00:00": 1,
            "16:10:00": 1,
            "16:20:00": 1,
            "16:30:00": 1,
            "16:40:00": 1,
            "16:50:00": 1,
            "17:00:00": 1
        }
    },
    "msg": "",
    "ts": 1512718993
}

API 23 : 获取账号一天中每小时最高并发量

【接口描述】

该接口用于获取账号一天中每小时的并发量

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live_account/getHourPeakUser

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
product_type int 0 1:教育直播,2,小班课,3:双师,4,企业直播
date string 查询日期,格式如:2017-12-12
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例/默认值 描述
peak_user dict key是小时,value是峰值人数。

【响应示例】


{ "code": 0, "data": { "peak_user": { "00": 0, "01": 0, "02": 0, "03": 0, "04": 0, "05": 0, "06": 0, "07": 0, "08": 0, "09": 0, "10": 0, "11": 1, "12": 1, "13": 1, "14": 3, "15": 3, "16": 2, "17": 0, "18": 0, "19": 0, "20": 1, "21": 1, "22": 0, "23": 0 } }, "msg": "", "ts": 1514899076 }

API 24 : 查询账号一段时间内每天的最高并发量

【接口描述】

该接口用于获取账号一段时间内每天的最高并发量

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live_account/getDayPeakUser

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
product_type int 0 1:教育直播,2,小班课,3:双师,4,企业直播
start_date string 查询起始日期,格式如:2017-12-12
end_date string 查询结束日期,格式如:2017-12-28
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例/默认值 描述
peak_user dict key是日期,value是峰值人数。

【响应示例】

{
    "code": 0,
    "data": {
        "peak_user": {
            "2017-12-12": 3,
            "2017-12-13": 1,
            "2017-12-14": 0,
            "2017-12-15": 0,
            "2017-12-16": 0,
            "2017-12-17": 0,
            "2017-12-18": 0,
            "2017-12-19": 0,
            "2017-12-20": 0,
            "2017-12-21": 0,
            "2017-12-22": 1,
            "2017-12-23": 0,
            "2017-12-24": 0,
            "2017-12-25": 1,
            "2017-12-26": 0,
            "2017-12-27": 0,
            "2017-12-28": 2
        }
    },
    "msg": "",
    "ts": 1514899332
}

API 26 : 查询直播账号每天使用的人次/点数

【接口描述】

该接口用于获取按人次/时长计费的账号,每天消耗的人次/点数

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live_account/getPartnerDailyCost

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
product_type int 0 1:教育直播,2,小班课,3:双师,4,企业直播
start_date string 开始日期,格式如:2018-02-01
end_date string 结束日期,格式如:2018-02-15
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
cost dict key是日期,value是消耗的人次/点数,如果当天没有则不返回。

【响应示例】

{
    "code": 0,
    "data": {
        "cost": {
            "2018-02-06": 16,
            "2018-02-08": 1,
            "2018-02-12": 2
        }
    },
    "msg": "",
    "ts": 1521794617
}

API 27 : 查询直播账号指定日期中各教室使用的人次/点数明细

【接口描述】

该接口用于获取指定日期内每个教室使用的人次明细

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live_account/getAllRoomCost  

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
product_type int 0 1:教育直播,2,小班课,3:双师,4,企业直播
date string 查询日期,格式如:2018-02-01
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
room_cost dict key是教室号,value是消耗的人次/点数。

【响应示例】

{
    "code": 0,
    "data": {
        "room_cost": {
            "18020591890977": 1,
            "18020691956513": 2,
            "18020691956528": 6,
            "18020691956768": 2,
            "18020691956769": 1,
            "18020691958561": 3,
            "18020691958576": 1
        }
    },
    "msg": "",
    "ts": 1521794797
}

API 28 : 获取直播教室测验的试题信息

【接口描述】

该接口用于获取直播教室测验的试题信息

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/getRoomQuiz

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int partner_id
room_id int 教室号
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
quiz_list array 试卷列表
quiz_list[].quiz_id int 试卷id
quiz_list[].force_join int 是否强制参加
quiz_list[].title string 试卷标题
question_list array 题目列表
question_list[].type string 题目类型(judge_question=判断题、single_select=单选题、multi_select=多选题、question_answer=问答题)
question_list[].question_id int 题目ID
question_list[].title int 题目名称
question_list[].suggested_solution string 参考答案(问答题才有该项)
option_list array 选项列表(判断题、单选题、多选题才有该项)
option_list[].option_id int 选项ID
option_list[].value string 选项值
option_list[].is_right string 该选项是否是正确答案

【响应示例】

{
    "code": 0,
    "data": {
        "quiz_list": [
            {
                "quiz_id": 2095,
                "title": "随堂考试",
                "force_join": 0,
                "question_list": [
                    {
                        "question_id": 4887,
                        "type": "judge_question",
                        "title": "1+1=2?",
                        "option_list": [
                            {
                                "option_id": 15355,
                                "value": "对",
                                "is_right": 1
                            },
                            {
                                "option_id": 15356,
                                "value": "错",
                                "is_right": 0
                            }
                        ]
                    },
                    {
                        "question_id": 4888,
                        "type": "single_select",
                        "title": "以下数字最大的是?",
                        "option_list": [
                            {
                                "option_id": 15357,
                                "value": "1",
                                "is_right": 1
                            },
                            {
                                "option_id": 15358,
                                "value": "2",
                                "is_right": 0
                            },
                            {
                                "option_id": 15359,
                                "value": "34",
                                "is_right": 0
                            },
                            {
                                "option_id": 15360,
                                "value": "4",
                                "is_right": 0
                            }
                        ]
                    },
                    {
                        "question_id": 4889,
                        "type": "multi_select",
                        "title": "以下属于四大名著的有",
                        "option_list": [
                            {
                                "option_id": 15361,
                                "value": "《西游记》",
                                "is_right": 1
                            },
                            {
                                "option_id": 15362,
                                "value": "《水浒传》",
                                "is_right": 1
                            },
                            {
                                "option_id": 15363,
                                "value": "《三国演义》",
                                "is_right": 1
                            },
                            {
                                "option_id": 15364,
                                "value": "《红楼梦》",
                                "is_right": 1
                            }
                        ]
                    },
                    {
                        "question_id": 4890,
                        "type": "question_answer",
                        "title": "挖掘机技术哪家强?",
                        "suggested_solution": "中国山东找蓝翔"
                    }
                ]
            }
        ]
    },
    "msg": "",
    "ts": 1525691801
}

API 29 : 获取直播教室测验题目的学员答案信息

【接口描述】

该接口用于获取某个教室测验试题学员答案信息

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/getQuizUserAnswer

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int
quiz_id int 试卷的id
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
student_answer_list array 参与测验的学生列表
student_answer_list[].user_number int 学生ID
student_answer_list[].user_name string 学生姓名
answer_list array 该学生每个题目的答案列表
answer_list[].question_id int 回答的题目ID
answer_list[].answer string 学生回答的答案,判断题&单选题是选项的option_id,多选题是多个选项的option_id用英文逗号分隔,简答题则是学生的答案
{
    "code": 0,
    "data": {
        "student_answer_list": [
            {
                "user_number": 1,
                "user_name": "张三",
                "answer_list": [
                    {
                        "question_id": 9,
                        "answer": "16"
                    },
                    {
                        "question_id": 6,
                        "answer": "10,11"
                    },
                    {
                        "question_id": 7,
                        "answer": "百家云"
                    }
                ]
            }
    ]
    },
    "msg": "",
    "ts": 1525333069
}

API 30 : 获取教室学员签到信息

【接口描述】

该接口用于获取某个教室学员签到信息

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/getUserCheckinInfo

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
checkin_list array 教室内签到列表,其中每一项是一次签到内容
checkin_list[].time array 发起签到的时间
user_list array 本次签到的用户列表
user_list[].nickname string 昵称
user_list[].user_number int 用户ID
user_list[].checkin int 用户是否签到:1=签到、0=未签到
{
    "code": 0,
    "data": {
        "checkin_list": [
            {
                "time": "2017-02-23 10:49:00",
                "user_list": [
                    {
                        "nickname": "mac",
                        "user_number": 148781531939555,
                        "checkin": 1
                    },
                    {
                        "nickname": "学生9089",
                        "user_number": 148781522536720,
                        "checkin": 1
                    },
                    {
                        "nickname": "学生9372",
                        "user_number": 148781791266552,
                        "checkin": 1
                    },
                    {
                        "nickname": "学生5760",
                        "user_number": 148774818223036,
                        "checkin": 0
                    }
                ]
            },
        ]
    }
}

API 31 : 创建分组直播参加码

【接口描述】

该接口用于创建分组直播参加码

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/createGroupLiveCodes

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int
number int 创建分组的数量
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
group_id int 分组id
user_role int 角色类型 0:学生,2:助教
url int 进教室url
code string 参加码
{
    "code": 0,
    "data": {
        "admin": [
            {
                "group_id": 2,
                "code": "46jkky",
                "user_role": 2,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062132910011&code=kkkkkk"
            }
        ],
        "student": [
            {
                "group_id": 2,
                "code": "kkkkkk",
                "user_role": 0,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062132910011&code=kkkkkk"
            }
        ]
    }
}

API 32 : 获取分组直播参加码

【接口描述】

该接口用于获取分组直播参加码

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/getGroupLiveCodes

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
group_id int 分组id (大班的数据没有这个字段)
user_role int 角色类型 0:学生,1:老师,2:助教
url int 进教室url
code string 参加码
{
    "code": 0,
    "data": {
        "admin": [
            {
                "code": "klklkl",
                "user_role": 2,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062132910011&code=klklkl"
            },
            {
                "group_id": 1,
                "code": "jkjkjk",
                "user_role": 2,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062132910011&code=jkjkjk"
            },
            {
                "group_id": 2,
                "code": "klklkl",
                "user_role": 2,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062132910011&code=klklkl"
            }
        ],
        "student": [
            {
                "group_id": 1,
                "code": "jkjkjk",
                "user_role": 0,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062132910011&code=jkjkjk"
            },
            {
                "group_id": 2,
                "code": "klklkl",
                "user_role": 0,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062132910011&code=klklkl"
            }
        ],
        "teacher": [
            {
                "code": "jkjkjk",
                "user_role": 1,
                "url": "http://www.baijiayun.com/web/room/prepare?room_id=18062196085264&code=jkjkjk"
            }
        ]
    }
}

API 33 : 获取推流直播的推流地址

【接口描述】

该接口用于获取推流直播的推流地址

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/getPushLiveUrl

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
room_id int
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
expire_time datetime 推流地址过期时间
push_url string 推流的URL
{
    "code": 0,
    "data": {
        "expire_time": "2018-07-05 16:07:26",
        "push_url": "rtmp://pushstream-public.baijiayun.com/mgclient/d51d2bbb4b16dfb77e33d680137a7bd9/5b3dd1be/18070437161266-00001"
    },
    "msg": "",
    "ts": 1530684460
}

API 34 : 获取教室举手连麦数据

【接口描述】

该接口用于获取教室内学生举手连麦数据(备注:仅支持在pro环境的账号)

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room_data/getRoomRaiseData

【请求参数】

参数 类型 是否必填 默认值 描述
room_id int
partner_id int
start_time string
end_time string
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
room_id int 教室号
user_number int 用户ID
user_name string 用户昵称
raise_time string 2019-02-19 16:00:29 举手时间
raise_success_time string 举手连麦成功时间
raise_end_time string 举手结束时间
speak_time string 00:00:00 发言时间
{
    "code": 0,
    "data": [
        {
            "room_id": 19021479357355,
            "user_number": 9533447295,
            "user_name": "学生姓名",
            "raise_time": "2019-02-19 16:00:29",
            "raise_success_time": "",
            "raise_end_time": "",
            "speak_time": "00:00:00"
        },
        {
            "room_id": 19021479357355,
            "user_number": 9533447295,
            "user_name": "学生姓名",
            "raise_time": "2019-02-19 16:00:29",
            "raise_success_time": "",
            "raise_end_time": "",
            "speak_time": "00:00:00"
        },
    ],
    "msg": "",
    "ts": 1550589338
}

API 35 : 发送聊天消息接口

【接口描述】

该接口用于发送聊天消息

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live/sendChatMessage

注:此接口限制请求每分钟最高600次,每次message限制最高10条

message_list 示例:

[
        {
            "message_type": "message_send", // 消息类型:固定
            "content": "我是老师,我在发消息003", // 消息内容
            "to": "-1", // 消息群发:-1 固定
            "from": {
                "id": "10171920", // 教室内user_id
                "number": "415504461", // 教室内user_number
                "type": 1, // 发消息人的身份 0 学生 1 老师 2 助教
                "name": "test",
                "avatar": "https://test-img.baijiayun.com/0bjcloud/live/avatar/v2/90.jpg", // 头像 
                "status": 0, // 教室内人状态 0 显身 1 隐身 ,传0固定
                "end_type": 0, // 传0
                "group": 0, // 传0
                "webrtc_support": 1 // 是否支持webrtc
            },
            "uid": "10171920", // 同上user_id
            "agent_id": 0, // 传0
            "time": 1553658274, // 教室内发消息的时间
            "id": "1", //
            "class_id": "19032841550446", // 教室id
            "group": 0 // 传0
        }
]

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int
message_list string json字符串
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

返回code为0时表示发送成功,返回code非0表示更新失败,失败原因在msg中返回。

{
    "code": 0,
    "data": null,
    "msg": "",
    "ts": 1550589338
}

API 36 : 获取支持大小班的分组直播小班教室room_id

【接口描述】

该接口用于获取支持大小班的分组直播小班教室room_id

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/getGroupSubRoomId

【请求参数】

参数 类型 是否必填 默认值 描述
room_id int
partner_id int
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
room_id int 教室号
group_id int 分组id
{
    "code": 0,
    "data": {
        "group_room_id": [
            {
                "group_id": 1,
                "room_id": 19031987767601
            },
            {
                "group_id": 2,
                "room_id": 19031983489184
            },
            {
                "group_id": 3,
                "room_id": 19032745824544
            }
        ]
    },
    "msg": "",
    "ts": 1554720145
}

API 37 : 获取推流直播的拉流地址

【接口描述】

该接口仅用于获取推流直播的拉流地址

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room/getPullStreamUrl

【请求参数】

参数 类型 是否必填 默认值 描述
room_id int
partner_id int
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
rtmp_url string 拉流地址
m3u8_url string 拉流地址
{
    "code": 0,
    "data": {
        "rtmp_url": "rtmp://pulltc-live.baijiayun.com/mgclient/19041691969928-00001",
        "m3u8_url": "http://pulltc-live.baijiayun.com/mgclient/19041691969928-00001/playlist.m3u8"
    },
    "msg": "",
    "ts": 1555407102
}

API 38 : 第三方教室中学生抢红包统计

【接口描述】

该接口仅用于第三方红包雨抢红包统计

【请求类型】

POST

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/room-data/getRoomRedPackage

【请求参数】

参数 类型 是否必填 默认值 描述
room_id int
partner_id int
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例 描述
student_id string 学生 id
count int 总个数
amount int 总学分数
{
    "code": 0,
    "data": {
        "info": [
            {
                "student_id": 958263451,
                "count": "42",
                "amount": "179",
                "name": ""
            },
            {
                "student_id": 4294967295,
                "count": "136",
                "amount": "4977",
                "name": ""
            },
            {
                "student_id": 9432728534,
                "count": "18",
                "amount": "18",
                "name": ""
            }
        ]
    },
    "msg": "",
    "ts": 1555407102
}

-

回调接口

1. 设置直播上下课事件回调地址

【接口描述】

该接口用于设置直播中上下课事件的回调地址。 并不是直播生成回放的回调,直播生成回放的回调请参考 回放服务端API接口文档

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live_account/setClassCallbackUrl

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
url string 回调地址,必须是http(s)://开头
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例/默认值 描述
url string 日期

【响应示例】

{
    "code": 0,
    "data": {
        "url": "http://www.baidu.com"
    },
    "msg": "",
    "ts": 1512718993
}

2. 查询直播上下课回调地址

【接口描述】

该接口用于查询直播上下课的回调地址

【请求地址】

https://${private_domain}.at.baijiayun.com/openapi/live_account/getClassCallbackUrl

【请求参数】

参数 类型 是否必填 默认值 描述
partner_id int 合作方id
timestamp int 当前时间,unix时间戳
sign string 签名

【响应参数】

参数 类型 示例/默认值 描述
url string 回调地址

【响应示例】

{
    "code": 0,
    "data": {
        "url": "http://www.baidu.com"
    },
    "msg": "",
    "ts": 1512718993
}

3. 直播教室上下课事件回调

【接口描述】

如果合作方提供了回调地址,当老师在教室里点击开始上课或下课时,可以回调通知合作方。

重试机制:如果回调失败,会在间隔1秒、3秒后分别重试两次,之后不再重试。

【请求地址】

通过回调接口 - 设置直播上下课事件回调地址 接口来设置

【请求类型】

POST

【回调参数】

参数 类型 必填 示例 描述
room_id int 1234567890 直播教室id
op string start 操作类型 上课:start 下课:end
op_time string 2017-01-11 14:16:54 操作时间 格式如:2017-01-11 14:16:54
qid string 1234567890 唯一的请求ID,长度24位
timestamp int 1467882806 当前时间,unix时间戳
sign string 签名

注:

签名参数与合作方调百家云接口生成签名的一样,即请求参数按key顺序拼接起来然后加上partner_key最后做个md5加密

【返回标准】

合作方接收后应返回一段json,包含一个code,0表示成功,非0表示失败,

  • 成功示例
{
    "code": 0,
    "msg":""
}
  • 失败示例
{
    "code": 1,
    "msg":"错误信息"
}

4. 直播生成回放的回调

直播中生成回放的回调,请参考文档 回放服务端API文档

5. 用户进出教室事件回调

【接口描述】

如果合作方提供了用户进出教室事件回调地址,当有用户进出教室时,可以回调通知合作方。

注:客户提供回调地址,由百家云客户经理/技术支持申请运营配置。

由于用户进出教室事件较多,回调会累积一段时间后批量回调这段时间内的所有用户进出事件。最短时间可设置1分钟批量回调一次。

如果1分钟内进出直播教室的人数很多,会分批回调。

如果回调失败,会在间隔5秒、30秒后分别重试两次,之后不再重试。

【请求地址】

由合作方提供一个能够接受post请求的url地址。

【请求类型】

POST

【回调参数】

参数 类型 必填 示例 描述
room_id int 1234567890 直播教室id
user_events string [{"number":99082171,"name":"访客2309","event":"user_in","ts":1520317305}] json格式的字符串,里面包含每个用户进出教室时间
qid string 1234567890 唯一的请求ID,长度24位
timestamp int 1467882806 当前时间,unix时间戳
sign string 签名

user_events是一个json字符串,包含这段时间内用户进出教室事件描述,解析后格式如下:

[
    {
        "number": 99082171,
        "name": "访客2309",
        "event": "user_in",
        "ts": 1520317305
    },
    {
        "number": 99082171,
        "name": "访客2309",
        "event": "user_out",
        "ts": 1520318000
    },
]
  • event:
    • user_in: 用户进教室
    • user_out: 用户退出教室

注:

签名参数与合作方调百家云接口生成签名的一样,即请求参数按key顺序拼接起来然后加上partner_key最后做个32位小写md5加密

【返回标准】

合作方接收后应返回一段json,包含一个code,0表示成功,非0表示失败,

  • 成功示例
{
    "code": 0,
    "msg":""
}
  • 失败示例
{
    "code": 1,
    "msg":"错误信息"
}

错误码及对应的描述

code 描述
0 成功
1 普通错误(没有明确code码的错误)
404 请求路径不存在
1001 参数错误
1002 签名计算错误
2001 账号不存在
2002 账号权限错误
2003 直播账号未开或服务停止
3001 房间号不存在
3002 该房间已删除
4001 文件上传失败