Встраивание комнаты Speak через iframe
Комнату Speak можно встроить через iframe в любую веб-страницу: сайт, платформу обучения, личный кабинет или веб-приложение. Участники подключаются к встрече прямо там и не уходят на другой сайт.
Для этого не нужны API и настройки в Kinescope — достаточно ссылки на комнату и фрагмента HTML-кода.
Кому подходит эта статья
- Онлайн-школам и платформам обучения — нужно проводить занятие прямо на странице курса
- Организаторам мероприятий — нужно, чтобы встреча шла на странице события, а не по внешней ссылке
- Разработчикам — нужно добавить видеовстречи в личный кабинет или веб-приложение
Как встроить комнату
- Скопируйте ссылку на комнату. Откройте комнату и скопируйте адрес из адресной строки. Во время встречи ссылка есть и в самой комнате: наведите курсор на название комнаты в левом верхнем углу и нажмите значок копирования в строке «Ссылка». Ссылка выглядит так:
https://speak.kinescope.io/jqi-qhua-glk. Через API ссылку и код комнаты возвращают поляlinkиcodeв ответеGET /v1/speak/rooms— смотрите справочник API. - Вставьте код на страницу и подставьте в
srcссылку на свою комнату:
<iframe
src="https://speak.kinescope.io/jqi-qhua-glk"
allow="camera; microphone; display-capture; fullscreen; autoplay; clipboard-write"
style="width: 100%; height: 100vh; min-height: 640px; border: 0;"
></iframe>
- Откройте страницу и проверьте встречу: включите камеру и микрофон на экране входа, войдите в комнату и попробуйте показать экран. Когда участник выходит из встречи, во фрейме остаётся экран «Вы вышли из встречи» с кнопкой «Вернуться».
allow обязателен. Без него комната откроется, но браузер не даст ей камеру, микрофон и показ экрана — участник увидит «Камера недоступна» или просьбу разрешить камеру и микрофон.Что разрешает атрибут allow
Браузер по умолчанию не пускает встроенную страницу к камере и другим устройствам. Атрибут allow перечисляет, что можно комнате Speak.
| Разрешение | Для чего нужно |
|---|---|
camera | Камера участника |
microphone | Микрофон участника |
display-capture | Показ экрана |
fullscreen | Кнопка «Во весь экран» |
autoplay | Автовоспроизведение звука и видео других участников |
clipboard-write | Копирование ссылки на встречу |
Firefox пропускает autoplay и clipboard-write и пишет об этом предупреждение в консоль. Это нормально: камера, микрофон и показ экрана работают.
Требования к странице
- Только HTTPS. Камера и микрофон работают только на защищённых страницах. Если страница открыта по HTTP, вместо комнаты будет ошибка. Для локальной проверки подойдёт
http://localhost. - Размер фрейма. Экран входа целиком помещается во фрейм от 1024×640 пикселей. В более узком фрейме он перестраивается в одну колонку, и превью камеры может не поместиться по высоте. Удобнее всего отдать фрейму всю ширину страницы и высоту окна, на телефоне — весь экран.
- Заголовки безопасности не мешают фрейму. Если на сайте настроены
Content-Security-Policy,Permissions-Policyили изоляция страницы (Cross-Origin-Embedder-Policy), проверьте их по ответу «Почему фрейм не загружается?». - Без
sandbox. Атрибутsandboxу iframe лучше не ставить. Если без него нельзя, добавьте в негоallow-scripts allow-same-origin allow-forms allow-popups: безallow-same-originвместо комнаты будет пустой экран.
Вход организатора
Во фрейме Speak не узнаёт владельца комнаты: даже если вы вошли в Kinescope, на экране входа будет «Вы участник», а не «Вы организатор». Браузер не передаёт данные входа во фрейм, встроенный на чужой сайт, поэтому во фрейме все заходят как участники.
Как провести встречу:
- Организатор заходит по прямой ссылке, а участники — через ваш сайт. Откройте
https://speak.kinescope.io/<код комнаты>в отдельной вкладке: там у вас будут права организатора — запись, управление доступом и зал ожидания. - Ведущий заходит через ваш сайт по ссылке с токеном. Ваш сервер подписывает JWT-токен с ролью
admin, и вы подставляете вsrcссылку видаhttps://speak.kinescope.io/jqi-qhua-glk?token=<токен>. Роль приходит вместе со ссылкой, а не из данных входа. Как подписать токен — в статье «Ссылка для входа в Speak с ролью администратора».
Если в комнате включён зал ожидания, участники из фрейма ждут с сообщением «Организатор видит ваш запрос — ожидайте». Впустить их может только организатор, который уже в комнате: список участников → «Ожидают входа» → «Впустить».
На телефоне и планшете
На мобильных устройствах во фрейме сначала появляется экран «Больше возможностей — в приложении» со ссылками на магазины приложений и кнопкой «Продолжить в браузере».
- Чтобы подключиться на сайте, нажмите «Продолжить в браузере» — откроется экран входа, камера и микрофон работают во фрейме. Выбор запоминается на неделю.
- Чтобы поставить приложение, откройте ссылку на комнату в браузере напрямую. Внутри фрейма ссылки на App Store, Google Play и RuStore могут не открыться: магазины запрещают показ своих страниц во фреймах.
Что во фрейме работает иначе
- Запрос доступа к камере — от имени вашего сайта. В Chrome в окне запроса будет домен вашей страницы, а не Kinescope.
- «Картинка в картинке» в Chrome не открывается. Пункт есть в меню «три точки», но по нажатию ничего не происходит: Chrome разрешает такое окно только странице, открытой напрямую, а не во фрейме. Если режим нужен — откройте комнату по прямой ссылке.
- Шумоподавление RNNoise не работает. Его можно выбрать в «Настройки» → «Аудио» → «Шумоподавление», но звук пойдёт без этой обработки. WebRTC AEC (стоит по умолчанию) и DPDFNet (16k) во фрейме работают.
- Ссылка на встречу в комнате — прямая. В строке «Ссылка» во всплывающем окне у названия комнаты стоит и копируется адрес на
speak.kinescope.io, а не адрес вашей страницы. Если участники должны заходить через сайт, отправляйте им ссылку на свою страницу.
Решение проблем
Почему Speak пишет «Камера недоступна», хотя доступ к камере в браузере разрешён?
Так Speak показывает, что браузер не пускает фрейм к устройствам. Вместо «Камера недоступна» может быть просьба «Разрешите Kinescope использовать вашу камеру и микрофон».
Проверьте по порядку:
- Атрибут
allow— в нём должны бытьcameraиmicrophone. Без них браузер блокирует устройства во фрейме, а в консоли появляетсяPermissions policy violation: camera is not allowed in this document. - Заголовок
Permissions-Policyвашего сайта — если в нём естьcamera=()илиmicrophone=(), атрибутallowне поможет. Разрешите устройства для Speak, например:Permissions-Policy: camera=(self "https://speak.kinescope.io"), microphone=(self "https://speak.kinescope.io"), display-capture=(self "https://speak.kinescope.io"). - Протокол — страница должна открываться по HTTPS.
Почему вместо комнаты пустой тёмный экран?
Фрейм загрузился, но Speak не смог запуститься. Возможные причины:
- Браузер блокирует сторонние файлы cookie. Так по умолчанию работает режим инкогнито в Chrome, а в обычном режиме это включается в настройках конфиденциальности. Во фрейме Speak не получает доступа к хранилищу браузера и не запускается. Участнику нужно разрешить сторонние cookie для
speak.kinescope.ioв настройках браузера или открыть встречу по прямой ссылке. - У iframe есть атрибут
sandboxбезallow-same-origin. Уберитеsandboxили добавьте нужные значения — смотрите требования к странице.
Почему вместо комнаты сообщение об ошибке?
error_boundary ID: …, чаще всего страница открыта по HTTP. На незащищённой странице браузер не даёт доступа к камере и микрофону, и комната не запускается. Переведите страницу на HTTPS.Почему фрейм не загружается?
Если на месте фрейма пустой прямоугольник или ошибка браузера, откройте консоль браузера (F12 → Console) и найдите сообщение:
violates the following Content Security Policy directive: "frame-src …"— политика безопасности сайта не пускает внешние фреймы. Добавьтеhttps://speak.kinescope.ioв директивуframe-srcзаголовкаContent-Security-Policy.net::ERR_BLOCKED_BY_RESPONSE— на странице включена изоляция: заголовкиCross-Origin-Embedder-PolicyиCross-Origin-Opener-Policy. Speak в такую страницу не встраивается. Уберите эти заголовки со страницы встречи или вынесите встречу на отдельную страницу без них.
Почему во фрейме «Вы участник», хотя я владелец комнаты?
Почему участник долго ждёт входа?
Если проблема не решилась, напишите в техническую поддержку: приложите адрес страницы с фреймом, код комнаты, название браузера и скриншот консоли.
Что дальше?
После встраивания комнаты рекомендуем:
- Что такое Speak — возможности видеовстреч, запись и зал ожидания
- Ссылка для входа в Speak с ролью администратора — вход ведущего через ваш сайт по ссылке с JWT-токеном
- Рестриминг в Speak — трансляция встречи на внешние площадки прямо из комнаты
- Диагностика и поддержка — что делать, если со встречей что-то не так
Остались вопросы? Напишите в чат поддержки — специалисты помогут!