問卷
更新時間:2024-04-22 19:18:32
功能概述
本模組用於接收處理講師、助教和管理員等用戶的問卷操作,可以監聽「開始問卷調查」和「問卷結果」等事件,以及進行觀眾端的提交答案操作。
初始化及銷毀
在實例化該模組並進行使用之前,需要對 SDK 進行初始化配置,詳細請見參考文件。
線上檔案引入方式
<script src="https://websdk.videocc.net/interactions-receive-sdk/0.24.0/lib/polyv-ir.umd.js"></script>
<script>
const { Questionnaire } = window.PolyvIRSDK;
</script>
import 方式引入(推薦)
import { Questionnaire } from '@polyv/interactions-receive-sdk';
const questionnaireSdk = new Questionnaire();
// 销毁 SDK 实例,清除逻辑
questionnaireSdk.destroy();
使用流程
監聽「開始問卷調查」事件
收到此事件時,表示講師端發起了一次問卷調查,訊息參數中包含問卷詳細內容,接入方可以使用其中的資料欄位,將完整的問卷展示給觀眾。
questionnaireSdk.on(questionnaireSdk.events.START_QUESTIONNAIRE, (msg) => {
console.log('收到问卷消息', msg);
});
提交用戶答案
觀眾作答後,把答案作為字串陣列傳入到 answerQuestion 方法中,就可以將答題提交到伺服器端。該方法是非同步方法,返回具體的處理結果狀態碼,有提交成功、問卷已結束和已提交過答案這幾種狀態。可以根據該狀態碼提示用戶該提交操作是否成功。透過 questionnaireSdk.answerQuestionResCode 能夠存取所有狀態的列舉。
/**
* 提交问卷
* @param answers 提交问卷答案, 字符串数组如:
[
{"questionId":"bab16ae6ce", "answer": "A"},
{"questionId":"4a9f9e3139", "answer": "AB"}
]
* @param questionnaireId 问卷Id
* @returns 状态码
*/
// 单选题答案格式 [{"questionId":"bab16ae6ce", "answer": "A"}]
// 多选题答案格式 [{"questionId":"4a9f9e3139", "answer": "AB"}]
// 判断题答案格式 [{"questionId":"4a9f9e3139", "answer": "A"}]
// 问答题答案格式 [{"questionId":"4a9f9e3139", "answer": "你好"}]
// 评星题(五星)答案格式 [{"questionId":"4a9f9e3139", "answer": "A"}] A 一颗星, B 两颗星, C 三颗星,D 四颗星, E 五颗星
// 评分题(10分)答案格式 [{"questionId":"4a9f9e3139", "answer": "A"}] A 一分, B 两分... 以此类推 J 10分
const res = await questionnaireSdk.answerQuestion(answers: string[], questionnaireId: string);{"questionId":"4a9f9e3139", "answer": "AB"}]);
if (res.code === questionnaireSdk.answerQuestionResCode.SubmitSuccess) {
console.log('提交成功');
}
監聽「結束問卷」事件
收到此事件時,問卷已經結束,觀眾不能再提交答案,需要將問卷隱藏。
questionnaireSdk.on(questionnaireSdk.events.STOP_QUESTIONNAIRE, (msg) => {
console.log('收到问卷结束消息', msg);
});
監聽「問卷結果」事件和「問卷統計」事件
如果當前問卷設定了得分題以及相應正確答案,而且有用戶提交了個人的答案,那麼當問卷結束後,講師可以使用「發送結果」功能,以便於觀眾查看問卷答案及個人回答情況。
觀眾端展示問卷回答情況,可以監聽這兩個事件—— SEND_QUESTIONNAIRE_RESULT 和 QUESTIONNAIRE_ACHIEVEMENT。
注意:這兩個事件的觸發順序是不確定的,若介面內容展示跟這兩個事件都有關,請務必確保收到並記錄到兩個事件的資料後再做後續處理。
- 問卷結果事件
本事件包含了問卷標題、題目列表及正確答案等詳細資訊,可以據此再次展示問卷。具體欄位請參考 typedoc
questionnaireSdk.on(questionnaireSdk.events.SEND_QUESTIONNAIRE_RESULT, (msg) => {
console.log('收到问卷结果事件:', msg);
});
- 問卷統計事件
本事件包含了當前觀眾在此次問卷的題目統計數據和個人回答情況,可以據此展示問卷具體回答情況。具體欄位請參考 typedoc。
questionnaireSdk.on(questionnaireSdk.events.QUESTIONNAIRE_ACHIEVEMENT, (msg) => {
console.log('收到问卷统计事件:', msg);
});
注意
如果不再需要使用問卷 SDK 時,請呼叫 SDK 實例的 destroy 方法去銷毀實例。
