videoQuestionAndAnswer
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
