Уже более 3 лет мы пытаемся настроить грамотную интеграцию 1С:Предприятие 8 и АТС на базе Asterisk для своего офиса.
Какое бы решение мы ни принимали, мы всегда оказывались с какими-то костылями.
Это очень расстраивало.
Но хорошего интеграционного решения на рынке действительно не было.
Мы пробовали разные продукты, бесплатные и платные, потратив более 10 тысяч рублей, но счастье не пришло.
Если хочешь, чтобы все было хорошо, сделай это сам
Собственно, после очередной неудачной попытки идея сделать все с нуля самостоятельно захватила наше сознание, тем более, что реализация была на самой поверхности, оставалось только взяться и сделать.Мы решили, что лучше всего создать универсальное решение, не привязанное к конкретной задаче 1С.
Нам нужен «прозрачный прокси» от 1С до Астериска и обратно, с помощью которого в будущем мы соберем панель телефонии нашей мечты, о которой мы мечтали уже 3 года.
Технология NativeAPI
Платформа 1С:Предприятие 8 допускает подключение внешних модулей в виде динамических библиотек, однако к самим библиотекам предъявляются особые требования.По требованиям 1С библиотека должна быть разработана с использованием технологии NativeAPI. Собственная технология API – собственный интерфейс системного программирования 1С:Предприятие 8. Поддерживает операционные системы Windows и Linux, а также дает возможность создавать внешние компоненты, работающие как под одной, так и под другой операционной системой.
Компоненты, созданные с использованием технологии Native API, могут быть подключены в толстом клиенте, в тонком клиенте, в веб-клиенте, во внешнем соединении и на сервере приложений.
Поэтому, вооружившись только что купленным Visual Studo 2010, мы начали погружаться в творческий процесс программирования.
AJAM-интерфейс Asterisk
Около месяца мы изучали различные технологии взаимодействия Asterisk с внешними системами, проводили эксперименты, измеряли производительность и в итоге решили, что «Asynchronous Javascript Asterisk Manger» нам подходит лучше всего.AJAM использует протокол HTTP в качестве транспорта, поддерживает авторизацию Digiest и SSL-шифрование, что повышает безопасность соединения, а также позволяет использовать Asterisk, размещенный в облаке.
Ответы, отправляемые сервером Asterisk, могут быть представлены в виде XML-структур, с которыми очень удобно работать в 1С:Предприятие 8.
Документация для Asterisk и компонента
В Интернете можно найти много разрозненных знаний об Asterisk, но их нет в одном месте, и нам пришлось собрать воедино список команд с описаниями параметров, список ответов.Иногда мне приходилось читать листинги исходного кода Asterisk, чтобы понять, как должна выглядеть та или иная команда и что передавать в параметрах.
Мы решили, что разработка должна быть хорошо документирована, чтобы все методы и функции были описаны в одном месте.
В результате у нас появилась WIKI, в которой мы собрали всю документацию по протоколу Asterisk AMI, а затем на основе этих данных систематизировали описание внутренних функций разрабатываемого компонента.
Что случилось
Как оказалось, хоть решение и лежало на поверхности, вся разработка и написание документации заняла более 3-х месяцев работы нескольких высококвалифицированных специалистов.
В результате после инициализации компонента в 1С становится доступен весь спектр AMI-команд Asterisk, если мне не изменяет память, то всего 103 функции.
Например, инициирование звонка из 1С с номера SIP/26 на городской номер 74952293042 выглядит так: Канал = "SIP/26" Контекст = "из-внутреннего"; Расширение = "74952293042"; Приоритет = «1»; Таймаут = ""; CallerID = "МИКО_Абонент"; Переменная = ""; Аккаунт = "мико"; Приложение = ""; Данные = ""; Асинхронный = "1"; ID действия = "114"; Результат = ""; Component.Originate(Канал, Контекст, Расширение, Приоритет, Таймаут, CallerID, Переменная, Учетная запись, Приложение, Данные, Асинхронный код, ActionID, Результат) Во время активного соединения компонент вызывает внешние обработчики событий в 1С, благодаря чему мы можем улавливать состояние каналов, информацию о вызывающем номере, состоянии очередей и даже управлять маршрутизацией звонков в режиме реального времени.
Новый уровень взаимодействия 1С и Asterisk
В результате мы вышли на новый уровень развития бизнес-решений 1С, интегрированных с телефонией на базе Asterisk. Теперь разработчик 1С может использовать весь доступный функционал АТС в понятной ему среде 1С:Предприятие 8, а функционал решения ограничен только его фантазией.В качестве теста на базе компонента мы разработали «Панель телефонии Asterisk для 1С:CRM», которую используем в нашей компании, добавили функции умной маршрутизации клиента к ответственному менеджеру, используя только логику 1С, научили панель для сохранения записи разговора в документе «Событие», мы проработали механизмы переноса истории звонков из Астериска в 1С, а также управления различными переадресациями и звонками непосредственно из 1С:Предприятие 8. В результате получился достаточно удобный панель телефонии, и после 3 лет метаний мы создали то, что изначально хотели от сторонних разработчиков.
Коммерческий продукт и партнерская сеть
Нам понравилось разрабатывать, описывать и тестировать решение для интеграции 1С и Asterisk. Мы решили не останавливаться на достигнутом и выпустить наш компонент как SDK для разработчиков 1С.Мы начали сертифицировать продукт в компании 1С на статус 1С:Совместимо.
Развитые агентские и партнерские программы.
Демонстрация работы компонента
Ссылки на более подробную информацию
- Общее описание SDK
- Список функций, реализованных в SDK
- Технология внешних компонентов на сайте 1С
- Описание протокола AMI (англ.
)
24 февраля СДК прошел сертификацию по 1С:Совместимость .
В результате мы сделали первое сертифицированное 1С решение для интеграции 1С и Asterisk. Теги: #интерфейс менеджера asterisk #asterisk #1c:enterprise #1c #интеграция сервисов #asterisk #Разработка систем связи
-
Вы Что, Замыкания В Javascript?
19 Oct, 24 -
Реклама На Youtube. Один Из Методов Борьбы
19 Oct, 24 -
Работа С Сенсорным Экраном На Arduino Due
19 Oct, 24 -
Вы Читаете Большие Комментарии?
19 Oct, 24