Интеграция 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 и спланировать работы. Закажите интеграцию сегодня и сэкономьте бюджет.







