официальный партнёр 1С по деловому софту
Закрыть
Логин:
Пароль:
Забыли свой пароль?
  Войти
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
 
8(495)229-30-42

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

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

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

Технология Native 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С 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:Совместимо. Разработали агентскую и партнерскую программы.

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


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