Яндекс.Метрика

    Реклама

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

    Более 3-х лет мы пытались настроить грамотную интеграцию 1С: Предприятия 8 и телефонной АТС на базе Asterisk для своего офиса. За какое бы решение мы не брались, всегда получались какие-то костыли. Это очень огорчало. Но на рынке действительно не было нормального решения для интеграции. Перепробовали разные продукты, бесплатные и платные, потратив не один 10-ток тысяч рублей, но счастья не наступало.

    Хочешь, чтобы было сделано хорошо — сделай сам


    Собственно, после очередной неудачной попытки, идея сделать все с нуля самостоятельно, захватила наш ум, тем более, реализация лежала на самой поверхности, необходимо было только взяться и сделать.
    Решили, что лучше всего создавать универсальное решение, не привязанное к конкретной задаче на 1С. Нам нужен «прозрачный прокси» из 1С в Asterisk и обратно, с помощью которого, в будущем, мы соберем свою панель телефонии мечты, о которой 3 года грезили.

    Технология NativeAPI


    Платформа 1С: Предприятие 8 допускает подключение внешних модулей в виде динамических библиотек, однако к самим библиотекам есть специальные требования. По требованиям 1С библиотека должна быть разработана с использованием технологии NativeAPI.

    Технология Native API – собственный интерфейс системного программирования 1С: Предприятия 8. Она поддерживает операционные системы Windows и Linux, и дает возможность создавать внешние компоненты, работающие как под одной, так и под другой операционной системой. Компоненты, созданные по технологии Native API, могут быть подключены в толстом клиенте, в тонком клиенте, в веб-клиенте, внешнем соединении и в сервере приложений.

    Потому мы, вооружившись свежекупленной Visual Studo 2010, начали погружаться в творческий процесс программирования.

    AJAM интерфейс Asterisk


    Около месяца мы изучали различные технологии взаимодействия Asterisk с внешними системами, ставили опыты, меряли производительность и в конце концов решили, что лучше всего нам подходит “Aynchronous Javascript Asterisk Manager”. AJAM в качестве транспорта использует протокол HTTP, поддерживает Digiest авторизацию и шифрование SSL, что повышает безопасность соединения, а также позволяет использовать Asterisk, размещенный в облаке. Ответы, передаваемые сервером Asterisk, могут быть представлены в виде XML структур, с которыми очень удобно работать в 1С: Предприятии 8.

    Документация по Asterisk и компоненте


    В интернете можно найти много разрозненных знаний об Asterisk, но в одном месте их нет, и нам пришлось по частям собирать список команд с описанием параметров, список ответов. Иногда приходилось читать листинги исходного кода Asterisk для того, чтобы понять, как же должна выглядеть та или иная команда и что передавать в параметрах. Мы решили, что разработка должна быть хорошо задокументирована, чтобы все методы и функции были описаны в одном месте. В итоге, у нас появилась WIKI, в которую мы собрали всю документацию по Asterisk AMI протоколу, а затем на основании этих данных систематизировали описание внутренних функций разрабатываемой компоненты.

    Что получилось


    Как оказалось, хотя решение и лежало на поверхности, вся разработка и написание документации заняли более 3-х месяцев работы нескольких высококвалифицированных специалистов.
    В результате, после инициализации компоненты в 1С, становится доступен весь спектр AMI команд Asterisk, если мне не изменяет память, то в общей сложности 103 функции.
    Например, оригинация звонка из 1С c номера SIP/26 на городской 74952293042 выглядит так:

    Channel = «SIP/26»
    Context = «from-internal»;
    Exten = «74952293042»;
    Priority = «1»;
    Timeout = "";
    CallerID = «MIKO_Abonent»;
    Variable = "";
    Account = «miko»;
    Application = "";
    Data = "";
    Async = «1»;
    ActionID = «114»;
    Результат = "";

    Компонент.Originate(Channel, Context, Exten, Priority, Timeout, CallerID, Variable, Account, Application, Data, Async, ActionID, Результат)


    Во время активного соединения компонент вызывает в 1С обработчики внешних событий, благодаря чему, мы можем отлавливать состояние каналов, информацию о звонящем номере, состояние очередей и даже управлять в реальном времени маршрутизацией звонка.

    Новый уровень взаимодействия 1С и Asterisk


    В итоге, мы перешли на новый уровень разработки бизнес решений 1С, интегрированных с телефонией на базе Asterisk. Теперь разработчик 1С может использовать весь доступный функционал АТС в понятной для него среде 1С: Предприятие 8, а функционал решения ограничен лишь его фантазией.
    В качестве пробы, на основе компоненты мы разработали «Панель телефонии Asterisk для 1С:CRM», которую используем в работе нашей компании, добавили функции умной маршрутизации клиента на ответственного менеджера, используя только логику 1С, научили панель сохранять запись разговора в документе «Событие», проработали механизмы передачи истории звонков из Asterisk в 1С, а также управление различными переадресациями и вызовами прямо из 1С: Предприятия 8. Получилась достаточно удобная панель телефонии, и спустя 3 года метаний мы создали то, чего хотели изначально от сторонних разработчиков.

    Коммерческий продукт и партнерская сеть


    Нам понравилось разрабатывать, описывать, тестировать решение интеграции 1С и Asterisk. Мы решили не останавливаться и выпустить нашу компоненту в качестве SDK для разработчиков 1С. Занялись сертификацией продукта в фирме 1С на статус 1C: Совместимо. Разработали агентскую и партнерскую программы.

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




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