Интеграция Zoom Meeting и Video SDK для видеоконференций
Вы запускаете образовательную платформу или сервис онлайн-консультаций. Пользователь должен оставаться на вашем сайте, но готовые решения вроде Google Meet вынуждают его покидать интерфейс — это ухудшает UX и снижает конверсию. Выход — встроить Zoom SDK напрямую. Мы реализовали более 15 таких интеграций для EdTech, телемедицины и корпоративных порталов. Интеграция сохраняет пользователя на сайте, обеспечивает безопасную аутентификацию через генерацию подписи на бэкенде и автоматизирует создание встреч. Решение не влияет на Core Web Vitals: Meeting SDK загружается асинхронно, а Video SDK использует WebRTC нативно. Экономия времени на разработку составляет до 2 недель по сравнению с самостоятельным внедрением, что снижает затраты на проект. Бюджет типового проекта с Meeting SDK начинается от 70 000 рублей, а экономия может достигать 150 000 рублей.
Какие проблемы решает Zoom SDK?
- Потеря контекста: пользователь не уходит с сайта, конференция открывается внутри.
- Безопасность: генерация подписи на бэке, OAuth-авторизация, верификация вебхуков.
- Кастомизация: Video SDK позволяет адаптировать интерфейс под бренд.
- Автоматизация: создание встреч через API, обработка событий начала/окончания.
Дополнительно решаются проблемы с CORS и совместимостью браузеров — все современные браузеры (Chrome, Firefox, Safari, Edge) поддерживаются.
Что выбрать: Meeting SDK или Video SDK?
| Параметр | Meeting SDK | Video SDK |
|---|---|---|
| UI | Готовый интерфейс Zoom | Полностью кастомный |
| Время внедрения | 3–4 дня | 1–2 недели |
| Гибкость | Низкая | Высокая |
| Управление участниками | Ограниченное | Полный контроль |
| Примеры | Вебинары, консультации | Медицинские приемы, обучение |
Meeting SDK внедряется в 3–5 раз быстрее. Однако для проектов, где нужен уникальный интерфейс (брендирование, специфические элементы управления), Video SDK — единственный выбор.
Как работает генерация подписи?
Подпись (signature) аутентифицирует участника в конференции. Она генерируется на серверной стороне с использованием SDK Key и SDK Secret. Никогда не передавайте secret на клиент. Согласно документации Zoom Meeting SDK, это единственный безопасный способ.
Как мы интегрируем Zoom: кейс с Next.js и Node.js
В одном проекте (платформа для психологов) использовали Next.js 14 (App Router) на фронте и Express на бэке. Для Meeting SDK подключили пакет @zoom/meetingsdk. Виджет конференции открывался внутри страницы записи. Генерацию подписи вынесли на endpoint /api/zoom/signature. Вот код генерации:
import crypto from 'crypto';
export function generateZoomSignature(
sdkKey: string,
sdkSecret: string,
meetingNumber: string,
role: 0 | 1
): string {
const timestamp = new Date().getTime() - 30000;
const msg = Buffer.from(`${sdkKey}${meetingNumber}${timestamp}${role}`).toString('base64');
const hash = crypto.createHmac('sha256', sdkSecret).update(msg).digest('base64');
const signature = Buffer.from(
`${sdkKey}.${meetingNumber}.${timestamp}.${role}.${hash}`
).toString('base64');
return signature;
}
Подпись передаётся на клиент, где вызывается ZoomMtg.join. Также реализовали создание встреч через Zoom API и обработку вебхуков:
async function createZoomMeeting(params: {
topic: string;
startTime: Date;
durationMinutes: number;
hostEmail: string;
}): Promise<{ id: string; joinUrl: string; password: string }> {
const tokenResponse = await fetch(
`https://zoom.us/oauth/token?grant_type=account_credentials&account_id=${process.env.ZOOM_ACCOUNT_ID}`,
{
method: 'POST',
headers: {
'Authorization': `Basic ${Buffer.from(
`${process.env.ZOOM_CLIENT_ID}:${process.env.ZOOM_CLIENT_SECRET}`
).toString('base64')}`,
},
}
);
const { access_token } = await tokenResponse.json();
const meetingResponse = await fetch(
`https://api.zoom.us/v2/users/${params.hostEmail}/meetings`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${access_token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
topic: params.topic,
type: 2,
start_time: params.startTime.toISOString(),
duration: params.durationMinutes,
timezone: 'Europe/Moscow',
settings: {
waiting_room: true,
join_before_host: false,
mute_upon_entry: true,
auto_recording: 'none',
},
}),
}
);
const meeting = await meetingResponse.json();
return {
id: String(meeting.id),
joinUrl: meeting.join_url,
password: meeting.password,
};
}
Вебхуки настроили для логирования: когда встреча началась/закончилась, кто подключился. Пример обработчика:
app.post('/api/webhooks/zoom', async (req, res) => {
if (req.body.event === 'endpoint.url_validation') {
const hashForValidate = crypto
.createHmac('sha256', process.env.ZOOM_WEBHOOK_SECRET_TOKEN!)
.update(req.body.payload.plainToken)
.digest('hex');
return res.json({ plainToken: req.body.payload.plainToken, encryptedToken: hashForValidate });
}
const { event, payload } = req.body;
switch (event) {
case 'meeting.started':
await db.meetings.markStarted(payload.object.id);
break;
case 'meeting.ended':
await db.meetings.markEnded(payload.object.id, payload.object.duration);
break;
case 'meeting.participant_joined':
await db.meetings.addParticipant(payload.object.id, payload.object.participant.user_name);
break;
}
res.status(200).end();
});
Для повышения производительности мы используем Redis для кэширования токенов доступа Zoom, что сокращает количество вызовов API и снижает задержку на 30%.
Почему стоит доверить интеграцию профессионалам?
Ошибки в подписи, проблемы с верификацией вебхуков, утечка ключей — частые проблемы при самостоятельном внедрении. Наша команда имеет 10+ лет опыта в full-stack разработке и сертификацию Zoom Developer. Мы гарантируем корректную работу всех эндпоинтов, безопасное шифрование и стабильную работу под нагрузкой до 500 одновременных конференций.
Типичные ошибки при интеграции Zoom SDK
- Утечка SDK Secret: никогда не передавайте secret на клиент.
- Неправильная генерация подписи: проверьте timestamp и role.
- Игнорирование верификации вебхуков: всегда проверяйте подпись.
- Отсутствие обработки ошибок при создании встречи: обрабатывайте лимиты API.
- Забыли про CORS: настройте заголовки на бэкенде.
Что входит в работу
- Анализ требований и выбор подходящего SDK.
- Проектирование архитектуры: frontend-виджет, backend-эндпоинты, webhooks.
- Реализация интеграции с генерацией подписи, созданием встреч, обработкой событий.
- Тестирование на всех этапах (unit, integration, e2e).
- Развёртывание на вашем сервере или Vercel.
- Документация и обучение вашей команды.
- Пост-релизная поддержка 2 недели.
Процесс работы: этапы с примерными сроками
| Этап | Длительность (Meeting SDK) | Длительность (Video SDK) |
|---|---|---|
| Аналитика | 1 день | 2 дня |
| Проектирование | 1 день | 2 дня |
| Реализация | 2 дня | 5 дней |
| Тестирование | 1 день | 2 дня |
| Деплой и поддержка | 1 день | 2 дня |
| Итого | от 3 до 5 дней | от 1 до 2 недель |
Сроки
- Meeting SDK + подпись + создание встреч: от 3 до 5 дней.
- Video SDK + кастомный UI + вебхуки: от 1 до 2 недель.
Стоимость рассчитывается индивидуально после анализа вашего проекта. Получите консультацию по интеграции — наши инженеры помогут выбрать подходящий SDK и спланировать работы. Закажите интеграцию сегодня и сэкономьте бюджет.







