Інтеграція SIP-телефонії на сайт

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

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція SIP-телефонії на сайт
Середня
~2-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

Інтеграція SIP-телефонії на веб-сайт

SIP (Session Initiation Protocol) — стандартний протокол для IP-телефонії. Інтеграція SIP-телефонії з веб-сайтом дозволяє приймати і робити звонки безпосередньо з браузера через WebRTC, пов'язувати звонки з замовленнями та клієнтами, вести історію звернень.

Архітектура SIP-інтеграції

Браузер (WebRTC) ←→ SIP Gateway (Asterisk/FreeSWITCH) ←→ SIP-провайдер ←→ ТСОП
                                   ↑
                              API сайту (події, аналітика)

SIP-клієнт у браузері працює через WebRTC, SIP Gateway конвертує WebRTC в SIP, далі звонок йде по звичайних SIP-каналах.

SIP.js — клієнт для браузера

// npm install sip.js

import { UserAgent, Inviter, SessionState } from 'sip.js';

const ua = new UserAgent({
    uri: UserAgent.makeURI('sip:[email protected]'),
    transportOptions: {
        server: 'wss://sip.yourpbx.ua:8089/ws'
    },
    authorizationUsername: sipLogin,
    authorizationPassword: sipPassword
});

await ua.start();

// Здійснити звонок
const target = UserAgent.makeURI('sip:[email protected]');
const inviter = new Inviter(ua, target);

inviter.stateChange.addListener((state) => {
    if (state === SessionState.Established) {
        // Звонок встановлений
    }
    if (state === SessionState.Terminated) {
        // Звонок завершений
    }
});

await inviter.invite();

Кнопка Click-to-Call

На сторінці замовлення або картці клієнта — кнопка "Позвонити":

document.getElementById('call-btn').addEventListener('click', async () => {
    // Запросити дозвіл на мікрофон
    const stream = await navigator.mediaDevices.getUserMedia({ audio: true });

    const inviter = new Inviter(ua, UserAgent.makeURI(`sip:${phoneNumber}@pbx.ua`));
    await inviter.invite({
        sessionDescriptionHandlerOptions: {
            constraints: { audio: true, video: false }
        }
    });
});

Попап при вхідному звонку

При вхідному звонку через PBX webhook — показати попап з даними клієнта:

// PBX відправляє webhook при вхідному
Route::post('/webhooks/pbx/call', function (Request $request) {
    $callerPhone = $request->caller_number;

    // Знайти клієнта за номером
    $customer = Customer::where('phone', $this->normalizePhone($callerPhone))->first();

    // Push через WebSocket до менеджера
    broadcast(new IncomingCallEvent($callerPhone, $customer));
});

На фронті: Echo.private('agent.{id}').listen('IncomingCallEvent', ...) — відображає попап з історією клієнта ще до відповіді на звонок.

Запис розмов

При використанні Asterisk або FreeSWITCH — записи зберігаються у WAV/MP3, шлях до файлу передається через AMI/ESL. Файл копіюється на S3, посилання зберігається у call_records:

call_records (
  id, call_id, customer_id, agent_id,
  started_at, duration_sec,
  recording_url, disposition: answered | noanswer | busy
)

Тривалість розробки: 2–3 тижні для повної інтеграції з SIP-клієнтом у браузері, click-to-call та попапом при вхідному звонку.