Книга знаний |
|
1С:Предприятие / Приемы программирования / Внешние компоненты |
|
Мы сняли защиту с полнофункциональной версии и сделали бесплатную Community Edition версию с полным сохранением функционала. | Автор статьи: oleg rizvanov | Редакторы: Последняя редакция №14 от 27.04.12 | История URL: http://kb.mista.ru/article.php?id=887 |
Мы просто сняли всю защиту с полнофункциональной версии и сделали бесплатную Community Edition версию с полным сохранением функционала.
Компонента названа ROM-Asterisk, по аналогии с другими нашими ВК (ROM-Mail, ROM-Chart и т.д.). Внешнюю компоненту можно использовать в коммерческих целях. Если вы хотите зарабатывать на внешней компоненте, то мы будем только рады. В этом случае, нужно просто получить согласие компании Simplit.
Компонента распространяется по принципу "как есть". Ссылка на компанию Simplit (http://simplit.com.ua), как на разработчика внешней компоненты, обязательна.
Внешняя компонента реализует асинхронный неблокируемый сокет, основанный на событиях. Т.е, она способна "промолотить" сколько угодно событий. Внешняя компонента прошла проверку многочисленными внедрениями и успешно трудится в производственной среде многих компаний.
В Asterisk, только в последней версии 10.х начала появляться возможность фильтрации событий AMI. Поэтому, в ROM-Asterisk реализована собственная мощная система фильтрации событий. Можно накладывать как обычный фильтр, так и фильтр с помощью механизма регулярных выражений. Мы не стали изобретать велосипед и использовали библиотеку PCRE для реализации регулярных выражений.
ROM-Asterisk реализована по технологии COM, в полном соответствии с руководством "Технология создания внешних компонент", поэтому будет работать во всех версиях 1С. Исключением является использование в режиме веб-клиента.
Загрузка выполняется стандартно - с помощью методов ЗагрузитьВнешнююКомпоненту и ПодключитьВнешнююКомпоненту.
События, полученные внешней компонентой, передаются в 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 года
Описание
| Рубрикатор
| Поиск
| ТелепатБот
| Захваченные статьи
| Установки
| Форум
|