保利威文档中心

幫助中心

答題卡

更新時間:2024-04-22 19:18:32

功能概述

本模組主要用於接收和處理講師、助教和管理員等使用者發起的答題卡,方便接入方實現題目處理展示、觀眾答題和結果顯示等功能。

答題卡分為普通答題和快速問答。

  • 快速問答只有單選/多選答題形式。
  • 普通答題功能較為齊全,包含單選、多選、評分和投票題目,還可以使用答題限時功能,答題者需在限定時間內進行答題。

初始化及銷毀

在實例化該模組並進行使用之前,需要對 SDK 進行初始化配置,詳細請見參考文件

線上檔案引入方式

// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk/0.24.0/lib/polyv-ir.umd.js"></script>

<script>
    const { AnswerCard } = window.PolyvIRSDK;
</script>

import 方式引入(推薦)

import { AnswerCard } from '@polyv/interactions-receive-sdk';

const answerCardSdk = new AnswerCard();
// ...
// 销毁 SDK 实例,清除逻辑
answerCardSdk.destroy();

使用流程

監聽「答題開始」事件

當講師/助教等發起端發起一次答題卡時,會觸發 SDK 的 answerCardSdk.events.GET_TEST_QUESTION_CONTENT 事件,該事件含有答題卡相關資訊,包括答題卡類型、題目、選項及是否限時題目等,可以將對應資訊展示給使用者用於作答。

answerCardSdk.on(answerCardSdk.events.GET_TEST_QUESTION_CONTENT, function(msg) {
  console.log('接收到答题开始事件', msg,'题目:', msg.name, '题目限时:', msg.duration);
});

展示答題卡題目時,可以根據答題卡類型和題目類型做不同的展示:

  • answerCardSdk.questionItemTypes 下的屬性表示答題卡類型列表(快速問答、普通答題)。將其屬性值與 msg.itemType 的值進行比對,就可以知道當前是哪種答題卡。
  • answerCardSdk.questionTypes 下的屬性表示題目具體類型(單選、多選、評分或者投票類型)。將其屬性值與 msg.type 的值比對,就可以知道當前題目的具體類型。

例如:

function questionHandler(msg) {
  if (msg.itemType === answerCardSdk.questionItemTypes.QuickAnswerCard) {
    const questionType = {
      [answerCardSdk.questionTypes.CheckBox]: '多选题',
      [answerCardSdk.questionTypes.Radio]: '单选题',
    }[msg.type];
    console.log('本次答题卡为快速问答, 题目类型为: ' + questionType);
  } else if (msg.itemType === answerCardSdk.questionItemTypes.Normal) {
    const questionType = {
      [answerCardSdk.questionTypes.CheckBox]: '多选题',
      [answerCardSdk.questionTypes.Radio]: '单选题',
      [answerCardSdk.questionTypes.Score]: '评分题',
      [answerCardSdk.questionTypes.Vote]: '投票题',
    }[msg.type];
    console.log('本次答题卡为普通答题, 题目类型为: ' + questionType);
  }
}
answerCardSdk.on(answerCardSdk.events.GET_TEST_QUESTION_CONTENT, questionHandler);

對於限時題目,可以透過 answerCardSdk.getServerTime() 獲取伺服器端當前剩餘時間,在必要的時候進行同步。

const data = await answerCardSdk.getServerTime();
console.log('剩余时间', data.time);

提交使用者答案

如果當前正在答題,可使用 answerCardSdk.answerQuestion 將使用者答案提交給伺服器端。該方法是非同步方法,參數是使用者所選選項的字串陣列(大寫),根據回傳結果 code 欄位展示不同的提示資訊。code 的值所表示的狀態請見 API 文件中 answerCardSdk.answerQuestionResCode 的屬性。

const res = await answerCardSdk.answerQuestion(['A', 'B']);
if (res.code === answerCardSdk.answerQuestionResCode.SubmitSuccess) {
  console.log('提交成功');
}

監聽「答題結束」事件

發起端停止答題,或限時題目倒數計時結束時,answerCardSdk.events.STOP_TEST_QUESTION 會被觸發,此時需要將正在顯示的題目關閉、或者顯示截止答題等提示。

answerCardSdk.on(answerCardSdk.events.STOP_TEST_QUESTION, function(msg) {
  console.log('答题结束', msg);
});

監聽「答題結果」事件

在講師發送結果後,SDK 將觸發 answerCardSdk.events.GET_TEST_QUESTION_RESULT 事件,該事件含有題目內容、題目答案和選項人數等,可基於這些資訊,與使用者個人答案進行比對,展示使用者答題結果。

answerCardSdk.on(answerCardSdk.events.GET_TEST_QUESTION_RESULT, function(msg) {
  console.log('答题结果', msg);
});

可使用 answerCardSdk.curSubmittedAnswer(string 類型) 獲取使用者當前題目的個人已提交答案,與正確答案進行比對。

注意

如果不需要再使用答題卡 SDK 時,請呼叫 SDK 實例的 destroy 方法去銷毀實例。

联系客服,在线咨询