文件說明

VCaaS Open API 簡介

VCaaS Open API 是由 HiLink 公司自主研發的,供第三方機構使用的公共介面服務。在 VCaaS Open API 的幫助下,第三方可以快速集成 VCaaS 的虛擬教室。在 VCaaS 的虛擬教室中,用戶可以盡情體驗包括實時音視頻通信、聊天、屏幕分享、文件演示、白板、獎勵等功能。

VCaaS 會議介面

VCaaS 會議介面是用於操作會議相關功能的一組介面。用戶可以使用 VCaaS 會議介面,創建、結束、刪除會議、關聯會議與文件、查詢會議錄像、查詢會議數據。

VCaaS 文件介面

VCaaS 文件介面是用於操作文件相關功能的一組介面。用戶可以使用 VCaaS 文件介面,獲取文件上傳地址、查詢文件、刪除文件。

發版說明

序號版本更新時間更新內容
1VCaaS API Documentation V1.0.02023-03-31VCaaS API Documentation V1.0.0 發布
2VCaaS API Documentation V1.0.12023-08-03VCaaS 會議新增一些配置項
3VCaaS API Documentation V1.0.22023-09-20添加會議區域參數和教室內邀請鏈接
4VCaaS API Documentation V2.0.02023-11-22新增了新的文件夾和文件版本2的端點
5VCaaS API Documentation V2.0.12023-12-20添加了與錄音和用戶界面相關的教室配置項
6VCaaS API Documentation V2.0.22024-01-09添加了教案API *測試版
7VCaaS API Documentation V2.0.32024-01-16添加了 Webhooks 和回呼
8VCaaS API Documentation V2.1.02024-01-22添加了 VCaaS 會議API v2介面
9VCaaS API Documentation V2.1.12024-02-13添加了嵌入 VCaaS
10VCaaS API Documentation V2.2.02024-02-29添加了預設 Quiz 介面
11VCaaS API Documentation V2.2.12024-03-22添加了錄音檔開始/結束事件的Webhooks 和回呼
12VCaaS API Documentation V2.2.22024-03-26iframe嵌套模式添加了postmessage推送的音視訊數據
13VCaaS API Documentation V2.2.32024-04-09添加了查詢會議聊天數據接口
14VCaaS API Documentation V2.2.42024-04-18添加了查詢會議錄影 V2 介面及課後評估數據
15VCaaS API Documentation V2.3.02024-05-171. 新增生成AI教案API。
2. 新增刪除錄影API。
3. 新增VCaaS教案API。
4. 將建立會議 API 中的「lessonPlanUuids」重新命名為「lessonPlanIds」。
16VCaaS API Documentation V2.3.12024-06-121. 會議配置新增 enableBrowserUpdatePrompt 參數。
2. 新增了老師點擊 End class for all 事件的 Webhooks 和回呼。
17VCaaS API Documentation V2.3.22024-06-121. 會議配置新增 enableStudentSendChatFile 參數。
18VCaaS API Documentation V2.3.32024-07-091. 會議配置新增 enableTeacherOnboarding 參數。
2. 會議配置新增 defaultView 參數。
3. 使用者進出教室 Webhooks,新增進入等待室類型。

獲取開發者帳號

開發者帳號概述

在使用 VCaaS Open API 時,需要您在 每個請求的header中傳入Authorization資訊,用於鑑別 API 調用者的身份。Authorization 是由 VCaaS 提供的 AccessKeySecretKey 加密生成。 因此,若您想體驗 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));
        }

    }
}
Last Updated: