— Связь – она как воздух, никто ее не замечает, пока кто-нибудь не испортит!
Армейская истина
— Не звоните, и не звонимы будете.
Автор неизввестен
Телефонами пользуются все. Это уже аксиома не нуждающаяся в доказательствах. И когда встал вопрос, что телефонные звонки надо фиксировать в системе учета, то это не вызвало отторжения. а вот задуматься заставило.
Итак, исходные данные: Система Учета задач Task и Asterisk. Варианты на рынке присутствуют, например Мико. Но реализация внешними компонентами через WebSocket несколько напрягла. Да и дороговато как-то. Ну а уж когда системный администратор узнал, что для работы нужно открывать AMI в Asterisk, то сначала он побледнел, потом покраснел, а потом стал шипеть такое, что здесь я повторить не могу, потому как в этом шипении даже предлоги были нецензурными. В общем когда встал вопрос, что открытие AMI можно реализовать только через труп сисадмина, решили поискать альтернативы, поскольку человеколюбие – это наш основополагающий принцип.
Анализ логов Asterisk? Тоже как-то криво. Если ничего не происходило, то чего их анализировать, а если нагрузка большая, то пока анализируем, что-то может еще произойти. Да и опять же системного администратора мучить с доступами, а он этого не любит.
И прикинув варианты, мы нашли очень изящное, как нам кажется, решение. Поскольку события генерятся на стороне Asterisk, то пусть он и заставляет что-то делать в 1С по этим событиям. Благо 1С чудесно кушает http-запросы. Конечно сисадмину пришлось немного напрячься, но в результате в нашей 1С появились звонки с привязкой к контрагенту. Потом добавили дополнительный справочник Контакты. Это не критично, но порой очень удобно. Поскольку обработка происходит на сервере, а информацию надо дать клиенту 1С, то задействовали функционал Системы Взаимодействия, благо она у нас к тому времени уже использовалась.
Все эта балалайка работает следующим образом.
Asterisk на каждый звонок формирует http-запрос вида:
“?event=$1&uniqueid=$2&src=$3&callerid=$4&exten=$5”.
В момент звонка формируется event=dialbegin. По связке src и callerid мы определяем направление звонка и надо ли его вообще фиксировать в 1С. Изначально так устроено, что в системе фиксируются только внешние звонки. Телефоны сотрудников заносятся в стандартный справочник сотрудников (который на БСП).
По окончанию звонка формируется запрос вида:“?event=$1&uniqueid=$2&callstat=$3&peerstat=$4&ringtime=$5&answertime=$6&dst=$7”.
По uniqueid мы заполняем статус звонка, длительность, время ожидания. Если телефон внешнего абонента зафиксирован в 1С у контрагента, то соответственно звонок привязывается к контрагенту.
Таким образом мы получаем в системе учета журнал звонков с возможностью занести какую-то дополнительную информацию, создать задачу, перезвонить или прослушать разговор. Ну и периодически делать отчеты по звонкам, дабы что-то там анализировать и даже повышать. Получилось вроде неплохо.
Скриншоты работы
Плюсы
- Бесплатность. Никаких внешних компонент.
- Реализовано, как расширение. После доработки можно использовать в любой конфигурации, включая типовые.
- Спокойный сон сисадмина. AMI закрыто. Нет сотен открытых вебсокетов, никто на его любимый сервер не лазит.
- В случае необходимости можно допилить напильником до нужной формы.
Решение реализовано как расширение к конфигурации Task, но его достаточно просто адаптировать под любую другую конфигурацию. Если есть проблемы с данным вопросом, мы готовы сделать это для Вас. Так же в случае нужды поможем с настройкой АТС.