deprecatedChannelOperate
1、建立並初始化頻道
描述
创建并初始化频道
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/basic/create
呼叫限制
1、介面呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看
2、在 AuthSetting 中,AuthType 無法直接設定白名單觀看,需先建立頻道後再設定觀看條件;範例
3、AuthSetting 中最多只能設定兩個觀看條件(即一個主要觀看條件,一個次要觀看條件),次要條件必須有主要條件才能生效。
4、AuthSetting 不能設定兩個 AuthType 一致的項目
單元測試
@Test
public void testCreateChannelInit() throws Exception, NoSuchAlgorithmException {
LiveChannelInitRequest liveChannelInitRequest = new LiveChannelInitRequest();
LiveChannelInitResponse liveChannelInitResponse = null;
try {
LiveChannelInitRequest.BasicSetting basicSetting = new LiveChannelInitRequest.BasicSetting().setName(
"创建并初始化频道-验证码观看")
.setChannelPasswd(getRandomString(6))
.setAutoPlay(1)
.setPlayerColor("#666666")
.setScene(LiveConstant.SceneType.ALONE.getDesc())
.setCategoryId(340019)
.setMaxViewer(0)
.setStartTime(null)
.setDesc("这是一个描述")
.setPublisher("sadboy主讲")
.setLinkMicLimit(-1)
.setPureRtcEnabled("N")
.setReceiveChannelIds(null)
.setSubAccount("test-dev@qq.com")
.setOnlyOneLiveEnabled("N");
liveChannelInitRequest.setBasicSetting(basicSetting);
//验证码观看
LiveChannelInitRequest.AuthSetting codeAuthSettings = new LiveChannelInitRequest.AuthSetting().setRank(1)
.setAuthType(LiveConstant.AuthType.CODE.getDesc())
.setEnabled("Y")
.setAuthCode("123456")
.setQcodeTips("提示文案")
.setQcodeImg("https://live.polyv.net/static/images/live-header-logo.png");
//收费观看
LiveChannelInitRequest.AuthSetting moneyAuthSettings = new LiveChannelInitRequest.AuthSetting().setRank(2)
.setAuthType(LiveConstant.AuthType.PAY.getDesc())
.setEnabled("Y")
.setPayAuthTips("付费观看")
.setPrice(0.01f)
.setQcodeTips("提示文案")
.setQcodeImg("https://live.polyv.net/static/images/live-header-logo.png");
List<LiveChannelInitRequest.AuthSetting> authSettings = new ArrayList<LiveChannelInitRequest.AuthSetting>();
authSettings.add(codeAuthSettings);
authSettings.add(moneyAuthSettings);
liveChannelInitRequest.setAuthSettings(authSettings);
//回放设置
LiveChannelInitRequest.PlaybackSetting playbackSetting = new LiveChannelInitRequest.PlaybackSetting();
playbackSetting.setGlobalSettingEnabled("N").setPlaybackEnabled("Y").setType("single").setOrigin("record");
liveChannelInitRequest.setPlaybackSetting(playbackSetting);
//设置讲师
LiveChannelInitRequest.Teacher teacher = new LiveChannelInitRequest.Teacher();
teacher.setActor("讲师").setNickname("王老师");
liveChannelInitRequest.setTeacher(teacher);
//设置角色
LiveChannelInitRequest.Roles assistantRole = new LiveChannelInitRequest.Roles();
assistantRole.setNickname("孙助教").setActor("助教").setPasswd(getRandomString(6)).setRole("Assistant");
LiveChannelInitRequest.Roles guestRole = new LiveChannelInitRequest.Roles();
guestRole.setNickname("赵嘉宾").setActor("嘉宾").setPasswd(getRandomString(6)).setRole("Guest");
List<LiveChannelInitRequest.Roles> roles = new ArrayList<>();
roles.add(assistantRole);
roles.add(guestRole);
liveChannelInitRequest.setRoles(roles);
liveChannelInitResponse = new LiveChannelOperateServiceImpl().createChannelInit(liveChannelInitRequest);
Assert.assertNotNull(liveChannelInitResponse);
if (liveChannelInitResponse != null) {
//to do something ......
log.debug("测试创建并初始化频道 验证码观看创建成功{}", JSON.toJSONString(liveChannelInitResponse));
//TODO 此处创建完成后删除了频道,正式使用需删除该语句
deleteChannel(liveChannelInitResponse.getChannelId());
}
} catch (PloyvSdkException e) {
//参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage(),B
log.error(e.getMessage(), e);
// 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
throw e;
} catch (Exception e) {
log.error("SDK调用异常", e);
throw e;
}
}
單元測試說明
1、請求正確,回傳 LiveChannelInitResponse 物件,B 端依據此物件處理業務邏輯;
2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息請見 PloyvSdkException.getMessage(),例如 [ 輸入參數 [xxx.chat.LivexxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]
3、伺服器處理異常,拋出 PloyvSdkException,錯誤資訊請見 PloyvSdkException.getMessage(),例如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因:invalid signature. ]
請求入參說明
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| basicSetting | true | BasicSetting | 基礎設定【詳見BasicSetting參數說明】 |
| authSettings | false | Array | 觀看條件設定【詳見AuthSetting參數說明】 |
| playbackSetting | false | PlaybackSetting | 回放設定【詳見PlaybackSetting參數說明】 |
| teacher | false | Teacher | 講師設定【詳見Teacher參數說明】 |
| roles | false | Array | 角色設定【詳見Roles參數說明】 |
| appId | false | String | POLYV用戶APP_ID,多帳號呼叫時此參數必填(即呼叫了initMultiAccount()設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
| appSecret | false | String | POLYV用戶APP_SECRET,多帳號呼叫時此參數必填(即呼叫了initMultiAccount()設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
BasicSetting參數描述
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| name | true | String | 頻道名稱 |
| channelPasswd | false | String | 頻道密碼,長度不能超過16位,必須同時包含字母和數字 |
| autoPlay | false | Integer | 是否自動播放,0-不自動播放;1-自動播放,預設1 |
| playerColor | false | String | 播放器控制欄顏色,預設:#666666 |
| scene | false | String | 直播場景:alone 活動拍攝;ppt 三分屏;topclass 大班課;seminar:研討會 |
| categoryId | false | Integer | 新建頻道的所屬分類,如果不提交,則為預設分類(分類ID可透過「獲取直播分類」介面取得) |
| maxViewer | false | Integer | 最大同時線上人數 |
| startTime | false | Date | 直播開始時間 |
| desc | false | String | 直播介紹的內容 |
| publisher | false | String | 主持人 |
| linkMicLimit | false | Integer | 連麥人數,-1=<取值範圍<=帳號級的連麥人數,-1:表示使用帳號預設的連麥人數,最大16人(註:帳號級連麥人數需通知平台管理員設定才生效) |
| pureRtcEnabled | false | String | 是否為無延遲直播,Y 表示開啟,預設為N |
| receive | false | String | 是否為接收轉播頻道,Y 表示是,不填或填其他值為發起轉播頻道(註:需要開啟頻道轉播功能該參數才生效) |
| receiveChannelIds | false | String | 接收轉播頻道號,多個頻道號用半形逗號,隔開,如果receive參數值為Y時,此參數無效(註:需要開啟頻道轉播功能該參數才生效) |
| onlyOneLiveEnabled | false | String | 頻道是否只能直播一次,Y是,N否,預設為N |
| coverImg | false | String | 封面圖片地址 |
| splashEnabled | false | String | 引導頁開關,預設為N;Y:是,N:否 |
| splashImg | false | String | 引導頁圖片地址,非保利威域名下的圖片需先呼叫上傳圖片資源上傳 |
| likes | false | String | 點讚數 |
| pageView | false | String | 累積觀看數 |
| closeBarrage | false | String | 是否關閉彈幕功能 Y:表示關閉 N:表示開啟【對應api文件的closeDanmu欄位】 |
| showBarrageInfoEnabled | false | String | 是否顯示彈幕資訊開關, Y:表示顯示 N:表示不顯示【對應api文件的showDanmuInfoEnabled欄位】 |
| subAccount | false | String | 子帳號郵箱,填寫時頻道會建立在該子帳號下(子帳號不能被刪除或禁用),暫無法透過介面取得 |
AuthSetting參數描述
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| rank | true | Integer | 通用參數:主要觀看條件為1,次要觀看條件為2 |
| enabled | true | String | 通用參數:是否開啟,Y為開啟,N為關閉 |
| authType | false | String | 通用參數:付費觀看-pay,驗證碼觀看-code,白名單觀看-phone,登記觀看-info,自定義授權觀看-custom,外部授權-external,直接授權(獨立授權)-direct |
| payAuthTips | false | String | 付費觀看參數:歡迎語標題,付費觀看時該欄位必填 |
| price | false | Float | 付費觀看參數:價格,單位為元,付費觀看時該欄位必填 |
| watchEndTime | false | Date | 付費觀看參數:付費有效截止日期。watchEndTime和validTimePeriod只能設定一個,當watchEndTime和validTimePeriod都為空時,表示付費永久有效 |
| validTimePeriod | false | Integer | 付費觀看參數:付費有效時長,單位天。當watchEndTime和validTimePeriod都為空時,表示付費永久有效 |
| authCode | false | String | 驗證碼觀看參數:驗證碼,驗證碼觀看時該欄位必填 |
| qcodeTips | false | String | 驗證碼觀看參數:提示文案 |
| qcodeImg | false | String | 驗證碼觀看參數:公眾號二維碼地址 |
| authTips | false | String | 白名單觀看參數:提示文案 |
| infoFields | false | Array | 登記觀看參數,登記觀看時該欄位必填【詳見InfoField參數描述】 |
| externalKey | false | String | 外部授權參數:SecretKey,外部授權時該欄位必填 |
| externalUri | false | String | 外部授權參數:自訂url,外部授權時該欄位必填 |
| externalRedirectUri | false | String | 外部授權參數:跳轉地址 |
| customKey | false | String | 自訂授權參數:SecretKey,自訂授權時該欄位必填 |
| customUri | false | String | 自訂授權參數:自訂url,自訂授權時該欄位必填 |
| directKey | false | String | 直接授權參數:直接授權簽名使用SecretKey |
PlaybackSetting參數描述
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| globalSettingEnabled | false | String | 是否套用通用設定:Y:是; N:否; |
| playbackEnabled | false | String | 回放開關:Y:開啟; N:關閉; |
| type | false | String | 回放方式:single:單一回放; list:列表回放; |
| origin | false | String | 回放來源:record:暫存; playback:回放列表; vod:點播列表; |
| videoId | false | String | 單一回放的影片 ID |
Teacher參數描述
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| nickname | false | String | 講師暱稱 |
| actor | false | String | 講師頭銜 |
| passwd | false | String | 講師密碼(與 basicSetting.channelPasswd 說明一致,此處可不設定) |
| avatar | false | String | 頭像圖片網址 |
Roles參數描述
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| nickname | false | String | 角色暱稱 |
| actor | false | String | 角色頭銜 |
| passwd | false | String | 角色密碼 |
| avatar | false | String | 頭像圖片位址 |
| role | false | String | 角色類型:Assistant:助教; Guest:嘉賓; |
InfoField參數描述
| 參數名 | 必填 | 類型 | 說明 |
|---|---|---|---|
| name | false | String | 登記資訊名稱,最多8個字元 |
| type | true | String | 登記類型,姓名-name,文字-text,手機號碼-mobile,數字-number,下拉選項-option,登記觀看時此欄位必填 |
| options | false | String | 下拉選項時,下拉的選項值,以英文逗號分隔。選項個數上限為8個;選項內容最多8個字元 |
| placeholder | false | String | 文字框輸入提示,最多8個字元 |
| sms | false | String | 簡訊驗證開關,Y 開啟,N 關閉 |
回傳物件描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| channelId | String | 直播頻道號 |
| userId | String | POLYV 使用者 ID,與保利威官網一致,取得路徑:官網 -> 登入 -> 直播(開發設定) |
| name | String | 直播頻道名稱 |
| publisher | String | 主持人 |
| description | String | 直播頻道描述 |
| url | String | 直播推流位址 |
| stream | String | 直播流名稱 |
| logoImage | String | 播放器 logo |
| logoOpacity | Float | Logo 不透明度,1 表示完全不透明 |
| logoPosition | String | Logo 位置 tr1:左上 tr:右上 b1:左下 br:右下 |
| logoHref | String | Logo 的跳轉連結 |
| coverImage | String | 播放前顯示的封面圖 |
| coverHref | String | 封面圖的跳轉連結 |
| waitImage | String | 等待推流時的顯示圖片 |
| waitHref | String | 等待推流時顯示圖片的跳轉連結 |
| cutoffImage | String | 切斷流時的顯示圖片 |
| cutoffHref | String | 切斷流時顯示圖片的跳轉連結 |
| advertType | String | 廣告類型 |
| advertDuration | String | 廣告時長,單位:秒 |
| advertWidth | String | 廣告區域寬度 |
| advertHeight | String | 廣告區域高度 |
| advertImage | String | 圖片廣告 |
| advertHref | String | 廣告的跳轉連結 |
| advertFlvVid | String | 影片廣告 ID |
| advertFlvUrl | String | 影片廣告連結 |
| playerColor | String | 播放器控制欄顏色 |
| autoPlay | Boolean | 自動播放 |
| warmUpFlv | String | 一開始的暖場影片 |
| passwdRestrict | Boolean | 觀看密碼限制,需要輸入觀看密碼才能播放流 |
| passwdEncrypted | String | 觀看密碼加密後的密文 |
| isOnlyAudio | String | 僅推音訊流:Y:音訊模式; N:普通模式; |
| isLowLatency | String | 低延遲,Y-低延遲,N-非低延遲 |
| m3u8Url | String | 直播拉流(播放)m3u8 位址 |
| m3u8Url1 | String | 直播拉流(播放)m3u8 位址 1 |
| m3u8Url2 | String | 直播拉流(播放)m3u8 位址 2 |
| m3u8Url3 | String | 直播拉流(播放)m3u8 位址 3 |
| channelLogoImage | String | 頻道圖示 |
| scene | String | 直播場景 alone:活動拍攝 ppt:三分屏 topclass:大班課 seminar:研討會 |
| channelViewerPasswd | String | 參與者密碼 |
| channelPasswd | String | 頻道密碼 |
| linkMicLimit | Integer | 連麥人數 -1:使用帳號連麥分數 0-16:代表連麥人數 |
| streamType | String | 直播方式 client:客戶端推流 pull:拉流 thirdpull:第三方拉流 disk:硬碟推流 audio:音訊直播 |
| pureRtcEnabled | String | 是否為無延遲直播,預設為 N Y:是 N:否 |
| type | String | 頻道類型 發起轉播:transmit 接收轉播:receive 普通頻道:normal |
| cnAndEnLiveEnabled | String | 中英文直播間開關 Y:開啟 N:關閉 |
| pushEnUrl | String | 英文推流位址 |
| currentTimeMillis | Long | 伺服器回傳的時間戳記(毫秒) |
2、查詢頻道基本資訊
描述
查询频道基本信息
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/basic/get
呼叫限制
1、介面呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看
單元測試
@Test
public void testGetChannelBasicInfo() throws Exception, NoSuchAlgorithmException {
LiveChannelBasicInfoRequest liveChannelBasicInfoRequest = new LiveChannelBasicInfoRequest();
LiveChannelBasicInfoResponse liveChannelBasicInfoResponse;
try {
//准备测试数据
String channelId = super.createChannel();
liveChannelBasicInfoRequest.setChannelId(channelId);
liveChannelBasicInfoResponse = new LiveChannelOperateServiceImpl().getChannelBasicInfo(
liveChannelBasicInfoRequest);
Assert.assertNotNull(liveChannelBasicInfoResponse);
if (liveChannelBasicInfoResponse != null) {
//to do something ......
log.debug("查询频道基本信息成功{}", JSON.toJSONString(liveChannelBasicInfoResponse));
}
} catch (PloyvSdkException e) {
//参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage(),B
log.error(e.getMessage(), e);
// 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
throw e;
} catch (Exception e) {
log.error("SDK调用异常", e);
throw e;
}
}
單元測試說明
1、請求正確,回傳 LiveChannelBasicInfoResponse 物件,B 端依據此物件處理業務邏輯;
2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息請見 PloyvSdkException.getMessage(),例如 [ 輸入參數 [xxx.chat.LivexxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]
3、伺服器處理異常,拋出 PloyvSdkException,錯誤資訊請見 PloyvSdkException.getMessage(),例如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因:invalid signature. ]
請求入參說明
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| channelId | true | String | 頻道號 |
| appId | false | String | POLYV 使用者 APP_ID,多帳號呼叫時此參數必填(即呼叫了 initMultiAccount() 設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網 -> 登入 -> 直播(開發設定) |
| appSecret | false | String | POLYV 使用者 APP_SECRET,多帳號呼叫時此參數必填(即呼叫了 initMultiAccount() 設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網 -> 登入 -> 直播(開發設定) |
回傳物件描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| channelId | String | 頻道號 |
| name | String | 頻道名稱 |
| scene | String | 直播場景:alone 活動拍攝;ppt 三分屏;topclass 大班課;seminar:研討會 |
| newScene | String | 新版後台直播場景,若未定義則取scene undefined:未定義 topclass:大班課 double:雙師課(需開通權限) train:企業培訓 seminar:研討會 alone:活動行銷 |
| template | String | 新版後台直播模板,若老版頻道,該欄位為未定義 undefined:未定義 ppt:文件+影片 alone:純影片(專業) topclass:純影片(極速) seminar:研討會 portrait_ppt:文件+影片(直式) portrait_alone:影片(直式) |
| channelPasswd | String | 頻道密碼 |
| pureRtcEnabled | String | 無延遲開關 Y:開啟 N:關閉 |
| publisher | String | 主持人名稱 |
| startTime | Date | 直播開始時間,關閉時為null |
| pageView | Integer | 頁面累計觀看數 |
| likes | Integer | 觀看頁按讚數 |
| coverImg | String | 頻道圖示url |
| splashImg | String | 引導頁圖片位址 |
| splashEnabled | String | 引導頁開關(取值為Y/N) |
| desc | String | 直播介紹 |
| consultingMenuEnabled | String | 諮詢提問開關(取值為Y/N) |
| maxViewerRestrict | String | 限制最大線上觀看人數開關(取值為Y/N) |
| maxViewer | Integer | 最大線上觀看人數 |
| watchStatus | String | 頻道的觀看頁狀態,取值為:live(直播中)、end(直播結束)、playback(回放中)、waiting(等待直播) |
| watchStatusText | String | 觀看頁狀態描述,直播中,回放中,已結束,未開始 |
| userCategory | UserCategory | 頻道所屬分類的資訊【詳見UserCategory參數描述】 |
| authSettings | Array | 直播觀看條件列表【詳見AuthSetting參數描述】 |
UserCategory參數描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| categoryId | Integer | 分類ID |
| categoryName | String | 分類名稱 |
| userId | String | POLYV用戶ID,與保利威官網一致,取得路徑:官網->登入->直播(開發設定) |
| rank | Integer | 分類的排序值 |
AuthSetting參數描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| channelId | String | 頻道號 |
| userId | String | POLYV 用戶 ID,與保利威官網一致,取得路徑:官網 -> 登入 -> 直播(開發設定) |
| rank | Integer | 用於實現一個頻道設定兩個觀看條件,為 1 或 2(1 為主要條件,2 為次要條件) |
| globalSettingEnabled | String | 是否開啟全域設定(Y/N) |
| enabled | String | 是否開啟觀看條件(Y/N) |
| authType | String | 觀看條件類型(1. 無限制 none 2. 驗證碼觀看 code 3. 付費觀看 pay 4. 白名單觀看 phone 5. 登記觀看 info 6. 分享觀看 wxshare 7. 自訂授權觀看 custom 8. 外部授權觀看 external) |
| authTips | String | 白名單觀看提示資訊 |
| payAuthTips | String | 付費觀看提示資訊 |
| authCode | String | 驗證碼觀看方式的驗證碼 |
| qcodeTips | String | 驗證碼觀看方式的 QR Code 提示 |
| qcodeImg | String | 驗證碼觀看方式的 QR Code 圖片 |
| price | Float | 付費觀看的價格 |
| watchEndTime | Date | 付費觀看,截止時間,為 null 表示:一次付費,永久有效 |
| validTimePeriod | Integer | 付費觀看的截止時長(天) |
| customKey | String | 自訂授權觀看的 key |
| customUri | String | 自訂授權觀看的介面地址 |
| externalKey | String | 外部授權觀看的 key |
| externalUri | String | 外部授權觀看的介面地址 |
| externalRedirectUri | String | 外部授權觀看,用戶直接訪問觀看頁時的跳轉地址 |
3、批次建立頻道
描述
批量创建频道
接口地址(仅做说明使用):https://api.polyv.net/live/v3/channel/basic/batch-create
呼叫限制
1、介面呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看
單元測試
@Test
public void testCreateChannelList() throws Exception, NoSuchAlgorithmException {
LiveCreateChannelListRequest liveCreateChannelListRequest = new LiveCreateChannelListRequest();
LiveCreateChannelListResponse liveCreateChannelListResponse;
try {
List<LiveCreateChannelListRequest.LiveChannelBasic> channels =
new ArrayList<LiveCreateChannelListRequest.LiveChannelBasic>();
for (int i = 0; i <= 2; i++) {
LiveCreateChannelListRequest.LiveChannelBasic liveChannel =
new LiveCreateChannelListRequest.LiveChannelBasic();
liveChannel.setName("批量创建" + i)
.setChannelPasswd("123456" + i)
.setCourseId("c" + i)
.setAutoPlay(1)
.setPlayerColor("#666666")
.setScene(LiveConstant.SceneType.ALONE.getDesc())
.setSubAccount("test-dev@qq.com")
.setCategoryId(340019);
channels.add(liveChannel);
}
liveCreateChannelListRequest.setChannels(channels);
liveCreateChannelListResponse = new LiveChannelOperateServiceImpl().createChannelList(
liveCreateChannelListRequest);
Assert.assertNotNull(liveCreateChannelListResponse);
if (liveCreateChannelListResponse != null) {
//to do something ......
log.debug("频道批量创建成功{}", JSON.toJSONString(liveCreateChannelListResponse));
}
} catch (PloyvSdkException e) {
//参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage(),B
log.error(e.getMessage(), e);
// 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
throw e;
} catch (Exception e) {
log.error("SDK调用异常", e);
throw e;
}
}
單元測試說明
1、請求正確,回傳 LiveCreateChannelListResponse 物件,B 端依據此物件處理業務邏輯;
2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息請見 PloyvSdkException.getMessage(),例如 [ 輸入參數 [xxx.chat.LivexxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]
3、伺服器處理異常,拋出 PloyvSdkException,錯誤訊息請見 PloyvSdkException.getMessage(),例如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因: invalid signature. ]
請求入參說明
| 參數名稱 | 必填 | 類型 | 說明 |
|---|---|---|---|
| channels | true | Array | 頻道列表【詳見LiveChannelBasic參數說明】 |
| appId | false | String | POLYV使用者APP_ID,多帳號呼叫時此參數必填(即呼叫了initMultiAccount()設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
| appSecret | false | String | POLYV使用者APP_SECRET,多帳號呼叫時此參數必填(即呼叫了initMultiAccount()設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
LiveChannelBasic參數描述
| 參數名 | 必填 | 類型 | 說明 |
|---|---|---|---|
| name | true | String | 頻道名稱 |
| channelPasswd | false | String | 頻道密碼,長度不能超過16位,必須同時包含字母和數字 |
| courseId | false | String | 課程號 |
| autoPlay | false | Integer | 是否自動播放,0/1,預設1。注意,如果該值為空,則該頻道會使用全域的「功能開關設定」。如果非空,則會使用頻道的「功能開關設定」。 |
| playerColor | false | String | 播放器控制欄顏色,預設:#666666 |
| scene | false | String | 直播場景,alone 活動拍攝;ppt 三分屏;topclass 大班課;seminar:研討會 |
| categoryId | false | Integer | 新建頻道的所屬分類,如果不提交,則為預設分類。分類ID可透過「取得直播分類」介面取得 |
| subAccount | false | String | 子帳號信箱,填寫時頻道會建立在該子帳號下(子帳號不能被刪除或停用),暫無法透過介面取得 |
回傳物件描述
| 參數名稱 | 類型 | 說明 |
|---|---|---|
| channels | Array | 頻道基本資訊【詳見LiveChannelResponse參數描述】 |
LiveChannelResponse參數描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| channelId | String | 直播頻道號 |
| userId | String | POLYV 使用者 ID,與保利威官網一致,取得路徑:官網->登入->直播(開發設定) |
| name | String | 直播頻道名稱 |
| publisher | String | 主持人 |
| description | String | 直播頻道描述 |
| url | String | 直播推流位址 |
| stream | String | 直播流名稱 |
| logoImage | String | 播放器 logo |
| logoOpacity | Float | Logo 不透明度,1 表示完全不透明 |
| logoPosition | String | Logo 位置 tr1:左上 tr:右上 b1:左下 br:右下 |
| logoHref | String | Logo 的跳轉連結 |
| coverImage | String | 播放前顯示的封面圖 |
| coverHref | String | 封面圖的跳轉連結 |
| waitImage | String | 等待推流時的顯示圖片 |
| waitHref | String | 等待推流時顯示圖片的跳轉連結 |
| cutoffImage | String | 切斷流時的顯示圖片 |
| cutoffHref | String | 切斷流時顯示圖片的跳轉連結 |
| advertType | String | 廣告類型 |
| advertDuration | Integer | 廣告時長,單位:秒 |
| advertWidth | Integer | 廣告區域寬度 |
| advertHeight | Integer | 廣告區域高度 |
| advertImage | String | 圖片廣告 |
| advertHref | String | 廣告的跳轉連結 |
| advertFlvVid | String | 影片廣告 ID |
| advertFlvUrl | String | 影片廣告連結 |
| playerColor | String | 播放器控制欄顏色 |
| autoPlay | Boolean | 自動播放,true 為自動播放,false 為關閉 |
| warmUpFlv | String | 一開始的暖場影片 |
| passwdRestrict | Boolean | 觀看密碼限制,需要輸入觀看密碼才能播放流 |
| passwdEncrypted | String | 觀看密碼加密後的密文 |
| isOnlyAudio | String | 僅推音訊流,Y-是,N-否 |
| isLowLatency | String | 低延遲,Y-是,N-否 |
| m3u8Url | String | 直播拉流(播放)m3u8 位址 |
| m3u8Url1 | String | 直播拉流(播放)m3u8 位址 1 |
| m3u8Url2 | String | 直播拉流(播放)m3u8 位址 2 |
| m3u8Url3 | String | 直播拉流(播放)m3u8 位址 3 |
| currentTimeMillis | Long | 伺服器回傳的時間戳記(毫秒) |
| linkMicLimit | Integer | 連麥人數 |
| channelLogoImage | String | 頻道圖示 |
| scene | String | 直播場景 alone:活動拍攝 ppt:三分屏 topclass:大班課 seminar:研討會 |
| channelViewerPasswd | String | 參與者密碼 |
| channelPasswd | String | 頻道密碼 |
| streamType | String | 直播方式 |
| pureRtcEnabled | String | 是否為純 rtc 拉流 Y:是 N:否 |
| type | String | 頻道類型 發起轉播:transmit 接收轉播:receive 普通頻道:normal |
| cnAndEnLiveEnabled | String | 中英文直播間開關 Y:開啟 N:關閉 |
| pushEnUrl | String | 英文推流位址 |
4、建立角色-助教
描述
创建角色-助教
接口地址(仅做说明使用):https://api.polyv.net/live/v2/channelAccount/%s/add
呼叫限制
1、介接呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看
單元測試
@Test
public void testCreateSonChannelAssistant() throws Exception, NoSuchAlgorithmException {
LiveCreateSonChannelRequest liveCreateSonChannelRequest = new LiveCreateSonChannelRequest();
LiveCreateSonChannelResponse liveCreateSonChannelResponse;
try {
//准备测试数据
String channelId = super.createChannel();
List<String> sonChannelIds = getDelSonChannelIds();
for (String temp : sonChannelIds) {
deleteSonChannel(temp);
}
liveCreateSonChannelRequest.setChannelId(channelId)
.setRole(null)
.setNickname("sadboy")
.setActor("教授")
.setAvatar("https://www.polyv.net/assets/dist/images/web3.0/c-header/hd-logo.svg?v=2.0");
liveCreateSonChannelResponse = new LiveChannelOperateServiceImpl().createSonChannel(
liveCreateSonChannelRequest);
Assert.assertNotNull(liveCreateSonChannelResponse);
if (liveCreateSonChannelResponse != null) {
//to do something ......
log.debug("创建角色成功{}", JSON.toJSONString(liveCreateSonChannelResponse));
}
} catch (PloyvSdkException e) {
//参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage(),B
log.error(e.getMessage(), e);
// 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
throw e;
} catch (Exception e) {
log.error("SDK调用异常", e);
throw e;
}
}
單元測試說明
1、請求正確,回傳 LiveCreateSonChannelResponse 物件,B 端依據此物件處理業務邏輯;
2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息請見 PloyvSdkException.getMessage(),例如 [ 輸入參數 [xxx.chat.LivexxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]
3、伺服器處理異常,拋出 PloyvSdkException,錯誤資訊請參閱 PloyvSdkException.getMessage(),例如 [ 保利威請求回傳資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因: invalid signature. ]
請求入參描述
| 參數名 | 必填 | 類型 | 說明 |
|---|---|---|---|
| channelId | 是 | String | 頻道號 |
| role | 否 | String | 預設不傳為助教,傳 Guest 為嘉賓 |
| nickname | 否 | String | 建立的助教或嘉賓暱稱 |
| actor | 否 | String | 建立的助教或嘉賓頭銜 |
| avatar | 否 | String | 建立的助教或嘉賓頭像 |
| appId | 否 | String | POLYV 用戶 APP_ID,多帳號呼叫時此參數必填(即呼叫了 initMultiAccount() 設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
| appSecret | 否 | String | POLYV 用戶 APP_SECRET,多帳號呼叫時此參數必填(即呼叫了 initMultiAccount() 設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
回傳物件描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| account | String | 助教ID |
| userId | String | POLYV使用者ID,與保利威官網一致,取得路徑:官網->登入->直播(開發設定) |
| channelId | String | 頻道號 |
| passwd | String | 助教密碼 |
| nickname | String | 助教名稱 |
| stream | String | 助教串流名稱(單獨使用無效) |
| status | String | 助教狀態(Y/N) |
| createdTime | Date | 建立助教時間 |
| lastModified | Date | 助教最後修改時間 |
| sort | Integer | 頻道中所有助教序號 |
| avatar | String | 助教頭像 |
| pageTurnEnabled | String | 助教翻頁權限(只能一個助教有,Y或N) |
| notifyEnabled | String | 發布公告權限(Y/N) |
| checkinEnabled | String | 開啟簽到權限(Y/N) |
| voteEnabled | String | 發起投票(Y/N) |
| role | String | 角色 assistant:助教 guest:嘉賓 |
5、設定角色
描述
设置角色
接口地址(仅做说明使用):https://api.polyv.net/live/v2/channelAccount/%s/update
呼叫限制
1、介面呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看
單元測試
@Test
public void testUpdateSonChannelInfo() throws Exception, NoSuchAlgorithmException {
LiveUpdateSonChannelInfoRequest liveUpdateSonChannelInfoRequest = new LiveUpdateSonChannelInfoRequest();
Boolean liveUpdateSonChannelInfoResponse;
try {
//准备测试数据
String channelId = super.createChannel();
String sonChannelId = createSonChannel(channelId);
liveUpdateSonChannelInfoRequest.setChannelId(channelId)
.setAccount(sonChannelId)
.setNickname("sadboy")
.setPassword(getRandomString(16))
.setAvatar("https://www.polyv.net/assets/dist/images/web3.0/c-header/hd-logo.svg?v=2.0")
.setActor("教授")
.setPageTurnEnabled("Y")
.setNotifyEnabled("Y");
liveUpdateSonChannelInfoResponse = new LiveChannelOperateServiceImpl().updateSonChannelInfo(
liveUpdateSonChannelInfoRequest);
Assert.assertNotNull(liveUpdateSonChannelInfoResponse);
if (liveUpdateSonChannelInfoResponse) {
//to do something ......
log.debug("设置角色信息成功");
}
} catch (PloyvSdkException e) {
//参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage(),B
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. ]
請求入參說明
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| channelId | true | String | 頻道號 |
| account | true | String | 助教/嘉賓帳號 |
| nickname | false | String | 暱稱 |
| password | false | String | 角色密碼 |
| avatar | false | String | 頭像 |
| actor | false | String | 角色頭銜 |
| pageTurnEnabled | false | String | 助教翻頁權限,值為Y或N,Y為開啟,N為關閉 |
| notifyEnabled | false | String | 角色公告權限,值為Y或N,Y為開啟,N為關閉 |
| appId | false | String | POLYV用戶APP_ID,多帳號調用時此參數必填(即調用了initMultiAccount()設置多帳號調用),透過註冊保利威官網獲取,路徑:官網->登入->直播(開發設定) |
| appSecret | false | String | POLYV用戶APP_SECRET,多帳號調用時此參數必填(即調用了initMultiAccount()設置多帳號調用),透過註冊保利威官網獲取,路徑:官網->登入->直播(開發設定) |
回傳物件描述
true 為設定成功,false 為設定失敗
6、取得講師資訊
描述
获取讲师信息
接口地址(仅做说明使用):https://api.polyv.net/live//v3/channel/account/getTeacher
呼叫限制
1、介面呼叫有頻率限制,詳細請查看,呼叫常見異常,詳細請查看
單元測試
@Test
public void testChannelGetTeacher() throws Exception, NoSuchAlgorithmException {
LiveChannelGetTeacherRequest liveChannelGetTeacherRequest = new LiveChannelGetTeacherRequest();
LiveChannelGetTeacherResponse liveChannelGetTeacherResponse;
try {
//准备测试数据
String channelId = super.createChannel();
liveChannelGetTeacherRequest.setChannelId(channelId);
liveChannelGetTeacherResponse = new LiveChannelOperateServiceImpl().getTeacher(liveChannelGetTeacherRequest);
Assert.assertNotNull(liveChannelGetTeacherResponse);
if (liveChannelGetTeacherResponse != null) {
//to do something ......
log.debug("获取讲师信息成功: %s",JSON.toJSONString(liveChannelGetTeacherResponse));
}
} catch (PloyvSdkException e) {
//参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage(),B
log.error(e.getMessage(), e);
// 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
throw e;
} catch (Exception e) {
log.error("SDK调用异常", e);
throw e;
}
}
}
單元測試說明
1、請求正確,回傳 LiveChannelGetTeacherResponse 物件,B 端依據此物件處理業務邏輯;
2、請求參數驗證不合格,拋出 PloyvSdkException,錯誤訊息請見 PloyvSdkException.getMessage(),例如 [ 輸入參數 [xxx.chat.LivexxxRequest] 物件驗證失敗,失敗欄位 [pic 不能為空 / msg 不能為空] ]
3、伺服器處理異常,拋出 PloyvSdkException,錯誤訊息請見 PloyvSdkException.getMessage(),例如 [ 保利威請求返回資料錯誤,請求流水號:66e7ad29fd04425a84c2b2b562d2025b,錯誤原因:invalid signature. ]
請求入參說明
| 參數名 | 必填 | 類型 | 說明 |
|---|---|---|---|
| channelId | true | String | 頻道號 |
| appId | false | String | POLYV 使用者 APP_ID,多帳號呼叫時此參數必填(即呼叫了 initMultiAccount() 設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
| appSecret | false | String | POLYV 使用者 APP_SECRET,多帳號呼叫時此參數必填(即呼叫了 initMultiAccount() 設定多帳號呼叫),透過註冊保利威官網取得,路徑:官網->登入->直播(開發設定) |
回傳物件描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| account | String | 講師 ID,同頻道號 |
| actor | String | 講師頭銜 |
| avatar | String | 講師頭像,範例://liveimages.videocc.net/uploaded/images/2023/04/gjps9etdpx.jpg |
| channelId | String | 頻道號 |
| nickname | String | 講師暱稱 |
| passwd | String | 講師登入密碼 |
| loginCode | String | 該欄位為 null |
| role | String | 該欄位為 null |
