videoQuestionAndAnswer
1、新增或修改视频问答
描述
通过问答id新增或修改视频问答题目
接口地址(仅做说明使用):https://api.polyv.net/v2/video/save-video-exam
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@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 | 所有选项中必须至少有一个设置为正确答案,否则接口返回错误。 |
返回对象描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| examId | String | 问答ID |
2、查询单个视频的问答题目
描述
通过视频id查询单个视频的问答题目
接口地址(仅做说明使用):https://api.polyv.net/v2/video/get-video-exam
调用约束
1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@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、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@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、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
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、接口调用有频率限制,详细请查看,调用常见异常,详细请查看
单元测试
@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
