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,預設包含聊天分頁。
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 | 發言人 |
使用者說明
| 參數名 | 必填 | 類型 | 說明 |
|---|---|---|---|
| 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
說明:獲取答題卡題目和選項內容
好的,請提供您需要翻譯的簡體中文 Markdown 內容。
| 參數名 | 類型 | 說明 |
|---|---|---|
| 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
說明:獲取答題卡答題結果
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名 | 類型 | 說明 |
|---|---|---|
| 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
說明:傳送答案
好的,请提供您需要翻译的简体中文 Markdown 内容。
socket.emit('message', JSON.stringify({
EVENT: 'ANSWER_TEST_QUESTION',
roomId: channelId,
nick: nick,
userId: userId,
option: result,
questionId: questionId
}));
欄位說明:
| 參數名 | 必填 | 類型 | 說明 |
|---|---|---|---|
| EVENT | 是 | string | 事件名稱 |
| roomId | 是 | string | 房間號 |
| nick | 是 | string | 暱稱 |
| userId | 是 | string | 學生ID |
| option | 是 | string | 選擇的答案,多選時直接將多個答案拼接。例如,選A和B,則option為AB |
| questionId | 是 | string | 問題ID |
諮詢提問
S_QUESTION
說明:學生提問內容
好的,請提供您要翻譯的簡體中文 Markdown 內容。
{
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
說明:老師/管理員/助教回覆提問
好的,請提供您要翻譯的簡體中文 Markdown 內容。
{
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
說明:開始問卷調查
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名稱 | 類型 | 說明 |
|---|---|---|
| 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
說明:學生提交問卷答案
好的,请提供您需要翻译的简体中文 Markdown 内容。
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
說明:老師停止問卷
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名稱 | 類型 | 說明 |
|---|---|---|
| questionnaireId | string | 問卷ID |
QUESTIONNAIRE_ACHIEVEMENT
說明:講師點擊發送問卷結果按鈕,如果學員有回答問卷,則該學員在觀看端會收到問卷排名結果事件。
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 名稱 | 類型 | 說明 |
|---|---|---|
| EVENT | string | 值為QUESTIONNAIRE_ACHIEVEMENT |
| roomId | string | 房間號 |
| totalScore | number | 該學員回答該問卷的總分數 |
| userId | string | 該學員的userId |
| timestamp | number | 該學員提交問卷答案時的時間戳 |
| questionnaireId | string | 問卷id |
| ranking | number | 該學員在本次問卷中分數的排名,從1開始計 |
自訂訊息
說明:客戶可以根據自己的業務需求,自行定義想要廣播的消息。
好的,请提供您需要翻译的简体中文 Markdown 内容。
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 | 提示語 |
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名 | 類型 | 說明 |
|---|---|---|
| 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
說明:發起簽到
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名 | 類型 | 說明 |
|---|---|---|
| EVENT | string | 值為 SIGN_IN |
| roomId | string | 頻道號 |
| data | object | 包含四個屬性:message:簽到文案;limitTime:簽到時間(單位秒);sessionId:直播場次ID;checkinId:簽到場次ID |
STOP_SIGN_IN
說明:結束簽到
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名 | 類型 | 說明 |
|---|---|---|
| EVENT | string | 值為STOP_SIGN_IN |
| roomId | string | 頻道號 |
TO_SIGN_IN
說明:學員簽到
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 名稱 | 類型 | 說明 |
|---|---|---|
| EVENT | string | 值為 TO_SIGN_IN |
| roomId | string | 頻道號 |
| checkinId | string | 簽到場次 ID |
| user | object | 簽到學員資訊,包含兩個屬性:nick:學員暱稱,userId:學員 ID |
抽獎
說明:抽獎是透過 HTTP 介面發起的,以下訊息是伺服器廣播給頁面的
LotteryStart
說明:開始抽獎
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名 | 類型 | 說明 |
|---|---|---|
| EVENT | string | 值為LotteryStart |
| channelId | string | 頻道號 |
| sessionId | string | 當前直播場次ID |
| lotteryId | string | 當前抽獎場次id |
LotteryEnd
說明:結束抽獎
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名 | 型別 | 說明 |
|---|---|---|
| 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
說明:贊助
好的,請提供您要翻譯的簡體中文 Markdown 內容。
| 參數名 | 類型 | 說明 |
|---|---|---|
| EVENT | string | 值為REWARD |
| roomId | string | 房間號 |
| content | object | 打賞內容 |
打賞內容說明:
| 參數名 | 類型 | 說明 |
|---|---|---|
| unick | string | 打賞者暱稱 |
| uimg | string | 打賞者頭像 |
| rewardContent | string | 打賞內容:禮物打賞為禮物名稱,現金打賞為金額 |
| gimg | string | 禮物打賞為禮物圖片,現金打賞為空 |
簽名生成規則
md5(key+roomId)
key 的取值請諮詢客服
