WebitelModule.js

Исходный код актуальной версии JavaScript библиотеки доступен на github.

Создать объект Webitel

Параметры:

@webitelOption {Object}:

@server {String} - строка соединения к серверу Webitel.

@account {String} - логин пользователя.

@secret {String} - пароль пользователя.

@debug {Bool} - режим отладки.

@reconnect {Int} - время переподключения в секундах, по умолчанию отключено.

@webrtc {Object} - настройки Webrtc.

Webitel(@webitelOption)

Пример
webitel = new Webitel({
	server: 'wss://localhost:6871'
	,account: 'root'
	,secret: 'password'
	,debug: 1
	,reconnect: 5
});

Соединиться с сервером

Пример
webitel.connect();

Работа с доменами

Создать домен

Параметры:

@domainName {String} - домен.
@customerId {String} - CustomerId.
@callback {Function} - callback Функция обратного вызова.

domainCreate(@domainName,  @customerId, @callback).

Пример создания домена
webitel.domainCreate('localhost', '1111111', function(res) {
    if (res.status == 0) {
        // домен успешно создан
        console.info(res.response);
    } else {
        // ошибка при создании домена
        console.error(res.response);
    }
});

Получить список доменов

Параметры:

@domainName {String} - домен (если не задан, список всех доменов).

@callback {Function} - callback Функция обратного вызова.

domainList(@domainName, @callback).

Пример получения списка всех доменов
webitel.domainList(function(res) {
          if (res.status == 1) throw new Error(res.response);
          var table = this.parseDataTable();
          console.info(table.headers.join(' | '));
          for (var key in table.data) {
                 console.info(table.data[key].join(' | '));
          }
})

Удалить домен

Параметры:

@domainName {String} - домен.

@callback {Function} - callback Функция обратного вызова.

domainRemove(@domainName, @callback).

Пример удаления домена.
webitel.domainRemove('localhost', function(res) {
      if (res.status == 1) throw new Error(res.response);
      // домен успешно удален
});

Работа с пользователями.

Список всех устройств и пользователей.

Параметры:

@domain {String} - обязательный для Root пользователя, домен по которому получить список.

@callback {Function} - callback Функция обратного вызова.

list_users(@domain , @callback).

пример
webitel.list_users('10.10.10.22', function(res){
	if (res.status == 1) throw new Error(res.response);
	var table = this.parseDataTable();
	console.info(table.headers.join(' | '));
	for (var key in table.data) {
		console.info(table.data[key].join(' | '));
	}
});


Список пользователей.

Параметры:

@domain {String} - обязательный для Root пользователя, домен по которому получить список.

@callback {Function} - callback Функция обратного вызова.

userList(@domain , @callback).

Создать пользователя.

Параметры:

@role {WebitelUserRoleType} - роль пользователя.

@login {String} - логин(номер) - пользователя.

@password {String} - пароль пользователя.

@domain {String} - домен пользователя.

@callback {Function} - callback Функция обратного вызова.

userCreate(@role , @login, @password , @domain, @callback ).

 

Обновить параметр пользователя.

Параметры:

@user {String} - пользователь которому нужно сменить значение параметра.

@domain {String} - обязательный для Root пользователя, домен пользователя которого нужно обновить.

@paramName {WebitelUserParamType} - название параметра который нужно сменить.

@paramValue {String} - значение параметра.

@callback {Function} - callback Функция обратного вызова.

userUpdate(@user , @domain , @paramName, @paramValue, @callback ).

 

Удалить пользователя.

Параметры:

@user {String} - пользователь которого нужно удалить.

@domain {String} - обязательный для Root пользователя, домен пользователя которого нужно удалить.

@callback {Function} - callback Функция обратного вызова.

userRemove(@user, @domain, @callback ).

 

Информация про текущего пользователя.

Параметры:

@callback {Function} - callback Функция обратного вызова.

whoami(@callback ).


Работа с устройствами.

Список устройств.

Параметры:

@domain {String} - домен по которому получить список.

@callback {Function} - callback Функция обратного вызова.

deviceList(@domain, @callback ).

Создать устройство.

Параметры:

@type {WebitelDeviceType} - тип устройства.

@login {String} - логин(номер) - устройства.

@password {String} - пароль устройства.

@domain {String} - домен устройства.

@callback {Function} - callback Функция обратного вызова.

deviceCreate(@type, @login, @password, @domain, @callback ).

 

Обновить параметр устройства.

Параметры:

@device {String} - устройство которому нужно сменить значение параметра.

@domain {String} - домен устройства которое нужно обновить.

@paramName {WebitelUserParamType} - название параметра который нужно сменить.

@paramValue {String} - значение параметра.

@callback {Function} - callback Функция обратного вызова.

deviceUpdate(@device, @domain, @paramName, @paramValue, @callback ).

 

Удалить устройство.

Параметры:

@device {String} - устройство которое нужно удалить.

@domain {String} - домен устройства которое нужно удалить.

@callback {Function} - callback Функция обратного вызова.

deviceRemove(@device, @domain, @callback ).

 

Управление звонками

Создать звонок.

Параметры:

@number {String} - номер куда нужно позвонить.

@useVideo {Boolean} - использовать видео при звонке Webrtc.

call(@number , @useVideo).

пример
makeCall: function(number) {
	window.webitel.call(number, this.isUseVideo);
}

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

Параметры:

@uuid {String} - идентификатор звонка.

hangup(@uuid).

пример
dropCall: function(call) {
	webitel.hangup(call.id);
}

Ответить на звонок(Webrtc).

Параметры:

@uuid {String} - идентификатор звонка.

@useVideo {Boolean} - использовать видео поток.

answer(@uuid, @useVideo ).

пример
answerCall: function(call) {
	webitel.answer(call.id, this.isUseVideo);
}

Поставить/снять звонок с удержания.

Параметры:

@uuid {String} - идентификатор звонка.

toggleHold(@uuid).

пример
toggleHold: function(call) {
	webitel.toggleHold(call.id);
}

Поставить звонок на удержание.

Параметры:

@uuid {String} - идентификатор звонка.

hold(@uuid).

пример
holdCall: function(call) {
	webitel.hold(call.id);
}

Снять звонок с удержания.

Параметры:

@uuid {String} - идентификатор звонка.

unhold(@uuid).

пример
unholdCall: function(call) {
	webitel.unhold(call.id);
}

 

Отправить DTMF.

Параметры:

@uuid {String} - идентификатор звонка.

@digits {String} - сигнал.

dtmf(@uuid, @digits).

пример
dtmfCall: function(call, digits) {
	webitel.dtmf(call.id, digits);
}

Перевести звонок.

Параметры:

@uuid {String} - идентификатор звонка.

@number {String} - номер звонка на который нужно перевести @uuid звонок.

transfer(@uuid, @number ).

пример
blindTransferCall: function(call, targetAddress) {
	webitel.transfer(call.id, targetAddress);
}

Перевод с консультацией.

Параметры:

@uuid {String} - идентификатор звонка.

@number {String} - номер на который нужно сделать звонок с консультацией.

attendedTransfer(@uuid, @number ).

пример
makeConsultCall: function(call, targetAddress) {
            webitel.hold(call.id, function () {
                window.webitel.attendedTransfer(call.id, targetAddress);
            });
        }

Отмена перевода с консультацией.

Параметры:

@uuid {String} - идентификатор звонка.

cancelTransfer(@uuid).

пример
cancelTransfer: function(currentCall) {
            webitel.cancelTransfer(currentCall.id);
        }

Соединить каналы звонков.

Параметры:

@callAUuid {String} - UUID звонка А.

@callBUuid {String} - UUID звонка B.

bridgeTransfer(@callAUuid , @callBUuid ).

пример
transferCall: function(call) {
            webitel.bridgeTransfer(this.activeCall.id,
                this.consultCall.id);
        }

Список активных каналов.

 

Параметры:

 

@domain {String} - фильтрация по домену (необязательный параметр).

 

@callback {Function} - callback Функция обратного вызова.

 

showChannel(@domain , @callback).

webitel.showChannel(function() {
	console.log(JSON.parse(this.responseText))
})


События звонка

Событие нового звонка.

Параметры:

@param {WebitelCall} - атрибуты звонка.

onNewCall(@param ).

 

Событие поднятия "Трубки".

Параметры:

@param {WebitelCall} - атрибуты звонка.

onAcceptCall(@param ).

 

Событие установки звонка на удержании.

Параметры:

@param {WebitelCall} - атрибуты звонка.

onHoldCall(@param ).

 

Событие снятия звонка с удержания.

Параметры:

