Javascript-плагин для библиотеки Oktell.js, реализующий SIP-софтфон в браузере на основе технологии WebRTC. Позволяет совершать вызовы прямо из браузера.
На данный момент поддерживаются браузеры Chrome и Chromium.
Oktell-voice.js основан на библиотеке JsSIP
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>