Какая самая распространенная система IP-телефонии? Правильно - Asterisk. Какая самая распространенная учетная система? Правильно - 1С. А если их подружить, тогда - профит.
Возможно, статья написана излишне подробно - не обессудьте. Хотелось, чтобы было понятно всем, да и множество важных деталей упустить не хотелось.
Условия.
Начнем "дружить" 1С и Asterisk. Возьмем самый тяжелый случай со стороны 1С - версию 7.7 (версия 8.х в уме), а со стороны Asterisk версию 1.6.2.x.
Чего мы хотим:
- Функцию исходящего звонка из 1С.
- Знать в 1С-е номер звонящего при входящем звонке.
Как будем строить.
У Asterisk-а есть свой API, через который мы и будем подключаться к нему. Называется он AMI - Asterisk Management Interface. Со стороны 1С будем использовать механизм внешних компонент.
Выбор внешней компоненты.
Google в помощь, ищем готовые внешние компоненты. Находим: Asterisk.dll, находим Obeliks, находим VVSAst.dll, находим ROM-Asterisk.dll.
Смотрим, анализируем... Возможно, в будущем захочется развить нашу систему, поэтому смотрим еще и на масштабируемость, наличие универсальных методов отправки команд в Asterisk, на поддержку версии 8.х
Asterisk.dll только для 1С версии 8.х, к тому же у этой ВК нет универсального метода отправки команд в AMI, она может только позвонить и все. Не подходит. :(
Obeliks - ограничения функциональности в шареварной версии. Каждый час перезагрузка, разговор 3 минуты. Снятие ограничений только в платной версии. Не подходит. :(
VVSAst.dll - для версии 7.7 ограничений нет, версия для 8.х платная. Есть универсальные методы отправки команд в AMI. Подходит, но лишь частично.
ROM-Asterisk.dll- полностью свободная и для 7.7 и для 8.х. Есть универсальные методы отправки команд в AMI. Есть мощные средства фильтрации. Полностью подходит.
Подключение внешней компоненты.
Компонента ROM-Asterisk саморегистрирующаяся, загружается через ЗагрузитьВнешнююКомпоненту()
Функция _АстерискЗагрузитьВК() Экспорт;
Попытка
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"ROM-Asterisk.dll");
_Телефония = СоздатьОбъект("AddIn.ROM-Asterisk");
Возврат 1;
Исключение
Сообщить("Не удалось загрузить внешнюю компоненту для связи с Asterisk");
КонецПопытки;
Возврат 0;
КонецФункции
Дальше, нам нужна еще одна предопределенная процедура - ОбработкаВнешнегоСобытия()
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Если Источник="ROM-Asterisk" Тогда
Сообщить(Данные);
КонецЕсли;
КонецПроцедуры
Теперь, нам нужно будет выполнить настройку со стороны Asterisk-а, а уже затем будем продолжать разбираться с 1С.
Файлы обработки:
- 2_1C+Asterisk._Primer_integratsii.rar Для скачивания нужна регистрация
- 1C+Asterisk._Primer_integratsii.rar Для скачивания нужна регистрация