Sdk Для Связи Asterisk И 1С:предприятие 8

Уже более 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-х месяцев работы нескольких высококвалифицированных специалистов.



SDK для связи Asterisk и 1С:Предприятие 8

В результате после инициализации компонента в 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С:Совместимо.

Развитые агентские и партнерские программы.



Демонстрация работы компонента



Ссылки на более подробную информацию

обновление.

24 февраля СДК прошел сертификацию по 1С:Совместимость .

В результате мы сделали первое сертифицированное 1С решение для интеграции 1С и Asterisk. Теги: #интерфейс менеджера asterisk #asterisk #1c:enterprise #1c #интеграция сервисов #asterisk #Разработка систем связи

Вместе с данным постом часто просматривают: