Oktell-voice.js

Javascript-плагин для библиотеки Oktell.js, реализующий SIP-софтфон в браузере на основе технологии WebRTC. Позволяет совершать вызовы прямо из браузера.

На данный момент поддерживаются браузеры Chrome и Chromium.

Oktell-voice.js основан на библиотеке JsSIP

Скачать Oktell-voice.js Демо

Зависимости

Oktell-voice.js работает с библиотекой Oktell.js версии 1.5.3 и выше.

Описание и примеры

При использовании Oktell-voice.js в библиотека Oktell.js управляет веб-телефоном. Например, вызов метода oktell.call инициирует звонок из браузера. Также доступны дополнительные методы, например answer, dtmf.

Oktell-voice.js использует технологию WebRTC для передачи голоса. При запросе доступа к микрофону браузеры выводят дополнительную панель, на которой пользователь может разрешить или не разрешить веб-странице доступ к микрофону.

Если страница открыта по http, то браузер будет запрашивать доступ при каждой загрузке страницы. Если по https, то браузер выведет запрос только один раз и запомнит выбор для сайта.

Так как работа библиотеки возможна только если пользователь разрешит ей доступ к микрофону, рекомендуется перед соединением с сервером Oktell вывести запрос доступа с помощью метода oktellVoice.createUserMedia.

Oktell-voice вызывает события mediaPermissionsRequest, mediaPermissionsAccept, mediaPermissionsRefuse при показе панели запроса доступа, разрешении пользователем доступа к микрофону и отказе доступа соответственно. Подписавшись на них можно уведомлять пользователя о необходимости разрешения доступа. Пример:

<script type="text/javascript">
	$(function(){
		var connect = function() {
			oktell.connect({
				url: '192.168.0.1:81',  
				login: 'ivanov.a',  
				oktellVoice: true,  
				password: 'TYW$5hgHW$th',  
				callback: function(data) {
					if ( data.result ) {
						// успешное подключение
					}
				}
			});
		}
		var onMediaRequestSuccess = function(){
			connect();
		}
		var onMediaRequestError = function(){}

		// запрос доступа к микрофону
		oktellVoice.createUserMedia( onMediaRequestSuccess, onMediaRequestError );

		oktellVoice.on('mediaPermissionsRequest', function(){
			// показать попап для уведомления пользователя о необходимости разрешения доступа
		});

		oktellVoice.on('mediaPermissionsAccept', function(){
			// скрыть попап
		});

		oktellVoice.on('mediaPermissionsRefuse', function(){
			// показать попап о невозможности продолжения работы приложения
		});

	});
</script>