Інтеграція Whereby для вбудованих відеодзвінків на сайті

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція Whereby для вбудованих відеодзвінків на сайті
Проста
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція Whereby Embedded для відеозвонків на веб-сайті

Whereby Embedded — найпростіший спосіб додати відеозвонки: ви створюєте комнату через API, вставляєте <whereby-embed> веб-компонент в HTML — і готово. Без ручного WebRTC, без клієнтських SDK.

Створення комнати через API

async function createWherebyRoom(params: {
  endDate?: Date;
  roomMode?: 'normal' | 'group';
  roomNamePrefix?: string;
}): Promise<{ roomUrl: string; meetingId: string; hostRoomUrl: string }> {
  const response = await fetch('https://api.whereby.dev/v1/meetings', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.WHEREBY_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      endDate: (params.endDate ?? new Date(Date.now() + 2 * 60 * 60 * 1000)).toISOString(),
      roomMode: params.roomMode ?? 'normal',
      roomNamePrefix: params.roomNamePrefix,
      fields: ['hostRoomUrl'],
    }),
  });

  const meeting = await response.json();
  return {
    roomUrl: meeting.roomUrl,
    meetingId: meeting.meetingId,
    hostRoomUrl: meeting.hostRoomUrl,  // для організатора — з доп. правами
  };
}

Вставлення через веб-компонент

// Нативний HTML — без будь-яких npm-залежностей
function WherebyCall({ roomUrl, displayName }) {
  return (
    <div style={{ height: 600 }}>
      <whereby-embed
        room={roomUrl}
        displayName={displayName}
        minimal
        background="off"
        chat="on"
        screenshare="on"
        style={{ width: '100%', height: '100%', border: 'none', borderRadius: 12 }}
      />
    </div>
  );
}

// У Next.js — додати type declaration
declare global {
  namespace JSX {
    interface IntrinsicElements {
      'whereby-embed': React.DetailedHTMLProps<
        React.HTMLAttributes<HTMLElement> & {
          room: string;
          displayName?: string;
          minimal?: boolean | string;
          chat?: 'on' | 'off';
          screenshare?: 'on' | 'off';
          background?: 'on' | 'off';
        },
        HTMLElement
      >;
    }
  }
}

Скрипт Whereby завантажується через CDN — додати в <head>:

<script type="module" src="https://cdn.srv.whereby.com/embed/v2-embed.esm.js"></script>

Premeeting екран

Whereby за замовчуванням показує екран перевірки медіа перед входом. Для вимкнення:

<whereby-embed room={roomUrl} skip-media-permission-prompt />

Події веб-компонента

const containerRef = useRef<HTMLElement>(null);

useEffect(() => {
  const el = containerRef.current;
  if (!el) return;

  const onJoin = () => console.log('Joined');
  const onLeave = (e: CustomEvent) => {
    console.log('Left after', e.detail.participantId);
    onCallEnd?.();
  };

  el.addEventListener('ready', onJoin);
  el.addEventListener('leave', onLeave);

  return () => {
    el.removeEventListener('ready', onJoin);
    el.removeEventListener('leave', onLeave);
  };
}, []);

Терміни

Базова інтеграція Whereby з створенням комнати та веб-компонентом — 0.5–1 день.