Книга знаний

1С:Предприятие / Приемы программирования / Внешние компоненты

ROM-Asterisk: Внешняя компонента для интеграции 1С и Asterisk

Мы сняли защиту с полнофункциональной версии и сделали бесплатную Community Edition версию с полным сохранением функционала.Автор статьи: oleg rizvanov | Редакторы:
Последняя редакция №14 от 27.04.12 | История
URL: http://kb.mista.ru/article.php?id=887

Ключевые слова: 1с asterisk, 1с астериск, панель телефонии, ROM-Asterisk, внешняя компонента


Community Edition версия

Мы просто сняли всю защиту с полнофункциональной версии и сделали бесплатную Community Edition версию с полным сохранением функционала.


Внешняя компонента

Компонента названа ROM-Asterisk, по аналогии с другими нашими ВК (ROM-Mail, ROM-Chart и т.д.). Внешнюю компоненту можно использовать в коммерческих целях. Если вы хотите зарабатывать на внешней компоненте, то мы будем только рады. В этом случае, нужно просто получить согласие компании Simplit.


Компонента распространяется по принципу "как есть". Ссылка на компанию Simplit (http://simplit.com.ua), как на разработчика внешней компоненты, обязательна.

Ключевые особенности внешней компоненты


Асинхронный неблокируемый сокет, основанный на событиях

Внешняя компонента реализует асинхронный неблокируемый сокет, основанный на событиях. Т.е, она способна "промолотить" сколько угодно событий. Внешняя компонента прошла проверку многочисленными внедрениями и успешно трудится в производственной среде многих компаний.


Мощная система фильтрации

В Asterisk, только в последней версии 10.х начала появляться возможность фильтрации событий AMI. Поэтому, в ROM-Asterisk реализована собственная мощная система фильтрации событий. Можно накладывать как обычный фильтр, так и фильтр с помощью механизма регулярных выражений. Мы не стали изобретать велосипед и использовали библиотеку PCRE для реализации регулярных выражений.


COM-технология

ROM-Asterisk реализована по технологии COM, в полном соответствии с руководством "Технология создания внешних компонент", поэтому будет работать во всех версиях 1С. Исключением является использование в режиме веб-клиента.


Описание

Свойства:


  • Подключено / Connected - Только чтение - Число - Флаг установленного соединения, 1-соединение установлено, 0-нет

  • Фильтр / Filter - Только чтение - Строка - Обычный строковый фильтр, для поиска вхождения подстроки
  • РегулярноеВыражение / RegEx - Только чтение - Строка - Фильтр на основе регулярного выражения

  • РежимПрослушивания / Listen - Только чтение - Число - Режим прослушивания событий Asterisk AMI, 1-включен, 0-нет
  • Версия / Version - Только чтение - Версия внешней компоненты

Методы:


  • Подключиться / Connect (IP,Port) - установить соединение с сервером Asterisk

  • Отключиться / Disconnect () - разорвать соединение с сервером Asterisk
  • ВыполнитьКоманду / SendCommand (СтрокаКоманды) - выполнить произвольную команду Asterisk AMI

  • РежимПрослушивания / ListenMode (Флаг) - включить/выключить режим прослушивания событий Asterisk AMI, 1-включить, 0-выключить
  • УстановитьФильтр / SetFilter (СтрокаФильтра) - установить обычный фильтр вхождения подстроки

  • УстановитьРегулярноеВыражение / SetRegEx(СтрокаФильтра) - установить фильтр, накладываемый с помощью регулярного выражения PCRE

Использование

Загрузка внешней компоненты


Загрузка выполняется стандартно - с помощью методов ЗагрузитьВнешнююКомпоненту и ПодключитьВнешнююКомпоненту.

Получение событий


События, полученные внешней компонентой, передаются в 1С через стандартный интерфейс IAsyncEvent и доступны в предопределенной процедуре ОбработкаВнешнегоСобытия(Источник,Событие,Данные)

Можно отключить получение событий, для этого достаточно воспользоваться методом РежимПрослушивания(0). Это может пригодиться при реализации исходящего Call-центра, где нужно отдавать команды на оригинацию, а события в этом случае не важны.


При разрыве соединения ОбработкаВнешнегоСобытия получит событие "Disconnect". В демо-примере показано как сделать автоподключение.

Фильтрация на стороне внешней компоненты


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

Пример фильтра


Например, стоит задача получать только события Dial, Bridge и Hangup, причем только для внутреннего номера 902.

Фильтр будет таким:


Dial.{1,}?902|Bridge.{1,}?902|Hangup.{1,}?902

Можно использовать обычный фильтр вхождения подстроки, тогда просто: "902".


Если фильтр не указан, то вы получите все события.

Демо-пример


В демо-примере реализовано самое необходимое и оформлено в виде внешней обработки "ПанельТелефонии" в режиме обычного приложения.

Обработка содержит множество готовых функций. Например, функция преобразования текстовых пакетов в объект Соответствие.


Есть пример обработчиков для событий Dial, Bridge, Hungup. Написать свой обработчик не составит особого труда - просто смотрите пример.

На примере функции Звонить() показано каким образом можно отдавать команды Asterisk-у. Команда Originate, используемая в примере - это всего лишь одна из множества команд, которые вы сможете использовать для управления Asterisk.


Настройка доступа со стороны Asterisk описана в статье "1С+Asterisk. Пример интеграции" Книга знаний: 1С+Asterisk;

Поддержка


Бесплатная поддержка осуществляется в рамках форума компании Simplit.

Развитие


Ближайший пункт из запланированного Roadmap-а:

NativeAPI версия - 4 квартал 2012 года


Ссылки на загрузку


Центр Загрузок: http://simplit.com.ua/index.php/downloads-top-menu
Прямая ссылка: http://simplit.com.ua/index.php/downloads-top-menu/category/3-integration?download=10%3Arom-asterisk
Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2011 | Mista.ru

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