保利威文档中心

幫助中心

videoQuestionAndAnswer

更新時間:2026-01-20 18:13:40

1、新增或修改影片問答

描述

通过问答id新增或修改视频问答题目
接口地址(仅做说明使用):https://api.polyv.net/v2/video/save-video-exam

呼叫限制

1、API 呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看

單元測試

    @Test
    public void testCreateOrUpdateVideoExam() throws IOException, NoSuchAlgorithmException {
        VodCreateOrUpdateVideoExamRequest vodCreateOrUpdateVideoExamRequest = new VodCreateOrUpdateVideoExamRequest();
        VodCreateOrUpdateVideoExamResponse vodCreateOrUpdateVideoExamResponse = null;
        try {
            List<VodCreateOrUpdateVideoExamRequest.Choices> choices = Arrays.asList(
                    new VodCreateOrUpdateVideoExamRequest.Choices(0, "萝卜", Boolean.TRUE),
                    new VodCreateOrUpdateVideoExamRequest.Choices(1, "青菜", Boolean.FALSE));
            vodCreateOrUpdateVideoExamRequest.setExamId("17982289508")
                    .setVideoId("1b448be3234406608b7838c7ef6b597c_1")
                    .setShowTime(2)
                    .setQuestion("喜欢萝卜还是青菜")
                    .setChoices(choices)
                    .setCanSkip(Boolean.FALSE)
                    .setExplanationIfRight("回答正确后的解答详情")
                    .setShowExplanationIfWrong(Boolean.TRUE)
                    .setExplanationIfWrong("回答错误后的解答详情")
                    .setBackTime(-1);
            vodCreateOrUpdateVideoExamResponse = new VodInfoServiceImpl().createOrUpdateVideoExam(
                    vodCreateOrUpdateVideoExamRequest);
            Assert.assertNotNull(vodCreateOrUpdateVideoExamResponse);
            if (vodCreateOrUpdateVideoExamResponse != null) {
                log.debug("测试新增或修改视频问答成功,{}", JSON.toJSONString(vodCreateOrUpdateVideoExamResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

單元測試說明

1、請求正確,回傳 VodCreateOrUpdateVideoExamResponse 物件,B 端依據此物件處理業務邏輯;

2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 輸入參數 [xxx.chat.VodxxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]

3、伺服器處理異常,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因: invalid signature. ]

請求參數說明

參數名 必填 類型 說明
videoId true String 影片 ID【對應 API 文件的 vid 欄位】
examId false String 問答 ID,為空時會新增一個題目。不為空時會修改已有的問答題目
showTime true Integer 問答出現的時間,單位:秒
question true String 問答題目描述
choices true Array 問答選項 JSON 陣列,每個題目最多 5 個選項。【詳見Choices 參數說明
canSkip false Boolean 是否可跳過,預設值:false
explanationIfRight false String 回答正確後的解答詳情
showExplanationIfWrong false Boolean 回答錯誤後是否顯示解答詳情,true:顯示;false:不顯示;預設為 true 顯示
explanationIfWrong false String 回答錯誤後的解答詳情
backTime false Integer 答錯後回退到第幾秒,-1 代表不回退,預設為 -1
Choices 參數說明
參數名 類型 說明
index Integer 選項序號,題目實際順序為按此值的大小排序,請勿重複
content String 選項內容
isRight Boolean 所有選項中必須至少有一個設定為正確答案,否則 API 回傳錯誤。

回傳物件說明

參數名 類型 說明
examId String 問答 ID






2、查詢單個影片的問答題目

描述

通过视频id查询单个视频的问答题目
接口地址(仅做说明使用):https://api.polyv.net/v2/video/get-video-exam

呼叫限制

1、API 呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看

單元測試

    @Test
    public void testGetVideoExam() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoExamRequest vodQueryVideoExamRequest = new VodQueryVideoExamRequest();
        VodQueryVideoExamResponse vodQueryVideoExamResponse = null;
        try {
            vodQueryVideoExamRequest.setVideoId("1b448be3234406608b7838c7ef6b597c_1");
            vodQueryVideoExamResponse = new VodInfoServiceImpl().queryVideoExam(vodQueryVideoExamRequest);
            Assert.assertNotNull(vodQueryVideoExamResponse);
            log.debug("测试查询单个视频的问答题目成功,{}", JSON.toJSONString(vodQueryVideoExamResponse));
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

單元測試說明

1、請求正確,回傳 VodQueryVideoExamResponse 物件,B 端依據此物件處理業務邏輯;

2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 輸入參數 [xxx.chat.VodxxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]

3、伺服器處理異常,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因: invalid signature. ]

請求參數說明

參數名 必填 類型 說明
videoId true String 影片 ID【對應 API 文件的 vid 欄位】

回傳物件說明

參數名 類型 說明
exams Array 問答列表【詳見Exam 參數說明
Exam 參數說明
參數名 類型 說明
videoId String 影片 ID【對應 API 文件的 vid 欄位】
examId String 問答 ID
showTime Integer 問答出現的時間,單位:秒
question String 問答題目描述
choices String 問答選項 JSON 陣列,每個題目最多 5 個選項
canSkip Boolean 是否可跳過,預設值:false
explanationIfRight String 回答正確後的解答詳情
showExplanationIfWrong Boolean 回答錯誤後是否顯示解答詳情
explanationIfWrong String 回答錯誤後的解答詳情
backTime Integer 答錯後回退到第幾秒,-1 代表不回退,預設為 -1
status Integer 是否有效,1:有效,0:無效,預設為 1
type Integer 題目類型,0:選擇題,1:聽力題(聽力題即將下線)
mp3url String 聽力題的 mp3 音頻檔案 url(聽力題即將下線)
illustration String 問答圖片 url
createdTime Date 建立問答題目的時間






3、分頁查詢影片的問答題目

描述

分页查询视频的问答题目,可按视频id筛选
接口地址(仅做说明使用):https://api.polyv.net/v2/video/list-video-exam

呼叫限制

1、API 呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看

單元測試

    @Test
    public void testListVideoExam() throws IOException, NoSuchAlgorithmException {
        VodListVideoExamRequest request = new VodListVideoExamRequest();
        VodListVideoExamResponse response = null;
        try {
            request.setCurrentPage(1).setPageSize(20);
            response = new VodInfoServiceImpl().listVideoExam(request);
            Assert.assertNotNull(response);
            log.debug("测试分页查询视频的问答题目成功,{}", JSON.toJSONString(response));
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

單元測試說明

1、請求正確,回傳 VodListVideoExamResponse 物件,B 端依據此物件處理業務邏輯;

2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 輸入參數 [xxx.chat.VodxxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]

3、伺服器處理異常,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因: invalid signature. ]

請求參數說明

參數名 必填 類型 說明
videoId false String 影片 ID【對應 API 文件的 vid 欄位】,為空則查詢帳號下所有問答題目
currentPage false Integer 頁數,預設為 1【對應 API 文件的 page 欄位】
pageSize false Integer 每頁顯示的資料筆數,預設每頁顯示 20 筆資料,最大 1000

回傳物件說明

參數名 類型 說明
contents Array 問答題目列表【詳見Exam 參數說明
pageSize Integer 每頁顯示的資料筆數,預設每頁顯示 20 筆資料
currentPage Integer 目前頁【對應 API 文件的 pageNumber 欄位】
totalItems Integer 記錄總筆數
totalPage Integer 總頁數【對應 API 文件的 totalPages 欄位】






4、批次查詢答題日誌

描述

通过视频id批量查询答题日志
接口地址(仅做说明使用):https://api.polyv.net/v2/video/%s/video-exam-log

呼叫限制

1、API 呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看

2、pageSize 固定為 20

單元測試

    @Test
    public void testGetVideoExamLog() throws IOException, NoSuchAlgorithmException {
        VodGetVideoExamLogRequest vodGetVideoExamLogRequest = new VodGetVideoExamLogRequest();
        VodGetVideoExamLogResponse vodGetVideoExamLogResponse = null;
        try {
            vodGetVideoExamLogRequest
                    //可通过 new VodQueryServiceImpl().queryVideoList()获取
                    .setVideoIds("1b448be3234406608b7838c7ef6b597c_1")
                    .setStart(super.getDate(2021, 2, 1))
                    .setEnd(super.getDate(2021, 3, 12));
            vodGetVideoExamLogResponse = new VodInfoServiceImpl().getVideoExamLog(vodGetVideoExamLogRequest);
            Assert.assertNotNull(vodGetVideoExamLogResponse);
            if (vodGetVideoExamLogResponse != null) {
                log.debug("测试批量查询答题日志成功,{}", JSON.toJSONString(vodGetVideoExamLogResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

單元測試說明

1、請求正確,回傳 VodGetVideoExamLogResponse 物件,B 端依據此物件處理業務邏輯;

2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 輸入參數 [xxx.chat.VodxxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]

3、伺服器處理異常,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因: invalid signature. ]

請求參數說明

參數名 必填 類型 說明
videoIds false String 影片 ID 列表,多個影片 ID 之間以英文逗號分隔。如果該參數為空,則表示查詢帳號下全部影片的資料。【對應 API 文件的 vids 欄位】
start false Date 查詢的開始日期,格式:yyyy-MM-dd
end false Date 查詢的結束日期,格式:yyyy-MM-dd
currentPage false Integer 頁數,預設為 1【對應 API 文件的 page 欄位】
pageSize false Integer 每頁顯示的資料筆數,預設每頁顯示 20 筆資料

回傳物件說明

參數名 類型 說明
contents Array 答題日誌列表【詳見ExamLog 參數說明
pageSize Integer 每頁顯示的資料筆數,預設每頁顯示 20 筆資料
currentPage Integer 目前頁【對應 API 文件的 pageNumber 欄位】
totalItems Integer 記錄總筆數
totalPage Integer 總頁數【對應 API 文件的 totalPages 欄位】
ExamLog 參數說明
參數名 類型 說明
logId Integer 此條日誌的 ID【對應 API 文件的 logid 欄位】
examId String 日誌所屬的問答的 ID
userId String 觀眾 ID
videoId String 問答所屬的影片 ID【對應 API 文件的 videoPoolId 欄位】
question String 問答標題
answer String 觀眾回答的答案
isCorrect Integer 是否回答正確,1:回答正確;0:回答錯誤
playerId String 播放器 ID
ipAddress String IP 位址
province String 觀眾的省份
isp String 觀眾使用的 ISP 運營商
operatingSystem String 觀眾的作業系統
browser String 觀眾使用的瀏覽器
dateAdded Date 回答該問題的日期,格式:yyyy-MM-dd HH:mm:ss
viewerId String 自訂觀眾 id【對應 API 文件的 viewerid 欄位】
viewerInfo String 自訂觀眾資訊






5、刪除單個影片的問答題目

描述

通过视频id与问答id删除单个视频的问答题目
接口地址(仅做说明使用):https://api.polyv.net/v2/video/delete-video-exam

呼叫限制

1、API 呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看

單元測試

    @Test
    public void testRemoveVideoExam() throws IOException, NoSuchAlgorithmException {
        VodRemoveVideoExamRequest vodRemoveVideoExamRequest = new VodRemoveVideoExamRequest();
        Boolean vodRemoveVideoExamResponse = null;
        try {
            //准备测试数据
            String videoExamId = super.createVideoExam();
            vodRemoveVideoExamRequest
                    .setVideoId("1b448be3234406608b7838c7ef6b597c_1").setExamIds(videoExamId);
            vodRemoveVideoExamResponse = new VodEditServiceImpl().removeVideoExam(vodRemoveVideoExamRequest);
            Assert.assertTrue(vodRemoveVideoExamResponse);
            if (vodRemoveVideoExamResponse) {
                log.debug("测试删除单个视频的问答题目成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

單元測試說明

1、請求正確,回傳 Boolean 物件,B 端依據此物件處理業務邏輯;

2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 輸入參數 [xxx.chat.VodxxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]

3、伺服器處理異常,拋出 PloyvSdkException,錯誤訊息見 PloyvSdkException.getMessage(),如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因: invalid signature. ]

請求參數說明

參數名 必填 類型 說明
userId false String 使用者 ID【對應 API 文件的 userid 欄位】
videoId true String 影片 ID【對應 API 文件的 vid 欄位】
examIds false String 問答 ID,多個以英文逗號分隔,如果不傳則刪除影片的所有問答題目。例如 17982289509,17982289508

回傳物件說明

null

联系客服,在线咨询