文件說明
VCaaS Open API 簡介
VCaaS Open API 是由 HiLink 公司自主研發的,供第三方機構使用的公共介面服務。在 VCaaS Open API 的幫助下,第三方可以快速集成 VCaaS 的虛擬教室。在 VCaaS 的虛擬教室中,用戶可以盡情體驗包括實時音視頻通信、聊天、屏幕分享、文件演示、白板、獎勵等功能。
VCaaS 會議介面
VCaaS 會議介面是用於操作會議相關功能的一組介面。用戶可以使用 VCaaS 會議介面,創建、結束、刪除會議、關聯會議與文件、查詢會議錄像、查詢會議數據。
VCaaS 文件介面
VCaaS 文件介面是用於操作文件相關功能的一組介面。用戶可以使用 VCaaS 文件介面,獲取文件上傳地址、查詢文件、刪除文件。
發版說明
序號 | 版本 | 更新時間 | 更新內容 |
---|---|---|---|
1 | VCaaS API Documentation V1.0.0 | 2023-03-31 | VCaaS API Documentation V1.0.0 發布 |
2 | VCaaS API Documentation V1.0.1 | 2023-08-03 | VCaaS 會議新增一些配置項 |
3 | VCaaS API Documentation V1.0.2 | 2023-09-20 | 添加會議區域參數和教室內邀請鏈接 |
4 | VCaaS API Documentation V2.0.0 | 2023-11-22 | 新增了新的文件夾和文件版本2的端點 |
5 | VCaaS API Documentation V2.0.1 | 2023-12-20 | 添加了與錄音和用戶界面相關的教室配置項 |
6 | VCaaS API Documentation V2.0.2 | 2024-01-09 | 添加了教案API *測試版 |
7 | VCaaS API Documentation V2.0.3 | 2024-01-16 | 添加了 Webhooks 和回呼 |
8 | VCaaS API Documentation V2.1.0 | 2024-01-22 | 添加了 VCaaS 會議API v2介面 |
9 | VCaaS API Documentation V2.1.1 | 2024-02-13 | 添加了嵌入 VCaaS |
10 | VCaaS API Documentation V2.2.0 | 2024-02-29 | 添加了預設 Quiz 介面 |
11 | VCaaS API Documentation V2.2.1 | 2024-03-22 | 添加了錄音檔開始/結束事件的Webhooks 和回呼 |
12 | VCaaS API Documentation V2.2.2 | 2024-03-26 | iframe嵌套模式添加了postmessage推送的音視訊數據 |
13 | VCaaS API Documentation V2.2.3 | 2024-04-09 | 添加了查詢會議聊天數據接口 |
14 | VCaaS API Documentation V2.2.4 | 2024-04-18 | 添加了查詢會議錄影 V2 介面及課後評估數據 |
15 | VCaaS API Documentation V2.3.0 | 2024-05-17 | 1. 新增生成AI教案API。 2. 新增刪除錄影API。 3. 新增VCaaS教案API。 4. 將建立會議 API 中的「lessonPlanUuids」重新命名為「lessonPlanIds」。 |
16 | VCaaS API Documentation V2.3.1 | 2024-06-12 | 1. 會議配置新增 enableBrowserUpdatePrompt 參數。 2. 新增了老師點擊 End class for all 事件的 Webhooks 和回呼。 |
17 | VCaaS API Documentation V2.3.2 | 2024-06-12 | 1. 會議配置新增 enableStudentSendChatFile 參數。 |
18 | VCaaS API Documentation V2.3.3 | 2024-07-09 | 1. 會議配置新增 enableTeacherOnboarding 參數。 2. 會議配置新增 defaultView 參數。 3. 使用者進出教室 Webhooks,新增進入等待室類型。 |
19 | VCaaS API Documentation V2.3.4 | 2024-08-14 | 1. 添加更新會議 V2 接口 |
20 | VCaaS API Documentation V2.3.5 | 2024-08-23 | 1. 更新AI Service网域 |
21 | VCaaS API Documentation V2.3.6 | 2024-09-30 | 1. 創建、更新會議V2接口增加 knowledgeBaseUrl 參數 |
獲取開發者帳號
開發者帳號概述
在使用 VCaaS Open API 時,需要您在 每個請求的header中傳入Authorization資訊,用於鑑別 API 調用者的身份。Authorization 是由 VCaaS 提供的 AccessKey
和 SecretKey
加密生成。 因此,若您想體驗 VCaaS Open API 的強大功能,請與 HiLink 的管理員取得聯繫,我們將幫助您創建專門的測試帳號。聯繫我們:hello@hilink.co 。
AccessKey 和 SecretKey 示例
- AccessKey:4mBmzWmNt9Dy5een
- SecretKey:ef8d8fec05064779b3e0243cdae744e8
使用 AccessKey 和 SecretKey 生成 Authorization 範例
package llc.hilink.platform.api;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.Instant;
import java.util.Base64;
/**
* 使用 AccessKey 和 SecretKey 生成 Authorization 範例
*/
public class BasicAuthorizationExample {
private static final String DOT = ".";
private static final String SEPARATOR = ":";
private static final String CHARSET = "UTF-8";
private static final String SHA_256 = "SHA-256";
private static final String HMAC_256 = "HmacSHA256";
private static final Base64.Encoder BASE64_ENCODER = Base64.getUrlEncoder();
public static void main(String[] args) throws Exception {
String accessKey = "4mBmzWmNt9Dy5een";
String secretKey = "ef8d8fec05064779b3e0243cdae744e8";
// 過期時間
long expireAt = Instant.now().plusSeconds(3000).toEpochMilli();
String authorization = new BasicAuthorization(accessKey, secretKey, expireAt).build();
authorization = String.format("%s %s", "Basic", authorization);
System.out.println(authorization);
}
private static String hmac256(String content, String secretKey) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(new HexBinaryAdapter().unmarshal(secretKey), HMAC_256);
Mac mac = Mac.getInstance(secretKeySpec.getAlgorithm());
mac.init(secretKeySpec);
byte[] bytes = mac.doFinal(content.getBytes(CHARSET));
return new HexBinaryAdapter().marshal(bytes).toLowerCase();
}
private static String sha256(String input) throws Exception {
byte[] bytes = MessageDigest.getInstance(SHA_256).digest(input.getBytes(CHARSET));
return new HexBinaryAdapter().marshal(bytes).toLowerCase();
}
static class BasicAuthorization {
private final String accessKey;
private final String secretKey;
private long expireAt = 300L;
public BasicAuthorization(String accessKey, String secretKey) {
this.accessKey = accessKey;
this.secretKey = secretKey;
}
public BasicAuthorization(String accessKey, String secretKey, long expireAt) {
this.accessKey = accessKey;
this.secretKey = secretKey;
this.expireAt = expireAt;
}
public String build() throws Exception {
String access = accessKey + DOT + expireAt;
String secret = hmac256(access, sha256(secretKey));
return BASE64_ENCODER.encodeToString((access + SEPARATOR + secret).getBytes(StandardCharsets.UTF_8));
}
}
}