TypeScript SDK
SDK v5 正式发布,全面重新设计
TypeScript SDK 是官方支持的软件包,帮助开发者集成 Meeting BaaS API —— 这是一个用于在 Google Meet、Zoom 和 Microsoft Teams 上自动化会议的通用接口。
🚀 v5.0.0 新特性:全面的架构重新设计,改进了 TypeScript 支持、更好的错误处理以及更优质的开发体验。升级说明请参阅 迁移指南。
- 完整的类型安全,提供全面的 TypeScript 类型定义
- 自动更新,与 OpenAPI 规范同步
- 简化访问所有会议自动化功能
- 跨平台一致性,支持所有主流会议提供商
- 增强的错误处理,使用可辨别联合类型 response
- 参数验证,自动进行 Zod schema 验证
- 支持 Tree-shaking,提升性能
主要特性
- BaaS API Client: 用于与 Meeting BaaS API 交互的强类型函数
- Bot 管理: 跨平台创建、加入和管理会议 bot
- 日历集成: 连接日历并自动安排会议录制
- 完整 API 覆盖: 访问所有 Meeting BaaS API endpoint
- TypeScript 支持: 所有 API 的完整 TypeScript 类型定义
- 增强的错误处理: 可辨别联合类型 response,实现类型安全的错误处理
- 参数验证: 对所有 API 调用自动进行 Zod schema 验证
- 支持 Tree-shaking: 仅导入所需方法
- 全面测试: 使用 MSW mocking 实现完整测试覆盖
系统要求
- Node.js: 18.0.0 或更高版本
- 包管理器: npm、yarn 或 pnpm
已测试的 Node.js 版本: 18、19、20、21、22
安装
使用你首选的包管理器安装 Meeting BaaS SDK:
npm install @meeting-baas/sdkyarn add @meeting-baas/sdkpnpm add @meeting-baas/sdk快速开始
使用你的 API key 创建一个新的 BaaS client 实例:
import { createBaasClient } from "@meeting-baas/sdk";
// Create a BaaS client
const client = createBaasClient({
api_key: "your-api-key", // Get yours at https://meetingbaas.com
});
async function example() {
// Join a meeting
const { success, data, error } = await client.joinMeeting({
bot_name: "Meeting Assistant",
meeting_url: "https://meet.google.com/abc-def-ghi",
reserved: true,
});
if (success) {
console.log("Bot joined successfully:", data.bot_id);
} else {
console.error("Error joining meeting:", error);
}
}import { createBaasClient } from "@meeting-baas/sdk";
const client = createBaasClient({
api_key: "your-api-key",
timeout: 60000
});
async function comprehensiveExample() {
// Join a meeting with all options
const joinResult = await client.joinMeeting({
meeting_url: "https://meet.google.com/abc-defg-hij",
bot_name: "Advanced Test Bot",
reserved: false,
bot_image: "https://example.com/bot-image.jpg",
enter_message: "Hello from the advanced test bot!",
extra: { test_id: "advanced-example" },
recording_mode: "speaker_view",
speech_to_text: { provider: "Gladia" },
webhook_url: "https://example.com/webhook"
});
if (joinResult.success) {
const botId = joinResult.data.bot_id;
console.log("Bot joined with ID:", botId);
// Get meeting data with transcripts
const meetingDataResult = await client.getMeetingData({
bot_id: botId,
include_transcripts: true
});
if (meetingDataResult.success) {
console.log("Meeting duration:", meetingDataResult.data.duration);
}
}
}日历集成
SDK 提供完整的日历集成功能:
import { createBaasClient } from "@meeting-baas/sdk";
const client = createBaasClient({
api_key: "your-api-key",
});
// Create a calendar integration
const calendarResult = await client.createCalendar({
oauth_client_id: "your-oauth-client-id",
oauth_client_secret: "your-oauth-client-secret",
oauth_refresh_token: "your-oauth-refresh-token",
platform: "Google",
});
if (calendarResult.success) {
console.log("Calendar created:", calendarResult.data);
// List all calendars
const calendarsResult = await client.listCalendars();
if (calendarsResult.success) {
console.log("All calendars:", calendarsResult.data);
}
// List events from a calendar
const eventsResult = await client.listCalendarEvents({
calendar_id: calendarResult.data.calendar.uuid,
start_date_gte: new Date().toISOString(),
start_date_lte: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString()
});
if (eventsResult.success) {
console.log("Events:", eventsResult.data);
}
}错误处理
SDK 提供类型安全的错误处理,使用可辨别联合类型 response:
import { createBaasClient } from "@meeting-baas/sdk";
const client = createBaasClient({
api_key: "your-api-key",
});
const result = await client.joinMeeting({
meeting_url: "https://meet.google.com/abc-def-ghi",
bot_name: "My Bot",
reserved: false
});
if (result.success) {
// TypeScript knows result.data is JoinResponse
console.log("Bot ID:", result.data.bot_id);
} else {
// TypeScript knows result.error is ZodError | Error
if (result.error instanceof ZodError) {
console.error("Validation error:", result.error.errors);
} else {
console.error("API error:", result.error.message);
}
}从 v4.x 迁移
如果你正在从 v4.x 升级,请参阅 迁移指南 获取详细的迁移说明。