Многое зависит от используемой АТС - я работал с серверами Avaya и CallMedia. Обе эти компании предоставили небольшой настольный клиент и DLL, на которую можно ссылаться из кода.
Самая большая проблема заключается в информировании веб-страницы о том, что приложение на панели задач получает событие. Запуск браузера может быть медленным и не очень удобен для обработки вызовов. Лучше держать браузер открытым и получать события.
Компания, в которой я работал, использовала довольно устаревшие технологии, поэтому у них было:
АТС --(XML)-- Клиент панели задач АТС --(COM)-- Наше собственное настольное приложение --(COM)-- ActiveXControl, встроенный в страницу --(Javascript)-- Платформа веб-сайта, обрабатывающая событие по мере необходимости
Как вы можете видеть, это было довольно долго и запутанно. Более элегантным подходом было бы встроить на страницу приложение silverlight/подобное, которое получает события от клиента системного трея (через веб-службу или что-то подобное?)
Вам также необходимо решить вопрос: а) открыто несколько страниц - все ли получают события? и б) замена УАТС в более поздние сроки не требует полной перезаписи.
Когда я уходил из этой компании, мы реализовывали механизм, при котором наше приложение получало сообщения от АТС напрямую через XML. Silverlight контролирует любые/все веб-страницы, зарегистрированные в нашем настольном приложении, через 2-Way WCF. Затем наше настольное приложение отправило соответствующие события на соответствующую страницу.
Некоторые другие вещи, которые следует учитывать: Собираетесь ли вы обрабатывать смешанные каналы? т.е. может ли обработка электронной почты блокировать событие входящего вызова? Если это так, вам нужна какая-то двусторонняя связь, чтобы сказать «Отклонение вызова ...». Вы также должны быть осторожны с тем, в каком состоянии находится телефонный аппарат агента. Если вы перейдете в «доступное» состояние до того, как закончите сохранение данных, вы потенциально можете просмотреть все, прежде чем записывать все. Кроме того, по моему опыту, агенты действительно рады нажимать кнопки на телефоне, а не в вашем приложении, поэтому вам нужно обрабатывать неожиданные изменения статуса.
Также рассмотрите возможность переадресации вызовов - большинство современных АТС позволяют осуществлять перевод вызова таким образом, что идентификатор связан с вызовом, поэтому, если это внутренний перевод, на экране получателей могут отображаться все заметки о вызовах и т. д.
Я могу предоставить больше информации, если вы можете уточнить, что такое PBX/etc. вы используете и какие события вам нужно обрабатывать
События, которые я бы рекомендовал вам обработать как минимум: звонок вызова, ответ на вызов, сброс вызова, перевод вызова
и вы должны иметь возможность поднять: принять вызов, разместить вызов, сбросить вызов, перевести вызов (горячие и холодные переводы, опционально с данными, если они внутренние)
Конечно, это может быть излишним для вашего решения :)
Редактировать: я забыл добавить, что наше решение также обрабатывало регистрацию включения и выключения агентов на телефонном наборе при входе в веб-приложение. переменные, а также ведение таблицы поиска user->extension #
person
Basic
schedule
13.08.2010