@param {WebitelCall} - атрибуты звонка.

onUnholdCall(@param ).

 

Событие DTMF.

Параметры:

@param {Object}:

@call {WebitelCall} - атрибуты звонка.

@digits {String} - digits.

onDtmfCall(@param ).

 

Событие соединения с каналом.

Параметры:

@call {WebitelCall} - атрибуты звонка.

onBridgeCall(@param ).

 

Событие разъединение с каналом.

Параметры:

@call {WebitelCall} - атрибуты звонка.

onUnBridgeCall(@call ).

 

Событие смены UUID звонка.

Параметры:

@param {Object}:

@call {WebitelCall} - атрибуты звонка.

@newId {String} - новый UUID.

onUuidCall(@param).

 

Событие завершения звонка.

Параметры:

@call {WebitelCall} - атрибуты звонка.

onHangupCall(@param).

Событие новой Webrtc сессии.

Параметры:

@param {verto.dialog} - сеcсия Webrtc.

onNewWebRTCCall(@param).

Пример
// Нужно создать видео контейнер для обмена аудио - видео потока, и повашать на session.params.tag
webitel.onNewWebRTCCall(function (session) {
	var video = document.createElement('video');
	video.id = session.callID;
	document.getElementById('ctiPanelMainContainer').appendChild(video);
	session.params.tag = video.id;
});	

 

Событие завершения Webrtc сессии.

Параметры:

@param {verto.dialog} - сеcсия Webrtc.

onDestroyWebRTCCall(@param).

// Удалить контейнер который был создан на событии onNewWebRTCCall
webitel.onDestroyWebRTCCall(function (session) {
	var videoTag = document.getElementById(session.callID);
	if (videoTag) videoTag.remove();
});

 

События сервера

Подписаться на события сервера

Параметры:

@eventName {String} - название события.

@handler {Function} - обработчик события.

@callback {Function} - callback Функция обратного вызова.

onServerEvent(@eventName, @handler, @callback).

Пример
var handleOnNewCallServer = function (e) {
	console.log(e);
};
webitel.onServerEvent('SERVER::CALL-INFO', handleOnNewCallServer, function(res) {
    if (res.status == 1) throw new Error(res.response);
    // Обработка успешного запроса
});

Отписаться от события сервера

Параметры:

@eventName {String} - название события.

@callback {Function} - callback Функция обратного вызова.

unServerEvent(@eventName, @callback).

Пример
webitel.unServerEvent('SERVER::CALL-INFO', function(res) {
    if (res.status == 1) throw new Error(res.response);
    // Обработка 
});

Событие успешного входа

Параметры:

@callback {Function} - функция события.

onConnect(@callback).

Пример
webitel.onConnect(function(){
	console.info('Connected...')
});

Отправить сообщение

Параметры:

@extension {String} - номер абонента.

@text {String} - текст сообщения.

@succeededCb {Function} - обработчик успешной отправки сообщения.

@failedCb {Function} - обработчик не успешной отправки сообщения.

Событие нового сообщения

Параметры:

@text {String} - текст сообщения.


Токен.

Генерация токена.

Параметры:

@password{String} - пароль пользователя.

@callback {Function} - callback Функция обратного вызова.

genToken(@password, @callback)

webitel.genToken('100', function(res) {
	console.log(JSON.parse(res))
});

 

Глобальные константы.

Типы ошибок.

WebitelErrorTypes = {
       Call: 'CALL-ERROR',
       Authentication: 'AUTH-ERROR',
       Agent: 'AGENT-ERROR',
       Connection: 'CONNECTION-ERROR',
       Command: 'COMMAND-ERROR',
       Event: 'EVENT-ERROR'
};

Направление звонка.

WebitelCallDirectionTypes = {
       Inbound: 'inbound',
       Outbound: 'outbound',
       Callback: 'callback'
};

Роль пользователя.

WebitelUserRoleType = {
       Admin: 'admin',
       User: 'user'
};

Тип устройства.

WebitelDeviceType = {
       Sip: 'sip'
};

Параметры пользователя.

WebitelUserParamType = {
       User: 'user',
       Password: 'password',
       Role: 'role'
};

Состояние WebSocket.

ConnectionStatus = {
       Connected: 1,
       Disconnected: 2
};

Тип ответа выполнения команды.

WebitelCommandResponseTypes
       Success: 0,
       Fail: 1
};