16.12.2014, 15:53 | #1 |
Участник
|
Интеграция с телефонией
Коллеги, подскажите у кого есть такой опыт...
Есть телефония с торчащими наружу веб-сервисами, которые позволяют ей рулить как хочешь. Есть CRM 2013. Нужно, чтобы при поступлении звонка "поднималась" карточка клиента. Программно все довольно просто: регистрируешь в сервисе телефонии колбек-функцию, которая будет вызвана при поступлении звонка. В функцию передается номер звонящего, по нему можно найти данные в CRM. Работа с сервисами ведется через JavaScript. Вопрос в том, где разместить этот код, чтобы он производил регистрацию при запуске CRM и оставался работающим в процессе работы CRM. Самое простое решение - открывать отдельное окно браузера в котором будет работать страничка с кодом интеграции. Но это какое то корявое решение. CRM во-фрейме тоже не запустишь. Какие еще могут быть варианты? |
|
16.12.2014, 16:31 | #2 |
Еда - топливо, Одежда - н
|
дам концепцию
поступает звонок- создается запись звонка в СРМ оператор поднял трубку - даргается из базы запись звонка => открывается новое окно браузера => вставляется ссылка на запись звонка. Как технически сделано не скажу, не вникал но чуток потрудились с этим. ПыСы - астериск
__________________
Все что вам нужно - это мозК Еда - топливо... Одежда - необходимость... |
|
16.12.2014, 16:52 | #3 |
Участник
|
Да концепция то понятна, вся проблема упирается в пункт "даргается из базы запись звонка" - как, кем дергается - вот в чем вопрос.
|
|
16.12.2014, 17:02 | #4 |
Еда - топливо, Одежда - н
|
гЫ) ну тут вам спец по телефонии нужен )
а вообще.... могу продать уже все готовое )))
__________________
Все что вам нужно - это мозК Еда - топливо... Одежда - необходимость... |
|
16.12.2014, 17:05 | #5 |
Участник
|
Спец по телефонии тут не нужен, потому что вопросов к телефонии нет - вопрос к месту размещения кода взаимодействия.
Есть описание вашего готового решения? |
|
16.12.2014, 17:08 | #6 |
Moderator
|
Традиционно, для таких сценариев пишутся настольные приложения - трей агенты. Такой агент работает в фоновом режиме, слушает телефонию и при поступлении вызова делает все остальное.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
16.12.2014, 17:16 | #7 |
Moderator
|
Альтернативно, если вы хотите чтобы решение было целиком в веб, тогда можно посадить код его запуска на правило видимости кнопки на риббоне. Далее, в глобальной переменной окна создается JS объект, который выполняет все необходимые функции. Однако, вам нужно будет как-то следить, чтобы инстансы объекта в соседних окнах не сработали одновременно. Например, можно попробовать следить за фокусом окна.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: ZooY (1). |
17.12.2014, 10:35 | #8 |
Участник
|
Можно серверной частью создавать звонок с уже распределением по операторам, а звонки слушать скриптом по признаку битового поля которое изменяется сразу после поднятия карточки.
|
|
19.12.2014, 16:05 | #9 |
Участник
|
а если звонок не создавать, а открывать форму создания?
кстати в урл передать значения ActivityParty для полей звонка from и to вообще можно? ....бо как-то не хочется лупашить через рест создание всей цепочки активити... АПДЕЙТ вопрос снят и сорри за возможный оффтоп http://msdn.microsoft.com/en-us/library/gg334375.aspx ..придется по старинке кастомными полями. =( Последний раз редактировалось Quodnon; 19.12.2014 в 16:13. Причина: апдейт |
|
26.10.2017, 00:09 | #10 |
Участник
|
Решил поднять тему, так как на данный момент занимаюсь данной задачей в контексте интеграции с Астериском.
Топикстартер в итоге решил задачу? Какой был выбран способ? В моём решении входящие звонки мониторятся настольным агентом (wpf-приложение) с последующим поднятием карточки. А вот как бы вы реализовали звонки по клику на карточке? Сейчас как раз в процессе осмысления. Поделитесь опытом. |
|
26.10.2017, 10:47 | #11 |
Участник
|
Ох, столько времени уже прошло... Я уже не помню, как было там, но после этого было еще одно большое внедрение телефонии, и вот что я из него вынес...
По телефонии нет одного единого "правильного" и "абсолютно верного" подхода к интеграции. Все зависит от многих факторов: какой 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. |
|
|
За это сообщение автора поблагодарили: Артем Enot Грунин (5). |
26.10.2017, 10:53 | #12 |
Участник
|
Перечитал написанное, понял что меня немного в сторону увело...
Собственно, по поводу вопроса про совершение звонков... У меня звонки совершались по нажатию кнопки на форме звонка. Т.е. позвонить без создания записи звонка нельзя - сначала создаете звонок, потом из него звоните. С "позвонить" вообще не было особенных проблем, гораздо сложнее "ответить на звонок". При поступлении звонка создавалась запись "Звонок" и она открывалась. По номеру телефона искался клиент, если он был найден, то просто открывался звонок. Если не найден, то открывался звонок и сразу при его открытии открывалась форма поиска клиента. |
|
26.10.2017, 14:49 | #13 |
Moderator
|
Когда читал, почему-то подумалось: а еще можно было форкнуть Firefox, или Хромиум и добавить функционал туда В любом случае, то что вы описали выглядит довольно круто!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
26.10.2017, 15:32 | #14 |
Moderator
|
На случай если интересно, опишу свой подход к выбору архитектуры. В первую очередь, нужно соблюдать следующие принципы:
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
27.10.2017, 11:04 | #15 |
Kostya Afendikov
|
Цитата:
Сообщение от ZooY
Сейчас, оглядываясь на получившееся решение, жалею, что не продавил вариант с «собственным браузером», т.е. сделать на WPF приложение, вставить туда элемент управления WebBrowser и запускать CRM в нем, а вся телефония при этом была бы в этом WPF-приложении, включая какие-то кастомные окна. Кстати я проверял, CRM прекрасно работает в контроле WebBrowser и приложение имеет доступ к DOM если что. Распространять приложение в корп. сети можно с помощью ClickOnce.
|
|
27.10.2017, 11:18 | #16 |
Участник
|
Почему я говорю про "обертку" для CRM... В описанную реализацию было вложено неимоверное количество труда. Реализовать тоже самое в "обертке" было бы 1) быстрее; 2) проще; 3) получившееся решение было бы проще в понимании и поддержке, было бы задействовано меньше технологий; 4) можно было бы реализовать больше функций (потому что не нужно бороться с платформой); 5) решение не было бы так привязано к конкретной версии CRM.
Третий пункт довольно важный, потому что в получившемся решении некоторые моменты просто сложно объяснить, например магию открытия лукапа поиска клиента при открытии карточки звонка. Так что к вашему списку правил я бы добавил первым пунктом "простота и понятность решения (разработка, развитие и сопровождение)" |
|
27.10.2017, 11:22 | #17 |
Участник
|
Мне кажется что USD относиться все таки к клиентскому обслуживанию, там помимо телефонии еще и обращения (проблемы), вские очереди запросов и тд. и т.п.
Я же говорю только за телефонию, которая годна и маркетинга, например. |
|
30.10.2017, 10:25 | #18 |
Moderator
|
Да, согласен. Внесу в свой список Поддержка не оценит, если вы передадите им "корабль в бутылке", а заказчик попросит покрасить палубу
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|