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
}
