Questionnaire Service

1、查询频道问卷列表

描述

接口用于获取频道的问卷列表
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/questionnaire/list

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testGetQuestionnaireListInfo() throws Exception, NoSuchAlgorithmException {
        LiveQuestionnaireListRequest liveQuestionnaireListRequest = new LiveQuestionnaireListRequest();
        LiveQuestionnaireListResponse liveQuestionnaireListResponse = null;
        try {
            String channelId = super.createChannel();
            liveQuestionnaireListRequest.setChannelId(channelId);
            liveQuestionnaireListResponse = new LiveQuestionnaireServiceImpl().getQuestionnaireListInfo(
                    liveQuestionnaireListRequest);
            Assert.assertNotNull(liveQuestionnaireListResponse);
            if (liveQuestionnaireListResponse != null) {
                //to do something ......
                log.debug("测试查询频道问卷列表成功{}", JSON.toJSONString(liveQuestionnaireListResponse));
            }
        } 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、请求正确,返回LiveQuestionnaireListResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.LivexxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

channelId

true

String

频道号

startTime

false

Date

查询的记录的开始时间

endTime

false

Date

查询的记录的结束时间

currentPage

false

Integer

页数,默认为1【对应api文档的page字段】

pageSize

false

Integer

每页显示的数据条数,默认每页显示20条数据

返回对象描述

参数名类型说明

contents

Array

问卷数据列表【详见QuestionDetail参数描述

pageSize

Integer

每页显示的数据条数,默认每页显示20条数据

currentPage

Integer

当前页【对应api文档的pageNumber字段】

totalItems

Integer

记录总条数

totalPage

Integer

总页数【对应api文档的totalPages字段】

QuestionDetail参数描述

参数名类型说明

questionnaireId

String

问卷ID

channelId

String

频道号

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

questionnaireTitle

String

问卷标题【对应api文档的name字段】

status

String

问卷状态,取值:saved(已保存),published (已发布),forbidden (问卷已完成填写)

createdTime

Date

问卷创建时间

lastModified

Date

问卷最后修改时间

endTime

Date

停止提交问卷时间

customQuestionnaireId

String

用户自定义问卷ID


2、查询频道问卷详情

描述

1、接口用于查询频道问卷详情
2、问卷ID 可以从获取频道问卷列表中获取
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/questionnaire/detail

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testGetQuestionnaireDetailInfo() throws Exception, NoSuchAlgorithmException {
        LiveQuestionnaireDetailRequest liveQuestionnaireDetailRequest = new LiveQuestionnaireDetailRequest();
        LiveQuestionnaireDetailResponse liveQuestionnaireDetailResponse = null;
        try {
            String channelId = super.createChannel();
            //获取详情
            liveQuestionnaireDetailRequest.setChannelId(channelId).setQuestionnaireId("fs9skpv22f");
            liveQuestionnaireDetailResponse = new LiveQuestionnaireServiceImpl().getQuestionnaireDetailInfo(
                    liveQuestionnaireDetailRequest);
            Assert.assertNotNull(liveQuestionnaireDetailResponse);
            if (liveQuestionnaireDetailResponse != null) {
                //to do something ......
                log.debug("测试查询频道问卷详情成功{}", JSON.toJSONString(liveQuestionnaireDetailResponse));
            }
        } 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、请求正确,返回LiveQuestionnaireDetailResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.LivexxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

channelId

true

String

频道号

questionnaireId

true

String

问卷id

返回对象描述

参数名类型说明

questionnaireId

String

问卷ID

customQuestionnaireId

String

用户自定义问卷ID

channelId

String

频道号

userId

String

POLYV用户ID,和保利威官网一致,获取路径:官网->登录->直播(开发设置)

questionnaireTitle

String

问卷标题【对应api文档的name字段】

status

String

问卷状态,draft:草稿,send:已发送,delete:已删除

createdTime

Date

问卷创建时间

endTime

Date

停止问卷时间

questions

Array

问卷问题列表【详见QuestionDetail参数描述

QuestionDetail参数描述

参数名类型说明

questionId

String

问题ID

name

String

问题题目

type

String

问题类型,取值:R 单选;C 多选;S 评星题;Q 问答

option1

String

选项A

option2

String

选项B

option3

String

选项C

option4

String

选项D

option5

String

选项E

option6

String

选项F

option7

String

选项G

option8

String

选项H

option9

String

选项I

option10

String

选项J

createdTime

Date

创建时间

lastModified

Date

最后修改时间

scoreEnabled

String

是否计分,取值: Y 计分 、N 不计分,默认N

score

Integer

题目分值

required

String

是否必答,取值Y 必填 、N 非必填 ,默认 N

answer

String

问题答案


3、查询频道问卷结果

描述

接口用于查询直播问卷的答题结果及统计
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/questionnaire/answer-records

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testGetQuestionnaireResultInfo() throws Exception, NoSuchAlgorithmException {
        LiveQuestionnaireResultRequest liveQuestionnaireResultRequest = new LiveQuestionnaireResultRequest();
        List<LiveQuestionnaireResultResponse> liveQuestionnaireResultResponse = null;
        try {
            String channelId = super.createChannel();
            liveQuestionnaireResultRequest.setChannelId(channelId);
            liveQuestionnaireResultRequest.setStartDate(getDate(2020, 10, 01)).setEndDate(getDate(2099, 12, 12));
//        liveQuestionnaireResultRequest.setQuestionnaireId("fs9skpv22f");
            liveQuestionnaireResultResponse = new LiveQuestionnaireServiceImpl().getQuestionnaireResultInfo(
                    liveQuestionnaireResultRequest);
            Assert.assertNotNull(liveQuestionnaireResultResponse);
            if (liveQuestionnaireResultResponse != null) {
                //to do something ......
                log.debug("测试查询频道问卷结果成功{}", JSON.toJSONString(liveQuestionnaireResultResponse));
            }
        } 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、请求正确,返回LiveQuestionnaireResultResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.LivexxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

channelId

true

String

频道号

startDate

false

Date

开始时间,格式:yyyy-MM-dd 如 2018-12-10

endDate

false

Date

结束时间,格式:yyyy-MM-dd 如 2018-12-10

questionnaireId

false

String

问卷ID,和 startDate / endDate 同时提交时,startDate / endDate 无效,优先以questionnaireId为查询条件

返回对象描述

返回对象是List<LiveQuestionnaireResultResponse>,LiveQuestionnaireResultResponse具体元素内容如下:

参数名类型说明

questionnaireId

String

问卷ID

customQuestionnaireId

String

用户自定义问卷ID

questionnaireTitle

String

问卷名称

lastModified

Date

问卷最后修改时间

endTime

Date

问卷最后修改时间

questionStats

Array

问卷下各个问题的答题统计【详见QuestionStats参数描述

users

Array

观看端提交答题的用户信息【详见Users参数描述

QuestionStats参数描述

参数名类型说明

total

Integer

题目的答题人数

questions

Array

问卷下单个问题的答题统计信息【详见QuestionStat参数描述

Users参数描述

参数名类型说明

viewerId

String

提交问卷的用户ID

nickname

String

提交问卷的用户昵称

submitTime

Date

提交问卷时间

totalScore

String

提交问卷的用户的总得分

answers

Array

用户每道题目的答题情况【详见Answers参数描述

param4

String

在外部授权、直接(独立)授权情况下传过来的自定义参数,同步回传

param5

String

在外部授权、直接(独立)授权情况下传过来的自定义参数,同步回传

QuestionStat参数描述

参数名类型说明

questionId

String

题目ID,

questionName

String

题目名称

score

Integer

题目分数

totalScore

Integer

题目的总得分

correctCount

Integer

题目的答对人数

a

Integer

选择项a的答题人数

b

Integer

选择项b的答题人数

c

Integer

选择项c的答题人数

d

Integer

选择项d的答题人数

e

Integer

选择项e的答题人数

f

Integer

选择项f的答题人数

g

Integer

选择项g的答题人数

h

Integer

选择项g的答题人数

i

Integer

选择项g的答题人数

j

Integer

选择项g的答题人数

Answers参数描述

参数名类型说明

questionId

String

题目ID

questionName

String

题目名称

answer

String

提交的题目答案

score

Integer

用户答题的得分

type

String

题目的类型 R:单选题 C:多项题 Q:问答题


4、分页查询问卷结果

描述

分页查询直播问卷的答题结果及统计
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/questionnaire/list-answer-records

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testGetQuestionnaireResultPageInfo() throws Exception, NoSuchAlgorithmException {
        LiveQuestionnaireResultPageRequest liveQuestionnaireResultPageRequest =
                new LiveQuestionnaireResultPageRequest();
        LiveQuestionnaireResultPageResponse liveQuestionnaireResultPageResponse = null;
        try {
            String channelId = super.createChannel();
            liveQuestionnaireResultPageRequest.setChannelId(channelId)
                    .setStartDate(getDate(2020, 10, 01))
                    .setEndDate(getDate(2099, 12, 12))
                    .setPageSize(20)
                    .setCurrentPage(1);
            liveQuestionnaireResultPageResponse = new LiveQuestionnaireServiceImpl().getQuestionnaireResultPageInfo(
                    liveQuestionnaireResultPageRequest);
            Assert.assertNotNull(liveQuestionnaireResultPageRequest);
            if (liveQuestionnaireResultPageResponse != null) {
                //to do something ......
                log.debug("测试分页查询频道问卷结果成功{}", JSON.toJSONString(liveQuestionnaireResultPageResponse));
            }
        } 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、请求正确,返回LiveQuestionnaireResultPageResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.LivexxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

channelId

true

String

频道号

startDate

false

Date

开始时间,格式:yyyy-MM-dd 如 2018-12-10

endDate

false

Date

结束时间,格式:yyyy-MM-dd 如 2018-12-10

currentPage

false

Integer

页数,默认为1【对应api文档的page字段】

pageSize

false

Integer

每页显示的数据条数,默认每页显示20条数据

返回对象描述

参数名类型说明

contents

Array

频道的问卷信息和统计结果列表【详见LiveQuestionnaireResultResponse参数描述

pageSize

Integer

每页显示的数据条数,默认每页显示20条数据

currentPage

Integer

当前页【对应api文档的pageNumber字段】

totalItems

Integer

记录总条数

totalPage

Integer

总页数【对应api文档的totalPages字段】

LiveQuestionnaireResultResponse参数描述

参数名类型说明

questionnaireId

String

问卷ID

customQuestionnaireId

String

用户自定义问卷ID

questionnaireTitle

String

问卷名称

lastModified

Date

问卷最后修改时间

endTime

Date

问卷最后修改时间

questionStats

Array

问卷下各个问题的答题统计【详见QuestionStats参数描述

users

Array

观看端提交答题的用户信息【详见Users参数描述

QuestionStats参数描述

参数名类型说明

total

Integer

题目的答题人数

questions

Array

问卷下单个问题的答题统计信息【详见QuestionStat参数描述

Users参数描述

参数名类型说明

viewerId

String

提交问卷的用户ID

nickname

String

提交问卷的用户昵称

submitTime

Date

提交问卷时间

totalScore

String

提交问卷的用户的总得分

answers

Array

用户每道题目的答题情况【详见Answers参数描述

param4

String

在外部授权、直接(独立)授权情况下传过来的自定义参数,同步回传

param5

String

在外部授权、直接(独立)授权情况下传过来的自定义参数,同步回传

QuestionStat参数描述

参数名类型说明

questionId

String

题目ID,

questionName

String

题目名称

score

Integer

题目分数

totalScore

Integer

题目的总得分

correctCount

Integer

题目的答对人数

a

Integer

选择项a的答题人数

b

Integer

选择项b的答题人数

c

Integer

选择项c的答题人数

d

Integer

选择项d的答题人数

e

Integer

选择项e的答题人数

f

Integer

选择项f的答题人数

g

Integer

选择项g的答题人数

h

Integer

选择项g的答题人数

i

Integer

选择项g的答题人数

j

Integer

选择项g的答题人数

Answers参数描述

参数名类型说明

questionId

String

题目ID

questionName

String

题目名称

answer

String

提交的题目答案

score

Integer

用户答题的得分

type

String

题目的类型 R:单选题 C:多项题 Q:问答题


5、设置频道问卷信息

描述

接口用于编辑或添加问卷信息,为全量增加或修改
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/questionnaire/add-edit-questionnaire

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testSetQuestionnaireDetailInfo() throws Exception, NoSuchAlgorithmException {
        LiveQuestionnaireDetailSetRequest liveQuestionnaireDetailSetRequest = new LiveQuestionnaireDetailSetRequest();
        LiveQuestionnaireDetailSetResponse liveQuestionnaireDetailSetResponse = null;
        try {
            String channelId = super.createChannel();
            //封装问卷请求对象
            liveQuestionnaireDetailSetRequest.setChannelId(channelId)
                    .setCustomQuestionnaireId(LiveSignUtil.generateUUID())
//                .setQuestionnaireId("fs9skpv22f")
                    .setQuestionnaireTitle("测试试卷,爱好问卷调查");
            //封装问卷题目
            LiveQuestionnaireDetailSetRequest.QuestionDetail questionDetail =
                    new LiveQuestionnaireDetailSetRequest.QuestionDetail();
            questionDetail.setQuestionId(LiveSignUtil.generateUUID())
                    .setName("您的兴趣爱好?")
                    .setAnswer("A")
                    .setScoreEnabled(LiveConstant.Flag.YES.getFlag())
                    .setRequired(LiveConstant.Flag.YES.getFlag())
                    .setOptions(Arrays.asList(new String[]{"篮球", "足球", "排球", "跑步", "羽毛球"}))
                    .setScore(20)
                    .setType(LiveConstant.QuestionType.CHECK.getType());
            LiveQuestionnaireDetailSetRequest.QuestionDetail questionDetail1 =
                    new LiveQuestionnaireDetailSetRequest.QuestionDetail();
            questionDetail1.setQuestionId(LiveSignUtil.generateUUID())
                    .setName("您的性别")
                    .setScoreEnabled(LiveConstant.Flag.NO.getFlag())
                    .setRequired(LiveConstant.Flag.YES.getFlag())
                    .setOptions(Arrays.asList(new String[]{"M", "W"}))
                    .setType(LiveConstant.QuestionType.RADIO.getType());
            LiveQuestionnaireDetailSetRequest.QuestionDetail questionDetail2 =
                    new LiveQuestionnaireDetailSetRequest.QuestionDetail();
            questionDetail2.setQuestionId(LiveSignUtil.generateUUID())
                    .setName("您的职务?")
                    .setScoreEnabled(LiveConstant.Flag.NO.getFlag())
                    .setRequired(LiveConstant.Flag.YES.getFlag())
                    .setType(LiveConstant.QuestionType.QUESTION.getType());
            //将问卷题目和问卷关联
            liveQuestionnaireDetailSetRequest.setQuestions(Arrays.asList(
                    new LiveQuestionnaireDetailSetRequest.QuestionDetail[]{questionDetail, questionDetail1,
                            questionDetail2}));
            //发送请求
            liveQuestionnaireDetailSetResponse = new LiveQuestionnaireServiceImpl().setQuestionnaireDetailInfo(
                    liveQuestionnaireDetailSetRequest);
            //判断结果
            Assert.assertNotNull(liveQuestionnaireDetailSetResponse);
            if (liveQuestionnaireDetailSetResponse != null) {
                //to do something ......
                log.debug("测试添加频道问卷成功{}", JSON.toJSONString(liveQuestionnaireDetailSetResponse));
            }
        } 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、请求正确,返回LiveQuestionnaireDetailSetResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.LivexxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

channelId

true

String

频道号

questionnaireId

false

String

问卷id,新增问卷该字段为null,修改问卷该字段问卷id

customQuestionnaireId

false

String

客户自定义问卷id,用于关联自己系统的主键id

questionnaireTitle

true

String

问卷标题

questions

true

Array

问卷的单个题目详情列表【详见QuestionDetail参数描述

QuestionDetail参数描述

参数名必选类型说明

questionId

false

String

题目id,新增时为null,修改问卷必须传

score

false

Integer

题目分值,自动化打分使用

name

true

String

题目信息描述

type

true

String

题目类型,R为单选,C为多选,Q为问答

scoreEnabled

false

String

题目是否需要评分,Y为需要,N为不需要,默认为N

answer

false

String

选择题答案,需要评分的选择题才有答案,填入对应选项序号,如:A或AB

required

false

String

题目是否为必答,Y为必答,N为非必答,默认为N

options

false

Array

题目为单选题或多选题的选项数据列表,选项数组下标0-9对应答案A-J

返回对象描述

参数名类型说明

questionnaireId

String

问卷id

questionIds

Array

同一个问卷下题目的问题id数组

questionnaireTitle

String

问卷标题


6、手动结束问卷

描述

结束问卷,当前频道没有问卷发布返回true
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/questionnaire/end

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testUpdatePlayDomain() throws IOException, NoSuchAlgorithmException {
        LiveQuestionnaireEndRequest liveQuestionnaireEndRequest = new LiveQuestionnaireEndRequest();
        Boolean liveQuestionnaireEndResponse = null;
        try {
            liveQuestionnaireEndRequest.setChannelIds(createChannel());
            liveQuestionnaireEndResponse = new LiveQuestionnaireServiceImpl().questionnaireStop(
                    liveQuestionnaireEndRequest);
            Assert.assertTrue(liveQuestionnaireEndResponse);
            if (liveQuestionnaireEndResponse) {
                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.LivexxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

channelIds

true

String

频道号,多个频道用英文逗号分隔,如:100000,100001

返回对象描述

true:手动结束问卷成功,false:手动结束问卷失败

Last updated