Показать сообщение отдельно
Старый 26.10.2017, 10:47   #11  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
377 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Ох, столько времени уже прошло... Я уже не помню, как было там, но после этого было еще одно большое внедрение телефонии, и вот что я из него вынес...

По телефонии нет одного единого "правильного" и "абсолютно верного" подхода к интеграции. Все зависит от многих факторов: какой API у сервера телефонии, какой API у софт-фона (клиентского приложения), какая инфраструктура (версии ОС, браузера) и пр....
Кроме того, все очень сильно зависит от требований, предъявляемых к интеграции: кому-то нужно чтобы только карточка поднималась при входящем звонке, а кому-то полное управление с переводами и блэк-джеком.

Могу примерно описать, что я делал при серьезной такой интеграции (с Avaya)… У меня был web-сайт, который общался с сервером телефонии на предмет получения звонков и выполнения вызовов. С помощью SignalR сайт общался с CRM вызывая там JS-команды при поступлении звонка и изменении его статуса. Со-стороны CRM это был чистой воды «unsupport». В файл main.aspx добавил свой JS-файл, отвечающий за подключение к SignalR, а также за интерфейс. Опять же, неподдерживаемыми способами (прямой манипуляцией с DOM), на панель CRM были добавлены кнопки управления звонком. Таким образом, прямого взаимодействия с софт-фоном не было, хотя оператор использовал его для работы (фактически он использовался только чтобы выводить звонок на ПК, все управление звонком осуществлялось через CRM).
Интегрировались с сервером, а не с софт-фоном по той причине, что его API был крайне ограничен.

На стороне CRM неподдерживаемый вариант с внедрением в main.aspx можно было бы заменить на манипуляции с кнопками формы/представления и вставлять нужный код через обработчики кнопок (есть такой извращенный способ). Такой подход можно применить даже в Online-версии, но он показался гораздо сложнее в реализации и менее надежным.

Сейчас, оглядываясь на получившееся решение, жалею, что не продавил вариант с «собственным браузером», т.е. сделать на WPF приложение, вставить туда элемент управления WebBrowser и запускать CRM в нем, а вся телефония при этом была бы в этом WPF-приложении, включая какие-то кастомные окна. Кстати я проверял, CRM прекрасно работает в контроле WebBrowser и приложение имеет доступ к DOM если что. Распространять приложение в корп. сети можно с помощью ClickOnce.
__________________
Моё: Cайт - Код - Dynamics365 Tools
За это сообщение автора поблагодарили: Артем Enot Грунин (5).