Интеграция 1С
и Asterisk

— Связь - она как воздух, никто ее не замечает, пока кто-нибудь не испортит!.

Армейская истина

***

— Не звоните, и не звонимы будете. 

Автор неизввестен

Телефонами пользуются все. Это уже аксиома не нуждающаяся в доказательствах. И когда встал вопрос, что телефонные звонки надо фиксировать в системе учета, то это не вызвало отторжения. а вот задуматься заставило.

Итак, исходные данные: Система Учета задач 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, но его достаточно просто адаптировать под любую другую конфигурацию. Если есть проблемы с данным вопросом, мы готовы сделать это для Вас.  Так же в случае нужды поможем с настройкой АТС. 

Скачать расширение (версия 3.1.2.15)

Напишите нам

Готовы к предложениям и сотрудничеству

Телефон: +7 (4922) 47-90-31 
Email: info@infos33.ru

© Copyright ООО "Инфосервис", г. Владимир - All Rights Reserved