Технология Native API – собственный интерфейс системного программирования 1С:Предприятия 8. Она поддерживает операционные системы Windows и Linux, и дает возможность создавать внешние компоненты, работающие как под одной, так и под другой операционной системой. Компоненты, созданные по технологии Native API, могут быть подключены в толстом клиенте, в тонком клиенте, в веб-клиенте, внешнем соединении и в сервере приложений. |
Пример кода осуществления исходящего вызова из 1С:
Процедура ОригинацияЗвонка() // Название канала, с которого совершается исходящий вызов. Channel ="SIP/261"; // Название контекста для совершения исходящего вызова . Context ="from-internal"; // Номер на который звоним Exten ="74952293042"; // Приоритет звонка, если есть конкуренция Priority ="1"; // Таймаут (в миллисекундах) для соединения с инициатором исходящего вызова. Timeout =""; // Значение CallerID, используемое для совершения исходящего вызова. CallerID ="MIKO"; // Установка переменных канала (максимум 32) Variable =""; // Поле для учета биллинговой информации Account ="miko"; // Команда плана набора, используемая для совершения исходящего вызова Application=""; // Параметры команды плана набора, используемой для совершения исходящего вызова. Data =""; // Если указано “true” исходящий вызов будет производиться асинхронно. Async = Истина; // Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. ActionID ="123123123"; Попытка Результат=""; Компонент.Originate(Channel,Context,Exten,Priority,Timeout,CallerID,Variable,Account,Application,Data,Async,ActionID,Результат); Сообщить("Результат оригинации "+Результат); Исключение Сообщить("Исключение при оригинации. Ошибка:"+ИнформацияОбОшибке()); КонецПопытки; КонецПроцедуры |
Все ответы от астериск приходят в асинхронном режиме в предопределенную процедуру 1С:
Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Источник="MikoAjamEvent" Тогда Если Событие="Dial" Тогда //Входящий звонок до поднятия трубочки //ПРИМЕР ОТВЕТА при внешнем входящем звонке с номера 79265244745 // XML строка в переменной "Данные" //<generic // event='Dial' // privilege='call,all' // sequencenumber='67955' // file='app_dial.c' // line='695' // func='senddialevent' // subevent='Begin' // channel='SIP/multifon-out-00000171' // destination='SIP/263-00000172' // calleridnum='79265244745' // calleridname='MIKOKONTRAGENT' // uniqueid='1322297638.642' // destuniqueid='1322297638.643' // dialstring='263' // /> ИначеЕсли Событие="Bridge" Тогда //2 абонента соеденились и разговаривают //ПРИМЕР ОТВЕТА исходящий звонок с 263 на 04 XML строка в переменной "Данные" //<generic //event='Bridge' //privilege='call,all' //sequencenumber='56804' //file='channel.c' //line='5345' //func='manager_bridge_event' //bridgestate='Link' //bridgetype='core' //channel1='SIP/263-0000014b' //channel2='SIP/04-0000014c' //uniqueid1='1322226827.577' //uniqueid2='1322226827.578' //callerid1='263' //callerid2='04' ///> //Пример ответа Входящий звонок с 79265244742 на мультифонтранк XML строка в переменной "Данные" //<generic // event='Bridge' // privilege='call,all' // sequencenumber='67966' // file='channel.c' // line='5345' // func='manager_bridge_event' // bridgestate='Link' // bridgetype='core' // channel1='SIP/multifon-out-00000171' // channel2='SIP/263-00000172' // uniqueid1='1322297638.642' // uniqueid2='1322297638.643' // callerid1='79265244742' // callerid2='263' // /> ИначеЕсли Событие="Hangup" Тогда //Положили трубку //ПРИМЕР ОТВЕТА XML строка в переменной "Данные" //<generic //event='Hangup' //privilege='call,all' //sequencenumber='53031' //file='channel.c' //line='1901' //func='ast_hangup' //channel='SIP/263-0000013c' //uniqueid='1322225501.546' //calleridnum='263' //calleridname='<unknown>' //cause='16' //cause_txt='Normal Clearing' ///> КонецЕсли; КонецЕсли; КонецПроцедуры |
Asterisk генерирует огромное количество событий. Все они представляют из себя XML структуру, которую очень удобно разбирать встроенным объектом ЧтениеXML.
Процедура OnDial(Данные) ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.УстановитьСтроку(СтрокаХМЛ); Если ЧтениеХМЛ.Прочитать() Тогда channel =XMLУзел.ЗначениеАтрибута("channel"); destination =XMLУзел.ЗначениеАтрибута("destination"); uniqueid =XMLУзел.ЗначениеАтрибута("uniqueid"); destuniqueid =XMLУзел.ЗначениеАтрибута("destuniqueid"); calleridnum =XMLУзел.ЗначениеАтрибута("dialstring"); КонецЕсли; КонецПроцедуры |
На текущий момент работа компоненты протестирована в обычном и управляемом режиме 1С:Предприятия 8, ведется разработка демо-примеров работы в Web клиенте.
Мы активно пишем документацию по использованию компоненты и ее методов, а также пошаговые инструкции по настройке Asterisk на сайте http://wiki.miko.ru/doc
На 1 квартал 2012 года запланирована разработка компоненты под Linux и сертификация на 1C:Совместимо.
Для связи с Asterisk компонент использует протокол HTTPS и механизмы шифрования SSL, что позволяет значительно повысить безопасность взаимодействия 1С:Предприятия 8 и Asterisk.
Комплект предназначен в первую очередь для разработчиков программ 1С. В состав комплекта включена компонента и ключ защиты на 10 рабочих мест.
Заказать бесплатную полнофункциональную 30 дневную версию или купить комплект можно в разделе с ценами.