Video Question And Answer

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);
            if (vodQueryVideoExamResponse != null) {
                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


3、批量查询答题日志

描述

通过视频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

true

String

对应视频的videoId,如果是多个视频,将每个videoId用英文逗号隔开【对应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字段】


4、删除单个视频的问答题目

描述

通过视频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

Last updated