Verto - инициация вызова.
Теперь, когда мы имеем Verto клиент зарегистрированный на сервере FS, можно совершать аудио/видео вызовы.
Html интерфейс
Добавим поле ввода и кнопку отправки в html код:
<!--container--> <div class="container"> <h1>Verto - Demo Application</h1> <input type="text" id="number" name="number"/> <button id="make-call">Вызов</button> </div> <!-- /container -->
Привяжем кнопку
Внутри функции bootstrap добавим обработчик нажатия кнопки «Вызов» с коллбэком функции makeCall:
function bootstrap(status) { // ... document.getElementById("make-call").addEventListener("click", makeCall); };
Объявление переменной currentCall
Нам требуется сохранить события сессии, чтобы реагировать на них в процессе вызова. Для этого объявим новую переменную currentCall
в основной функции:
var vertoHandle, vertoCallbacks, currentCall;
Функция для совершения вызова
Создадим функцию makeCall
для коллбэка повешенного на кнопку.
function makeCall() { // Получим значение из поля ввода. var numToDial = document.getElementById("number").value currentCall = vertoHandle.newCall({ // Вызываемый номер. destination_number: numToDial, caller_id_name: 'T.Testov', caller_id_number: '6666', outgoingBandwidth: 'default', incomingBandwidth: 'default', // Вкл. стерео. useStereo: true, // Установите false для выкл. видео. useVideo: true, // Вы также можете назначить любую пользовательскую переменную. // Она будет доступна в диалплане с префиксом 'verto_dvar_'. userVariables: { // Например, приведенная ниже переменная 'email' может быть вызвана в диалплане, как -'verto_dvar_email'. email: 'test@test.com' }, // Использовать укзанный внешним источником кодек для видео. // ПРИМЕЧАНИЕ: Не рекомендуется.. dedEnc: false, // Данные параметры переназначат указанные ранее в vertoHandler . //useMic: 'any', //useSpeak: 'any', }); };
События вызова
Коллбэк onDialogState
используется для отслеживания событий. События отправляются каждый раз при изменении состояния вызова.
// Состояния вызова получаемые от Freeswitch. function onDialogState(dialog) { switch (dialog.state.name) { case "trying": break; case "answering": break; case "active": break; case "hangup": console.log("Причина завершения: " + dialog.cause); break; case "destroy": // Что-то по завершению вызова... break; } if(!currentCall){ currentCall = dialog; } } vertoCallbacks = { onDialogState: onDialogState, // Other callbacks... };
Теперь мы можем инициировать вызов. Далее рассмотрим, как его завершить: Verto: Ответ, отбой, удержание и перевод вызова.
А затем, как получить информацию о событиях других сущностей, таких как телеконференция - Subscribing to the live array.
Документация Freeswitch Verto: WebRTC софтфон