chat_js_sdk_api
创建实列
var chatroom = new PolyvChatRoom({
roomId: '268682',
...
});
相关参数说明
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| roomId | true | string | 频道号 |
| userId | true | string | 用户唯一id,生成建议 |
| pic | true | string | 用户头像,须以 'http' 或者 'https' 开头的绝对地址 |
| nick | false | string | 用户昵称,默认为‘游客’ |
| actor | false | string | 用户头衔,默认‘学生’ |
| userType | false | string | 用户类型,默认为student,三分屏场景下学员需设置为slice 普通学员:student 云课堂学员:slice 讲师:teacher 管理员:manager 助教:assistant 嘉宾:guest |
| accountId | false | string | 直播账号userId,用于开启全局严禁词和图片表情消息功能 |
| token | true | string | 校验码 |
| mediaChannelKey | true | string | 连麦相关参数 |
| version | false | string | 版本号,默认为2.0 |
| roomMessage | false | function | 聊天室消息回调函数 |
| enableReplay | false | boolean | 开启内容回复,默认为false |
| enableRedpack | false | boolean | 是否展示红包消息 |
| handlerEvent | false | function | 点击红包消息的回调,(type, data) type: '', 红包事件类型,可选:clickRedpacket data: '' 当前点击的红包数据 |
| customRedpackLabel | false | object | 红包文案配置 { passwordTitle: '输入口令,领取红包(custom)', noReceive: '领取红包(custom)', normalType: '普通红包(custom)', passwordType: '口令红包(custom)', rainType: '红包雨(custom)', } |
| customRedpackImg | false | object | 红包图片配置 { normalEntranceImg: '', 普通红包封面图片 passwordEntranceImg: '', 口令红包封面图片 rainEntranceImg: '', 红包雨封面图片 } |
| container | false | string | DOM选择器,HTML元素,用于嵌入默认聊天室样式 |
| isMobile | false | boolean | 是否使用移动端样式, 默认值根据当前UA判断是否为移动端 |
注:以下参数只有在传了container参数时才生效
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| width | false | number | container宽度,默认300px |
| height | false | number | container高度,默认600px |
| showUserList | false | boolean | 是否显示在线列表。PC端默认开启,移动端默认关闭。当关闭时,tabData若含有在线列表对象也不显示 |
| enableSetNickname | false | boolean | 是否开启设置昵称功能,默认为false |
| enableWelcome | false | boolean | 是否开启欢迎语,默认为true |
| enableFlower | false | boolean | 是否开启送花功能,默认为true |
| enableLike | false | boolean | 是否开启点赞,默认为true |
| enableOnlyTeacher | false | boolean | 是否开启只看讲师功能,默认为true |
| enableBulletin | false | boolean | 是否开启公告,默认为true |
| enableAsk | false | boolean | 是否开启提问,默认为true |
| tabData | false | array | 自定义菜单栏 |
| customChatColor | false | object | 自定义消息颜色 |
| apiPrefix | false | object | 自定义域名 |
| enableRewardAnimation | false | boolean | 是否开启打赏动画效果,默认为true |
| enableUpdatePageviews | false | boolean | 是否开启热度更新,默认为true |
| getChatRecordBySessionIdOptions | false | object | 根据传入的sessionId获取聊天记录说明 |
| getChatRecordByTimeOptions | false | object | 根据传入的时间获取聊天记录说明 |
| showOwnInfo | false | boolean | 是否显示自己的聊天消息的头像、头衔、昵称,默认为false |
| enableViewBigPicture | false | boolean | 是否支持查看大图,默认为false |
| customViewPicture | false | function | 自定义查看大图方法,需要开启enableViewBigPicture |
| customMessageRender | false | object | 自定义消息渲染函数对象说明 |
| enableBadWordsTip | false | boolean | 是否开启严禁词提示,默认false |
| enableCustomMessage | false | boolean | 是否显示http接口发送的自定义消息,默认false |
| enableFontSize | false | boolean | 是否开启字体设置功能,默认false,可设置三种字体大小,sm:12px, md:14px,lg:16px |
| enableReplay | false | boolean | 是否开启引用回复,默认false |
| newMsgTipText | false | string | 新消息提示自定义中文文案 |
| newMsgTipTextEn | false | string | 新消息提示自定义英文文案 |
| lang | false | string | 中英文,可选'zh_CN'|'en',默认'zh_CN' |
| param4 | false | string | POLYV系统参数 |
| param5 | false | string | POLYV系统参数 |
userId 生成建议
userId 是聊天室中的用户唯一标识,两个相同的 userId 登入聊天室后,后者会将前者踢出聊天室,因此不同的聊天室用户的 userId 需要具有唯一性,生成建议如下:
- 如果您有用户系统,则使用用户系统中的用户 id 作为登入聊天室的
userId。 - 如果您没有用户系统,则在后端生成高度随机的值作为登入聊天室的
userId,如:「时间戳 +5 位随机数」、uuid 等,并将该userId保存到 cookie 或本地存储(localStorage 或 sessionStorage)中,避免每次刷新页面后重新生成userId。
自定义菜单栏
tabData: 对象数组,每个对象包含两个属性name,type,默认包含聊天tab
name: 菜单栏名称
type: 菜单栏类型,若不是已有内置类型,会嵌入一个不包含任何内容的div元素到页面
已有内置类型
| type | 说明 |
|---|---|
| chat | 互动聊天 |
| user-list | 在线列表 |
| ask | 提问 |
自定义消息颜色
说明:修改消息字体/背景颜色,可针对自己/普通用户/管理员/讲师/助教/嘉宾修改
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| selfBgColor | false | string | 自己消息背景颜色,默认为 #8bc34a |
| selfColor | false | string | 自己消息颜色,默认为 #fff |
| otherBgColor | false | string | 普通用户消息背景颜色,默认为 #fff |
| otherColor | false | string | 普通用户消息颜色,默认为 #546e7a |
| specialBgColor | false | string | 特殊用户消息背景颜色,可以统一设置管理员/讲师/助教/嘉宾的背景颜色,默认为 #fff |
| specialColor | false | string | 特殊用户消息颜色,可以统一设置管理员/讲师/助教/嘉宾的消息颜色,默认为 #2196f3 |
| managerBgColor | false | string | 管理员消息背景颜色 |
| managerColor | false | string | 管理员消息颜色 |
| teacherBgColor | false | string | 讲师消息背景颜色 |
| teacherColor | false | string | 讲师消息颜色 |
| assistantBgColor | false | string | 助教消息背景颜色 |
| assistantColor | false | string | 助教消息颜色 |
| guestBgColor | false | string | 嘉宾消息背景颜色 |
| guestColor | false | string | 嘉宾消息颜色 |
自定义域名
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| socketHost | false | string | 聊天室域名,默认为chat.polyv.net |
| chatApi | false | string | 聊天室接口域名,默认为apichat.polyv.net |
getChatRecordBySessionIdOptions对象说明
| 属性名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| enable | false | boolean | 是否开启根据sessionId获取聊天记录并显示,默认为false |
| sessionId | - | string | 场次ID,当enable为true时,必传 |
| connect | false | boolean | 是否连接聊天室,默认为false,此时提问等需要聊天室的功能也无法使用 |
| page | false | string | 当前页码,默认为1 |
| size | false | string | 每页显示的数据条数,默认每页显示10条数据 |
getChatRecordByTimeOptions对象说明
| 属性名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| enable | false | boolean | 是否开启根据传入的起始时间获取聊天记录并显示,默认为false |
| startTime | - | number | 13位时间戳。开始时间,当enable为true时,必传 |
| endTime | - | number | 13位时间戳。结束时间,当enable为true时,必传 |
| connect | false | boolean | 是否连接聊天室,默认为false,此时提问等需要聊天室的功能也无法使用 |
| page | false | string | 当前页码,默认为1 |
| size | false | string | 每页显示的数据条数,默认每页显示10条数据 |
customMessageRender对象说明
格式:{[type]: function(data){/** 将要渲染的内容返回给sdk内部进行渲染 */}}
type为渲染的消息类型,取值有:'custom'|'flowers'|'other'|'own'|'redpack'|'redpackResult'|'reward'|'system'
data为消息数据
| 属性名 | 说明 |
|---|---|
| custom | 自定义消息 |
| flowers | 送花消息 |
| other | 他人的消息 |
| own | 自己的消息 |
| redpack | 红包消息 |
| redpackResult | 红包领取消息 |
| reward | 打赏消息 |
| system | 系统消息 |
例子
...
customMessageRender: {
custom: function(data) {
return '<div>' + data + '</div>';
}
}
...
实例方法
发送引用回复消息:reply(id, content)
说明:回复某一条消息
例子
// chatroom为此sdk实例对象
chatroom.reply('msg_id', '回复内容');
参数
id: String类型,要回复的消息id
content:String类型, 回复的内容
返回值
返回一个Promise对象
踢出某人:kickUser(userId, sign)
说明:将某个人踢出聊天室
例子
chatroom.kickUser('userId', sign);
参数
userId: String类型,要踢出的用户的userId
sign:String类型, 签名(规则)
返回值
返回一个Promise对象
取消踢出某人:unKickUser(userId, sign)
说明:取消踢出某人
例子
chatroom.unKickUser('userId', sign);
参数
userId: String类型,要取消踢出的用户的userId
sign:String类型, 签名(规则)
返回值
返回一个Promise对象
其他
获取chat对象
var chat = chatroom.chat;
获取socket对象
var socket = chat.socket;
发送聊天消息
// 发送文本消息
chat.send('hello');
// 回复消息
chat.send(
'回复的消息内容',
{
id: '被回复的消息 id',
content: '被回复的消息内容',
nick: '被回复的发言者昵称'
},
);
// 发言成功后回调
chat.send('hellow', null, (id) => {
console.log('发送成功,消息 id:', id);
});
获取聊天历史记录
根据消息索引位置等选项获取聊天历史记录
chat.getChatHistory({
start: 0,
end: 10,
})
.then(function (data) {
// TODO:
console.log(data);
});
参数说明
| 参数名 | 必选 | 可选值 | 说明 |
|---|---|---|---|
| start | false | - | 开始下标,默认为 0 |
| end | false | - | 结束下标,默认为 10 |
| getSpecialMessage | false | 0/1 | 是否只获取特殊身份的消息,传入 1 表示只获取特殊身份的消息,默认为 0 |
// 原有获取历史消息记录接口已废弃
chat.getHistoryMessage(start, end)
.then(function (data) {
// TODO:
console.log(data);
});
根据场次ID(sessionId)获取聊天历史记录
chat.getHistoryMessageBySessionId({ sessionId, page , size })
.then(function(data) {
// TODO:
console.log(data);
});
根据起始时间获取聊天历史记录
chat.getHistoryMessageByTime({ startTime, endTime, page , size })
.then(function(data) {
// TODO:
console.log(data);
});
参数说明
| 参数名 | 必选 | 说明 |
|---|---|---|
| start | false | 开始下标,默认为0 |
| end | false | 结束下标,默认为10 |
结果说明
data为一个对象数组,具体内容如下
| 参数名 | 类型 | 说明 |
|---|---|---|
| content | string | 发言消息文本内容 |
| id | string | 该条记录ID |
| time | number | 发言时间戳,13位毫秒时间戳 |
| user | object | 发言人 |
user说明
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| nick | true | string | 昵称 |
| pic | true | string | 头像 |
| userId | true | string | 唯一标识 |
| clientIp | true | string | IP地址 |
| banned | true | boolean | 是否被禁言 |
| userType | true | string | 类型 |
| userSource | false | string | 来源 |
| actor | false | string | 头衔 |
| roomId | true | string | 房间号 |
| channelId | true | string | 频道号 |
| uid | true | string | socket连接唯一id |
注:
1、clientIp默认为空,暂不支持返回内容值;
2、userType包含值可能有:空/student/slice/teacher/manager/assistant/guest/viewer等;
获取在线列表
chat.getUserList(page, len)
.then(function (data) {
// TODO
console.log(data);
});
参数说明
| 参数名 | 必选 | 说明 |
|---|---|---|
| page | false | 页码,默认为1 |
| len | false | 条数,默认为100 |
结果说明
data为一个对象,具体内容如下
| 参数名 | 类型 | 说明 |
|---|---|---|
| count | number | 在线人数 |
| userlist | array | 在线学员对象数组 |
userlist说明
userlist对象数组元素具体说明请参考“获取聊天历史记录”方法user说明
获取观众的提问历史记录
chatroom.chatApi.getAskHistoryByUserId()
.then(function (data) {
// TODO
console.log(data);
});
参数说明
- 入参可以是一个对象,也可以不传,默认会获取初始化 sdk 时的入参
- 作为对象入参时可以包含以下字段
| 参数名 | 必选 | 说明 |
|---|---|---|
| roomId | false | 房间号 |
| userId | false | 观众 id |
| token | false | 聊天室 token |
| page | false | 页码,大于等于 1 |
| size | false | 每页长度, 大于等于1,小于等于100 |
结果说明
data为一个对象,具体内容如下
| 参数名 | 类型 | 说明 |
|---|---|---|
| page | number | 页码 |
| size | number | 每页记录数 |
| totalPage | number | 总页数 |
| totalCount | number | 总记录数 |
| list | array | 提问列表 |
list说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| content | string | 消息内容 |
| id | string | 消息 id |
| time | number | 消息时间 |
| user | object | 请参考“获取聊天历史记录”方法 user 说明 |
sendMessage
说明:自己发言之后会触发此消息,会在roomMessage返回,也可以通过chat对象监听 例如:
chat.on(chat.events.SEND_MESSAGE, (event, data) => {
// TODO
});
返回数据:
EVENT: "sendMessage"
content: "自己发言"
currentUser: true
custom: false
formatTime: "2019-04-25 18:06"
imgchat: false
mySelfSend: true
reward: false
time: 1556186781080
user: {
nick: "polyv",
pic: "http://livestatic.videocc.net/assets/wimages/missing_face.png",
userId: "1530756023116",
roomId: "",
channelId: ""
}
互动功能socket消息说明
登入消息
LOGIN:
登录消息,登录房间的时候服务器会广播这一消息
监听回调返回的数据:
{
"EVENT":"LOGIN",
"onlineUserNumber":3,
"user": {
"clientIp":"59.42.43.28",
"nick":"广州观众/32199",
"pic":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png",
"roomId":"100781",
"uid":"CxJj8Ap3C9jN1UHKAJ_V",
"userId":"1499917692338"
"userType": ""
}
}
说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| onlineUserNumber | number | 当前房间在线总人数 |
| clientIp | string | 用户IP |
| nick | string | 用户昵称 |
| pic | string | 用户头像 |
| roomId | string | 房间号 |
| uid | string | socket分配的id |
| userId | string | 用户唯一标识 |
| userType | string | 用户类型。目前有: 'teacher' 老师 'assistant' 助教 'manager' 管理员 'slice' 云课堂学员 |
登出消息
LOGOUT
说明:登出消息,有人离开房间(包括刷新页面)时服务器会广播这一消息
监听回调返回数据:
EVENT: "LOGOUT",
onlineUserNumber: 3,
uid: "I_o3f4sHDzAHM4LVAJTX"
| 参数名 | 类型 | 说明 |
|---|---|---|
| onlineUserNumber | number | 当前房间在线总人数 |
| uid | string | 离开人的socket.id |
接收别人发言消息
SPEAK:
说明:发言,接收别人的发言消息(不包括自己)
发送:
socket.emit('message', JSON.stringify({
EVENT: 'SPEAK',
values: [value], //发言内容
roomId: roomId //当前房间号
}));
字段说明:
| 名称 | 必须 | 类型 | 说明 |
|---|---|---|---|
| EVENT | 是 | string | 事件名 |
| values | 是 | array | 发言内容,提交的发言是数组的第一个元素 |
| roomId | 是 | string | 对应的频道号 |
监听回调返回的数据:
{
"EVENT": "SPEAK",
"id": "f1e4a960-6abc-11e7-ac0a-379e251bb30e",
"time": 1500274540278,
"user": {
"clientIp": "59.42.40.89",
"nick": "rururu",
"pic":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png",
"roomId": "100781",
"uid": "yP-HnXTEZyToxP0TAGCS",
"userId": "1500274526077",
"userType": ""
},
"values": ["sadasd"]
}
| 参数名 | 说明 |
|---|---|
| id | 消息唯一标志 |
| time | 时间戳 |
| user | 发言人 |
| values | 消息内容 |
系统公告
GONGGAO:
说明:当管理员发言时,服务器会将管理员的消息做为公告处理,当重新进入页面时,如有公告,服务器会广播这一消息。
监听回调返回的数据:
{
"EVENT": "GONGGAO",
"content": "POLYV保利威视"
}
| 参数名 | 说明 |
|---|---|
| content | 公告内容 |
普通公告
BULLETIN
说明:后台设置的公告消息,当重新进入页面时,如有公告,服务器会广播这一消息。
监听回调返回的数据:
EVENT: "BULLETIN",
content: "???/",
roomId: "105240"
| 参数名 | 类型 | 说明 |
|---|---|---|
| content | string | 公告内容 |
| roomId | number/string | 当前房间号(重新进入房间收到这一消息不会带roomId) |
送花消息
FLOWERS:
说明:送花
监听回调返回的数
{
"EVENT":"FLOWERS",
"nick":"广州观众/81366",
"uimg":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png"
}
| 名称 | 说明 |
|---|---|
| nick | 送花人昵称 |
| uimg | 送花人头像(新增) |
点赞消息
LIKES:
说明: 点赞
监听回调返回的数据:
{
"EVENT":"LIKES",
"count":160,
"nick":"广州观众/81366"
}
| 参数名 | 说明 |
|---|---|
| count | 当前点赞总数,若发生消息的时候没传此属性,则不返回这个属性 |
| nick | 点赞人昵称 |
禁言
SHIELD:
说明: 禁言
监听回调返回的数据:
注:userId或ip只会返回一个
{
EVENT: 'ADD_SHIELD',
value: '', // 被禁言用户userId值或ip值
data: {
banType: 'userId/ip', // 禁言类型 userId/ip
userId: '', // 被禁言用户userId值
ip:'', // 被禁言用户ip值
}
}
解除禁言
REMOVE_SHIELD:
说明: 解除禁言
监听回调返回的数据:
解除userId
{
EVENT: 'REMOVE_SHIELD',
value: '', // 被禁言用户userId值
data: {
banType: 'userId', // 禁言类型
userId: '' // 被禁言用户userId值
}
}
解除ip
{
EVENT: 'REMOVE_SHIELD',
value: '',// 被禁言用户ip值
data: {
banType 'ip', // 禁言类型
ip: '' // 被禁言用户ip值
}
}
踢人
KICK:
说明: 踢人
监听回调返回的数据:
{
"EVENT":"KICK",
"user": {
"clientIp":"59.42.40.89",
"nick":"林林林",
"pic":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png",
"roomId":"100781",
"uid":"118GWVRA24PR14coA3bz",
"userId":"1500275476199",
"userType":""
}
}
| 参数名 | 说明 |
|---|---|
| user | 被踢用户对象 |
解除踢人
UNKICK:
说明: 解除踢人
监听回调返回的数据:
解除userId
{
"EVENT":"UNKICK",
"kickType": "userId"
"userId": "1500275476199" //踢出值
}
解除ip
{
"EVENT":"UNKICK",
"kickType": "ip"
"ip": "127.0.0.1" //踢出值
}
| 参数名 | 说明 |
|---|---|
| kickType | 踢出方式 |
| ip | 踢出IP |
| userId | 踢出userId |
删除某条聊天记录
REMOVE_CONTENT:
说明:删除某条聊天记录,需要通过HTTP接口调用
监听回调返回的数据:
{
"EVENT":"REMOVE_CONTENT",
"content":"asd",
"id":"54b04e90-6acd-11e7-abcd-a985dda00975",
"roomId":"100781"
}
| 参数名 | 说明 |
|---|---|
| content | 删除的内容 |
| id | 删除内容对应的id |
| roomId | 房间号 |
清空聊天记录
REMOVE_HISTORY:
说明:清空聊天记录
监听回调返回的数据:
{
"EVENT":"REMOVE_HISTORY"
}
关闭聊天室
CLOSEROOM:
说明:关闭聊天室
监听回调返回的数据:
{
"EVENT":"CLOSEROOM",
"value": {
"closed":true,
"roomId":"100781"
}
}
| 参数名 | 说明 |
|---|---|
| closed | true为关闭,false为开启 |
| roomId | 房间号 |
关闭弹幕
CLOSE_DANMU:
说明:关闭弹幕
监听回调返回的数据:
{
"EVENT": "CLOSE_DANMU",
"isClose": true
}
| 参数名 | 说明 |
|---|---|
| isClose | true为关闭,false为开启 |
接口发送自定义消息
说明:通过api接口 发送自定义消息
自定义消息接收事件
CUSTOMER_MESSAGE:
说明:自定义消息接收事件
监听回调返回的数据:
{
"EVENT" : "CUSTOMER_MESSAGE",
"id":"30764b70-33cb-11ed-b2d4-85c1d25442a0",
"roomId" : 100781,
"image":"http://livestatic.videocc.net/assets/wimages/pc_images/logo.png",
"content" : "这是一条自定义消息" ,
"user" : {}
}
| 参数名 | 说明 |
|---|---|
| roomId | 房间号 |
| image | 消息图片(根据发送的消息是否有图片决定) |
| content | 消息内容 |
答题卡
说明:答题卡包含”快速问答“和”答题卡“两个功能
GET_TEST_QUESTION_CONTENT
说明:获取答题卡题目和选项内容
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questionId | string | 问题ID |
| itemType | string | 答题类型,1表示快速问答,0表示答题卡 |
| type | string | 题目类型,(快速问答无此类型题目) R表示单选 C表示多选 S表示评分 |
| answer | string | 题目答案,多个答案则直接拼接,如选A和B,则返回AB |
| option1 | string | 选择项1,选项最少2个,最多5个。注:当使用”导入题库“导入题目时,会多出5个选项(option6~option10),值都为null |
| option2 | string | 选择项2 |
| option3 | string | 选择项3 |
| option4 | string | 选择项4 |
| option5 | string | 选择项5 |
| title | string | 题目标题 |
| hash | string | 校验码 |
| ts | string | 时间戳 |
| tips1 | string | 提示语1,提示语只有在题目类型为评分时才有 |
| tips2 | string | 提示语2 |
| tips3 | string | 提示语3 |
| tips4 | string | 提示语4 |
| tips5 | string | 提示语5 |
GET_TEST_QUESTION_RESULT
说明:获取答题卡答题结果
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questionId | string | 问题ID |
| result | object | 答题结果 |
| content | object | 题目详情 |
答题结果属性说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| singleResult | array | 各个选项被选次数 |
| total | number | 回答总人数 |
| answer | string | 答案 |
| rightUser | array | 答对学员 |
| faultUser | array | 答错学员 |
| itemType | string | 答题类型,1表示快速问答,0表示答题卡 |
| type | string | 题目类型,(快速问答无此类型题目) R表示单选 C表示多选 S表示评分 |
ANSWER_TEST_QUESTION
说明:发送答案
请求:
socket.emit('message', JSON.stringify({
EVENT: 'ANSWER_TEST_QUESTION',
roomId: channelId,
nick: nick,
userId: userId,
option: result,
questionId: questionId
}));
字段说明:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| EVENT | true | string | 事件名 |
| roomId | true | string | 房间号 |
| nick | true | string | 昵称 |
| userId | true | string | 学生ID |
| option | true | string | 选择的答案,多选时直接将多个答案拼接。如,选A和B,则option为AB |
| questionId | true | string | 问题ID |
咨询提问
S_QUESTION
说明:学生提问内容
响应:
{
EVENT: 'S_QUESTION',
roomId: roomId,
user: {
nick: nick,
pic: pic,
userId: userId,
userType: 'student'
},
content: value
}
字段说明:
| 参数名 | 说明 |
|---|---|
| EVENT | 事件名 |
| roomId | 房间号 |
| user | 用户信息 |
| content | 提问内容 |
用户信息说明:
| 参数名 | 说明 |
|---|---|
| nick | 昵称 |
| pic | 头像 |
| userId | 学员id |
| userType | 类型 |
T_ANSWER
说明:老师/管理员/助教回复提问
响应:
{
EVENT: 'T_ANSWER',
roomId: roomId,
user: {
nick: nick,
pic: pic,
userId: userId,
userType: 'teacher',
actor: actor
},
s_userId: s_userId
content: value
}
字段说明:
| 参数名 | 说明 |
|---|---|
| EVENT | 事件名 |
| roomId | 房间号 |
| user | 用户信息 |
| s_userId | 被回复学员的id |
| content | 回复内容 |
用户信息说明:
| 参数名 | 说明 |
|---|---|
| nick | 昵称 |
| pic | 头像 |
| userId | 讲师/助教/管理员id |
| userType | 类型:teacher/assistant/manager |
| actor | 头衔 |
问卷
START_QUESTIONNAIRE
说明:开始问卷调查
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questionnaireId | string | 问卷ID |
| content | object | 问卷内容 |
问卷内容说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questionnaireId | string | 问卷ID |
| questionnaireTitle | string | 问卷标题 |
| createdTime | number | 问卷创建时间,13位毫秒级时间戳 |
| status | string | 问卷状态,saved:保存,published:已发布,forbidden:禁止 |
| questions | array | 问题信息,为一个对象数组 |
问题信息说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questionId | string | 题目ID |
| name | string | 题目标题 |
| type | string | 题目类型,R:单选,C:多选,Q:问答,X 评星题(五星),S:评分题(10分),J:判断题 |
| answer | string | 题目答案 |
| required | string | 是否必填,Y:是,N:否 |
| scoreEnabled | string | 是否为得分题,Y:是,N:否 |
| score | number | 分数 |
| option1 | string | 题目选项 |
| option2 | string | 题目选项 |
| option3 | string | 题目选项 |
| option4 | string | 题目选项 |
| option5 | string | 题目选项 |
| option6 | string | 题目选项 |
| option7 | string | 题目选项 |
| option8 | string | 题目选项 |
| option9 | string | 题目选项 |
| option10 | string | 题目选项 |
ANSWER_QUESTIONNAIRE
说明:学生提交问卷答案
请求:
socket.emit('message', JSON.stringify({
EVENT: 'ANSWER_QUESTIONNAIRE',
roomId: roomId,
nick: nick,
userId: userId,
questionnaireId: questionnaireId,
answer: [
{
questionId: 'f8bbo3rhrq',
answer: 'A'
},
{
questionId: 'f8bbo3rhlw',
answer: "BC"
},
{
questionId: 'f8bbo3rhht',
answer: 'polyv'
}
]
}));
字段说明:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| EVENT | true | string | 事件名 |
| roomId | true | string | 房间ID |
| nick | true | string | 学生昵称 |
| userId | true | string | 学生对应的userId |
| questionId | true | string | 题目ID |
| answer | true | array | 学生的答案,为一个对象数组 |
答案字段说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questionId | string | 题目ID |
| answer | string | 答案,如果为选择题,则为ABCD,如果为问答题,为学生填写输入框的内容 |
补充:更多题目类型-答案格式请请参考
STOP_QUESTIONNAIRE
说明:老师停止问卷
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| questionnaireId | string | 问卷ID |
QUESTIONNAIRE_ACHIEVEMENT
说明:讲师点击发送问卷结果按钮,如果学员有回答问卷,则该学员在观看端会收到问卷排名结果事件。
响应:
| 名称 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 值为QUESTIONNAIRE_ACHIEVEMENT |
| roomId | string | 房间号 |
| totalScore | number | 该学员回答该问卷的总分数 |
| userId | string | 该学员的userId |
| timestamp | number | 该学员提交问卷答案时的时间戳 |
| questionnaireId | string | 问卷id |
| ranking | number | 该学员在本次问卷中分数的排名,从1开始计 |
自定义消息
说明:客户可以根据自己的业务需求,自己定义想要的消息去广播。
请求
socket.emit('customMessage', JSON.stringify({
EVENT: 'myMessage',
version: '1.0',
emitMode: 1,
roomId: roomId,
data: {
company: 'polyv'
},
tip: '我的自定义消息',
}));
字段说明:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| EVENT | true | string | 自定义消息类型,事件字符长度不大于20 |
| version | true | number | 自定义消息版本 |
| emitMode | false | number | 是否广播给自己,0:表示广播所有人包括自己,1:表示广播给所有人除了自己,2:表示只发送给自己 |
| roomId | true | number | 对应的频道号 |
| data | true | object | 自定义消息内容,由客户定义 |
| tip | true | string | 提示语 |
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 自定义消息类型,事件字符长度不大于20 |
| version | number | 自定义消息版本 |
| emitMode | number | 是否广播给自己,0:表示广播所有人包括自己,1:表示广播给所有人除了自己,2:表示只发送给自己 |
| roomId | number | 对应的频道号 |
| id | string | 消息id |
| user | object | 用户信息 |
| time | number | 时间戳 |
| data | object | 自定义消息内容,由客户定义 |
| tip | string | 提示语 |
签到
SIGN_IN
说明:发起签到
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 值为SIGN_IN |
| roomId | string | 频道号 |
| data | object | 包含四个属性:message:签到文案;limitTime:签到时间(单位秒);sessionId:直播场次ID;checkinId:签到场次ID |
STOP_SIGN_IN
说明:结束签到
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 值为STOP_SIGN_IN |
| roomId | string | 频道号 |
TO_SIGN_IN
说明:学员签到
响应:
| 名称 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 值为TO_SIGN_IN |
| roomId | string | 频道号 |
| checkinId | string | 签到场次ID |
| user | object | 签到学员信息,包含两个属性:nick:学员昵称,userId:学员ID |
抽奖
说明:抽奖是通过http接口发起的,以下消息是服务器广播给页面的
LotteryStart
说明:开始抽奖
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 值为LotteryStart |
| channelId | string | 频道号 |
| sessionId | string | 当前直播场次ID |
| lotteryId | string | 当前抽奖场次id |
LotteryEnd
说明:结束抽奖
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 值为LotteryEnd |
| channelId | string | 频道号 |
| sessionId | string | 当前直播场次ID |
| lotteryId | string | 当前抽奖场次id |
| prize | string | 礼物名称 |
| data | array | 中奖人员,包含中奖人员基本信息以及中奖码winnerCode。若没中奖为空数组 |
示例:
{
"EVENT":"LotteryEnd",
"channelId":"",
"sessionId":"fajrsh0uqj",
"lotteryId":"fapcpw06l2",
"prize":"耳机",
"data":[
{
"banned":false,
"channelId":"",
"clientIp":"",
"nick":"广州观众/97375",
"pic":"//livestatic.videocc.net/v_268/assets/wimages/missing_face.png",
"roomId":"",
"uid":"lbcCDoikWTniMk1pAMkI",
"userId":"1553597220784",
"userType":"student",
"winnerCode":"xXYMNZJR"
}
]
}
其他
提交中奖者信息需要调用http接口,详见抽奖-提交中奖者信息
打赏
注:打赏需通过http接口触发,详见打赏-发送打赏消息
REWARD
说明:打赏
响应:
| 参数名 | 类型 | 说明 |
|---|---|---|
| EVENT | string | 值为REWARD |
| roomId | string | 房间号 |
| content | object | 打赏内容 |
打赏内容说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| unick | string | 打赏者昵称 |
| uimg | string | 打赏者头像 |
| rewardContent | string | 打赏内容:礼物打赏为礼物名称,现金打赏为金额 |
| gimg | string | 礼物打赏为礼物图片,现金打赏为空 |
签名生成规则
md5(key+roomId)
key的取值请咨询客服
