Для реализации такой интеграции любой разработчик сталкивается с двумя задачами.
Первая, звонить из браузера, под клиентской авторизацией но не имея в коде страницы логин и пароль клиента SIPNET.
Вторая, принимать звонки в браузере, так-же под клиентской авторизацией и так-же не имея в коде страницы логин и пароль клиента SIPNET.
Замечание:
- Принимать входящие вызовы не имея приветствий, голосового меню, очередей, обработки расписания и пр. функций ВАТС, пустая затея. Очень скоро вы придете к тому, что это тупиковый путь и начнете встраивать в свою экосистему свою АТС. Тогда придется использовать и API от своей АТС а значит все переделывать. Мы предлагаем свою бесплатную ВАТС со всем нужным функционалом. Она Вам будет не лишней.
Вы всегда можете воспользоваться функциями нашей ВАТС, т.к. мы с самого начала разрабатывали ее как отдельное ПО, пригодное для развертывания на домене клиента, возможно, но не обязательно на серверах клиента, с брендированием под клиента. Правда такая персонализация уже не будет бесплатной.
Способ решения задачи интеграции есть, он применен в виджете для интеграции виртуальной АТС и AmoCRM.
Авторизация делается с помощью ключей API и ID пользователей, которые взаимно прописаны на стороне виртуальной АТС SIPNET и AmoCRM.
Хромает только функциональность "Принимать звонки в браузере" в текущем виджете она не реализована, но ожидается в конце марта 2018 года.
Если Вы реализуете на своей стороне API интеграции аналогичный тому, что реализован у AmoCRM, то сможете использовать виджет от AmoCRM для своих нужд. т.е. как только мы сделаем обновленную версию виджета для AmoCRM, эта же функциональность станет доступна и в Вашей разработке.
Описание API от AmoCRM
Если ограничится функцией "звонить из браузера", то можно воспользоваться функцией "кнопки Fast2Call"
Идентификатор кнопки (data-token) становится авторизационным идентификатором, а номер телефона, на который указывает data-token можно поменять через API для интеграции с CRM.
Работает это так.
Страница с помощью ajax запускает скрипт на корпоративном сервере клиента, скрипт быстро меняет номер, который соответствует коду кнопки.
За это время WebRTC код (скрипт кнопки) на страничке клиента инициирует запрос звонка и к моменту, когда запрос поступает на сервер обработки вызова, кнопка уже настроена звонить на нужный номер.
Весь движок WEBRTC находится в одном файле https://www.sipnet.ru/ximsswrapper.js
Все проекты сипнет (кроме интеграции с AmoCRM) используют этот скрипт.
Код проекта открыт и не сложен для восприятия. Документации пока нет.
Основа это ximsswrapper.js - в этом файле вся мощь и сила РМО и мониторинг РМА.
Самое интересное как всегда в обработчиках событий. В коде обработчика реализовываем особенности поведения и интерфейс своей программы. Задача обработчиков отобразить статусы, показывать/прятать/блокировать кнопки, и подобные вещи. Описание функций обработчиков событий примерно такие.
ximssSession.onXimssCallConnected=function(line, withVideo){ ... } ximssSession.onXimssCallIncoming=function(peer, peerName, isVideo, cid){ ... } ximssSession.onXimssCallDisconnected=function(errorText,line){ ... }
Кроме ximsswrapper.js необходимо подключить еще две обязательные библиотеки ximssclient.js и adapter.js.
Обратите внимание, что библиотека https://www.sipnet.ru/webrtc/detector.js должна находится именно на этом сервере, ее нельзя просто скопировать на свой сервер. Эта библиотека нужна только в особых случаях. Например когда Ваш код должен по разному себя вести, если браузер клиента не поддерживает технологию webrtc.
Для тех, кто заинтересовался, есть тестовый стенд собранный на ximsswrapper.js.
Вы можете посмотреть в качестве примера на https://webrtc.sipnet.ru/webrtc-sipnet/
Описание : https://www.sipnet.ru/bundles/artsoftemain/js/frontend/modules/webrtc_client.js