查询频道聊天记录

接口描述

1、通过频道号,查询一段时间内的聊天记录
2、接口支持https协议

接口URL

http://api.polyv.net/live/v3/channel/chat/get-history-page

在线API调用

请求方式

GET

接口约束

1、接口同时支持HTTP 、HTTPS ,建议使用HTTPS 确保接口安全,接口调用有频率限制,详细请查看

2、时间格式为yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss。如未提交具体时间,只提交了日期,开始时间默认为日期当天的 00:00:00,结束时间为日期当天的23:59:59

请求参数描述

参数名必选类型说明

appId

true

String

账号appId【详见获取密钥

timestamp

true

Long

当前13位毫秒级时间戳,3分钟内有效

sign

true

String

签名,为32位大写的MD5值,生成签名的appSecret密钥作为通信数据安全的关键信息,严禁保存在客户端直接使用,所有API都必须通过客户自己服务器中转调用POLYV服务器获取响应数据【详见签名生成规则

startDay

true

String

聊天记录的开始时间 格式为yyyy-MM-dd,例如:2021-03-01 或者格式为yyyy-MM-dd HH:mm:ss,例如:2021-03-01 16:30:12

endDay

true

String

聊天记录的结束时间,要求同上

channelId

true

String

频道号

page

false

Integer

获取第几页聊天记录,默认为1

pageSize

false

Integer

每页记录数,默认为1000,最大为1000,大于1000将不会返回contents数据

userType

false

String

用户类型,可以选择多个类型,用英文逗号隔开 slice:云课堂学员 teacher:讲师 guest:嘉宾 manager:管理员 assistant:助教 viewer:特邀观众 monitor:场监 attendee:研讨会参与者 student:普通直播观众

status

false

String

聊天记录审核状态,默认pass:已审核 pass:已审核 censor:审核中和删除

source

false

String

类型,不填默认公聊 extend:管理员私聊

roomId

false

String

如果有房间号,需要传入房间号,默认不传

hasTotal

false

String

是否返回当前查询总数,Y:是,N:否,默认为N 注:此参数可能会影响接口响应性能,若非强烈需求,建议不要传此参数,可以根据返回结果中的 contents 数组长度来判断是否还有下一页

示例

http://api.polyv.net/live/v3/channel/chat/get-history-page?startDay=2020-03-10&appId=frlr1z1zn3&endDay=2021-03-10&sign=FD60256504E55BC4986B1BF9D207A997&pageSize=20&page=1&userType=&source=&channelId=1965681&roomId=&timestamp=1635478961187&status=

响应参数描述

参数名类型说明

code

Integer

响应状态码,200为成功返回,非200为失败【详见全局错误说明

status

String

响应状态文本信息

message

String

响应描述信息,当code为400或者500的时候,辅助描述错误原因

data

Array

聊天信息数组 【详见data字段说明

data字段说明

参数名类型说明

pageSize

Integer

每页数据大小

pageNumber

Integer

当前的页数

totalItems

Integer

总的条数, 仅当hasTotal为Y时有值,否则一直为0。

totalPages

Integer

总页数,约束同上

contents

Array

查询的结果列表【详见Contents参数描述

contents字段说明

参数名类型说明

id

String

聊天消息id

accountId

String

账号id

clientIP

String

用户ip(为了数据安全性,该数据将不再返回)

content

String

聊天内容,当消息为图片类型时,content为json字符串,下面说明

event

String

事件,具体参考聊天室SDK

image

String

图片消息的图片地址

msgType

String

消息类型 redpaper:红包消息 chatImg:图片消息 custom:自定义消息(通过socket发送的自定义消息) reward:打赏消息 customerMessage:自定义消息(通过http接口发送的自定义消息) 为空:普通聊天消息

quote

String

引用

sessionId

String

场次号

roomId

String

房间号

channelId

String

频道号

time

Long

发送消息时的时间戳

userType

String

用户类型 slice:云课堂学员 teacher:讲师 guest:嘉宾 manager:管理员 assistant:助教 viewer:特邀观众 monitor:场监 attendee:研讨会参与者 student:普通直播观众

status

String

审核状态 pass:已审核 censor:审核中 delete:删除

sourceType

String

消息来源 public:群聊 extend:管理员私聊

user

Object

聊天信息数组 【详见user字段说明

content为json格式时说明

根据msgType区分消息类型

msgTyperedpaper时,表示红包:

参数名类型说明

content

String

红包名称

msgSource

String

消息类型

number

Number

红包数量

redCacheId

String

缓存的红包id

redpackId

String

红包id

totalAmount

String

红包总金额

type

String

红包类型,normal为普通红包,rain为红包雨,password口令红包,official_normal开播端-普通红包

msgTypereward时,表示打赏:

参数名类型说明

userId

String

用户ID

goodNum

Number

打赏礼物数量

unick

String

用户昵称

gimg

String

礼物图片地址

rewardContent

String

打赏内容

uimg

String

用户头像

rewardUser

Object

打赏者 【详见rewardUser字段说明

