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