Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

SIP звонок на мобильный телефон является частным случаем звонков между браузером и SIP-устройством, при этом SIP-сервер либо сам предоставляет услуги GSM/PSTN шлюза, либо соединяется с таковым в процессе звонка.

Описание

Поддерживаемые платформы и браузеры

 

Chrome

Firefox

Safari 11

Edge

Windows

+

+


+

Mac OS

+

+

+


Android

+

+



iOS

-

-

+


 

Поддерживаемые протоколы

  • WebRTC
  • RTP
  • SIP

Поддерживаемые кодеки

  • H.264
  • VP8
  • G.711
  • Speex
  • G.729
  • Opus

Поддерживаемые SIP функции

  • DTMF
  • Удержание звонка
  • Перевод звонка

SIP функции управляются при помощи REST API.

Схема работы

Image Added

  1. Браузер начинает звонок с помощью REST-вызова /call/startup
  2. WCS соединяется с SIP-сервером
  3. SIP-сервер соединяется с GSM/PSTN шлюзом
  4. GSM/PSTN шлюз соединяется с телефоном
  5. Браузер и телефон обмениваются аудиопотоками

Краткое руководство по тестированию

1. Для тестирования используем:

  • два SIP-аккаунта;
  • веб-приложение Phone UI для совершения звонка;
  • мобильный телефон для ответа на звонок.

2. Откройте веб-приложение Phone UI. Нажмите Log in и введите данные SIP-аккаунта:

Image Added


3. Введите номер мобильного телефона и нажмите Voice call. Начнется дозвон:

Image Added


4. На экране мобильного телефона отображается входящий вызов:

Image Added


5. Примите звонок на мобильном телефоне:

Image Added


6. В браузере также отображается установленное соединение

Image Added

7. Для завершения звонка нажмите кнопку "Hangup".

Последовательность выполнения операций (Call Flow)

Ниже описана последовательность вызовов при использовании примера Phone для создания звонка

Phone.html

Phone.js

Image Added


1. Создание звонка:

session.createCall(), call.call() code

Code Block
languagejs
themeRDark
    var outCall = this.session.createCall({
        callee: callee,
        visibleName: this.sipOptions.login,
        localVideoDisplay: this.localVideo,
        remoteVideoDisplay: this.remoteVideo,
        constraints: constraints
        ...
    });

    outCall.call();


2. Установка соединения с SIP-сервером

3. Установка соединения с GSM/PSTN шлюзом

4. Установка соединения с мобильным терминалом

5. Получение подтверждения от GSM/PSTN шлюза

6. Получение подтверждения от SIP-сервера

7. Получение от сервера события, подтверждающего успешное соединение.

CallStatusEvent ESTABLISHED code

Code Block
languagejs
themeRDark
    var outCall = this.session.createCall({
        callee: callee,
        visibleName: this.sipOptions.login,
        localVideoDisplay: this.localVideo,
        remoteVideoDisplay: this.remoteVideo,
        constraints: constraints
        ...
    }).on(CALL_STATUS.ESTABLISHED, function(call){
        me.callStatusListener(call);
        ...
    });

    outCall.call();


8. Стороны звонка обмениваются аудиопотоком

9. Завершение звонка

call.hangup() code

Code Block
languagejs
themeRDark
Phone.prototype.hangup = function () {
    trace("Phone - hangup " + this.currentCall.id() + " status " + this.currentCall.status());
    this.hideFlashAccess();
    if (this.currentCall.status() == CALL_STATUS.PENDING) {
        this.callStatusListener(this.currentCall);
    } else {
        this.currentCall.hangup();
    }
    this.flashphonerListener.onHangup();
};


10. Отправка команды на SIP-сервер

11. Отправка команды на GSM/PSTN шлюз

12. Получение подтверждения от GSM/PSTN шлюза

13. Получение подтверждения от SIP-сервера