功能概述
本模块用于接收处理讲师、助教和管理员等用户的问卷操作,可以监听"开始问卷调查"和"问卷结果"等事件,以及进行观众端的提交答案操作。
初始化及销毁
在实例化该模块并进行使用之前,需要对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方法去销毁实例。