msgTypechatImg时,表示图片:

参数名类型说明

id

String

图片id

msgSource

String

消息类型

status

String

图片上传状态,upLoadingSuccess表示上传成功

uploadImgUrl

String

图片上传成功后的地址,多个地址用逗号隔开

size

Object

图片尺寸,width表示图片宽度,height表示图片高度

msgTypecustom时,表示自定义消息:

参数名类型说明

msgSource

String

消息类型

EVENT

String

自定义消息事件类型

version

String

自定义消息版本

emitMode

Number

自定义消息广播方式

tip

Number

自定义消息提示

data

Object

自定义消息体

user字段说明

参数名类型说明

actor

String

角色

banned

Boolean

是否禁言

channelId

String

频道号

clientIp

String

用户ip

nickname

String

观众昵称

pic

String

观众头像

roomId

String

房间号

sessionId

String

场次号

uid

String

socketId

userId

String

用户唯一标示

userSource

String

观众来源

userType

String

用户类型 slice:云课堂学员 teacher:讲师 guest:嘉宾 manager:管理员 assistant:助教 viewer:特邀观众 monitor:场监 attendee:研讨会参与者 student:普通直播观众

param4

String

用户自定义字段

param5

String

用户自定义字段

rewardUser字段说明

参数名类型说明

deviceType

String

设备类型

nick

String

观众昵称

uid

String

socketId

clientIp

String

用户ip

banned

Boolean

是否禁言

pic

String

用户头像

userType

String

用户类型 slice:云课堂学员 teacher:讲师 guest:嘉宾 manager:管理员 assistant:助教 viewer:特邀观众 monitor:场监 attendee:研讨会参与者 student:普通直播观众

customize

Number

是否为定制礼物 0:否 1:是

userId

String

用户id

channelId

String

频道号

roomId

String

房间号

scene

String

场景 alone:活动直播 ppt:三分屏 topclass:大班课

Java请求示例

快速接入基础代码请下载相关依赖源码, 点击下载源代码 ,下载后加入到自己的源码工程中即可。测试用例中的HttpUtil.java 和 LiveSignUtil.java 都包含在下载文件中。

强烈建议您使用直播Java SDK完成API的功能对接,直播Java SDK 对API调用逻辑、异常处理、数据签名、HTTP请求线程池进行了统一封装和优化。

    private static final Logger log = LoggerFactory.getLogger(ChatMessageTest.class);

    /**
     * 查询频道聊天记录
     * @throws IOException
     */
    @Test
    public void testGetMessageList() throws IOException, NoSuchAlgorithmException {
        //公共参数,填写自己的实际参数
        String appId = super.appId;
        String appSecret = super.appSecret;
        String timestamp = String.valueOf(System.currentTimeMillis());
        
        //业务参数
        String url = "http://api.polyv.net/live/v3/channel/chat/get-history-page";
        String startDay = "2020-03-10";
        String endDay = "2021-03-10";
        String channelId = "1965681";
        Integer page = 1;
        Integer pageSize = 20;
        String userType = "";
        String status = "";
        String source = "";
        String roomId = "";
        
        //http 调用逻辑
        Map<String,String> requestMap = new HashMap<>();
        requestMap.put("appId", appId);
        requestMap.put("timestamp",timestamp);
        requestMap.put("startDay",startDay);
        requestMap.put("endDay",endDay);
        requestMap.put("channelId",channelId);
        requestMap.put("page",page.toString());
        requestMap.put("pageSize",pageSize.toString());
        requestMap.put("userType",userType);
        requestMap.put("status",status);
        requestMap.put("source",source);
        requestMap.put("roomId",roomId);
        requestMap.put("sign", LiveSignUtil.getSign(requestMap, appSecret));
        String response = HttpUtil.get(url, requestMap);
        log.info("测试查询频道聊天记录接口返回值:{}",response);
    }

响应示例

系统全局错误说明详见全局错误说明

成功示例

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "pageNumber": 1,
        "pageSize": 20,
        "totalPages": 0,
        "totalItems": 0,
        "contents": [
            {
                "id": "874e2850-12bc-11eb-963f-578bb7bc5db5",
                "accountId": "",
                "clientIP": "",
                "content": "hello 大家好",
                "event": null,
                "image": "",
                "msgType": null,
                "quote": null,
                "sessionId": "fs9v9y4nxf",
                "roomId": "1965681",
                "channelId": 1965681,
                "time": 1603188649810,
                "userType": "",
                "status": "",
                "sourceType": "public",
                "user": {
                    "actor": null,
                    "banned": false,
                    "channelId": 1965681,
                    "clientIp": "",
                    "nickname": "thomas",
                    "pic": "http://s1.videocc.net/default-img/avatar/teacher.png",
                    "roomId": "1965681",
                    "sessionId": null,
                    "uid": "",
                    "userId": "1965681_reboot_0",
                    "userSource": null,
                    "userType": ""
                }
            }
        ]
    }
}

异常示例

{
    "code": 400,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

Last updated