официальный партнёр 1С по деловому софту
Закрыть
Логин:
Пароль:
Забыли свой пароль?
  Войти
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
 
8(495)229-30-42

Новый продукт - SDK: Компонента связи 1C и Asterisk

Представляем вам комплект разработчика для интеграции телефонии на базе сервера Asterisk и системой 1С:Предприятия 8. Компонента написана с использованием технологии Native API и реализует прозрачный интерфейс между сервером Asterisk и программами на платформе 1С:Предприятие 8.[spoiler]
Технология Native API – собственный интерфейс системного программирования 1С:Предприятия 8. Она поддерживает операционные системы Windows и Linux, и дает возможность создавать внешние компоненты, работающие как под одной, так и под другой операционной системой. Компоненты, созданные по технологии Native API, могут быть подключены в толстом клиенте, в тонком клиенте, в веб-клиенте, внешнем соединении и в сервере приложений.
Суть работы компоненты заключается в том что она умеет передавать управляющие команды серверу Asterisk и в асинхронном режиме генерировать внешние события в системе 1С:Предприятие 8.

Пример кода осуществления исходящего вызова из 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='&lt;unknown&gt;' 
         //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.

Asterisk 1С
Комплект предназначен в первую очередь для разработчиков программ 1С. В состав комплекта включена компонента и ключ защиты на 10 рабочих мест.
Заказать бесплатную полнофункциональную 30 дневную версию или купить комплект можно в разделе с ценами.