group_create_viewer_name
更新时间:2025-09-26 17:36:06
1、分组添加观众支持传昵称
描述
1、分组添加观众支持传昵称
2、接口支持https协议
接口URL
http://api.polyv.net/live/v4/channel/lottery-viewer-list/create-viewer-name
请求方式
POST
调用约束
1、接口同时支持HTTP 、HTTPS ,建议使用HTTPS 确保接口安全,接口调用有频率限制,详细请查看 bzd
2、若参数不正确则会响应400异常
请求参数描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | true | String | 账号appId【详见获取密钥】 |
| timestamp | true | Long | 当前13位毫秒级时间戳,3分钟内有效 |
| sign | true | String | 签名,为32位大写的MD5值,生成签名的appSecret密钥作为通信数据安全的关键信息,严禁保存在客户端直接使用,所有API都必须通过客户自己服务器中转调用POLYV服务器获取响应数据【详见签名生成规则】 |
| channelId | true | String | 频道号 |
请求体参数描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| groupId | true | String | 分组id |
| viewerNames | true | Array | 观众条目数组【详见viewerNames参数描述】 |
viewerNames参数描述
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| viewerId | true | String | 观众 ID |
| viewerName | true | String | 观众昵称,允许中文、英文、空串(代表无昵称) |
请求体json参数:
{
"groupId": 1900,
"viewerNames": [
{
"viewerId": "19",
"viewerName": "中文"
},
{
"viewerId": "190",
"viewerName": "English"
},
{
"viewerId": "1900",
"viewerName": ""
}
]
}
示例
https://api.polyv.net/live/v4/channel/lottery-viewer-list/create-viewer-name?appId=hb5u8hrdz9&channelId=6560451×tamp=1758087275475&sign=7C409278FE170B563A3802D56734C61E
响应参数描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | Integer | 响应状态码状态码,与 http 状态码相同,用于确定基本的响应状态 |
| status | String | 响应结果,由业务决定,成功返回success,失败返回error |
| success | Boolean | 是否成功响应 |
| requestId | String | 请求ID,每次请求生成的唯一的 UUID,仅可用于排查、调试,不应该和业务挂上钩 |
| error | Object | 状态码非200时的错误信息【详见Error字段描述】 |
| data | Array | 响应详细信息【详见data字段说明】 |
Error响应描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | Integer | 错误代码,用于确定具体的错误原因 |
| desc | String | 错误描述,与 error.code 对应 |
data响应描述
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | Long | 记录自增 ID |
| groupId | Integer | 分组 ID |
| viewerId | String | 观众 ID |
| viewerName | String | 观众昵称 |
Java请求示例
快速接入基础代码请下载相关依赖源码, 点击下载源代码 ,下载后加入到自己的源码工程中即可。测试用例中的HttpUtil.java 和 LiveSignUtil.java 都包含在下载文件中。
强烈建议您使用直播Java SDK完成API的功能对接,直播Java SDK 对API调用逻辑、异常处理、数据签名、HTTP请求线程池进行了统一封装和优化。
private final Logger log = LoggerFactory.getLogger(getClass());
/**
* 分组批量添加观众昵称(create-viewer-name)
* @throws IOException
* @throws NoSuchAlgorithmException
*/
@Test
public void groupViewerNamesAdd() throws IOException, NoSuchAlgorithmException {
// 公共参数(请替换为你的实际值)
String appId = super.appId;
String appSecret = super.appSecret;
String timestamp = String.valueOf(System.currentTimeMillis());
// API 地址(使用 HTTPS)
String url = "https://api.polyv.net/live/v4/channel/lottery-viewer-list/create-viewer-name";
// 业务参数
int channelId = 5004544; // 频道号
int groupId = 1900; // 分组ID
// 待添加的观众
List<Map<String, String>> viewerNames = new ArrayList<>();
viewerNames.add(Map.of("viewerId", "19", "viewerName", "中文"));
viewerNames.add(Map.of("viewerId", "190", "viewerName", "English"));
viewerNames.add(Map.of("viewerId", "1900", "viewerName", "")); // 允许空昵称
// http 调用逻辑
Map<String, String> query = new HashMap<>();
query.put("appId", appId);
query.put("timestamp", timestamp);
query.put("channelId", String.valueOf(channelId)); // 注意:Map<String,String> 需转字符串
// 组装 JSON Body
Map<String, Object> body = new HashMap<>();
body.put("groupId", groupId);
body.put("viewerNames", viewerNames);
// 生成签名(大写 32 位 MD5)。通常仅包含公共参数;若签名包含 body 字段,请与服务端保持一致。
query.put("sign", LiveSignUtil.getSign(query, appSecret));
// 拼接带 query 的最终URL
url = HttpUtil.appendUrl(url, query);
// 发送 JSON(确保 Content-Type: application/json; charset=utf-8)
String response = HttpUtil.postJsonBody(url, JSON.toJSONString(body), null);
log.info("测试分组批量添加观众昵称,返回值:{}", response);
// do something...
}
响应示例
系统全局错误说明详见全局错误说明
成功示例
{
"code": 200,
"status": "success",
"requestId": "32d9c92e-99b4-4941-ab0b-661291d57115",
"data": [
{
"id": 653349,
"groupId": 1900,
"viewerId": "19",
"viewerName": "中文",
"createTime": 1758268299975
},
{
"id": 653350,
"groupId": 1900,
"viewerId": "190",
"viewerName": "English",
"createTime": 1758268299975
},
{
"id": 653351,
"groupId": 1900,
"viewerId": "1900",
"viewerName": "",
"createTime": 1758268299975
}
],
"success": true
}
异常示例
{
"code": 20000,
"status": "error",
"error": {
"code": 20000,
"desc": "appId is required."
},
"success": false
}
