Модуль связи 1С и Asterisk

Модуль связи 1С и Asterisk
Задать вопрос
Наши специалисты ответят на любой интересующий вопрос по услуге

Телефония постепенно переходит на SIP-связь. Интеграция АТС с системой учета или CRM-системой просто необходима любому предприятию для успешного конкурирования на рынке.

Предлагаю вашему вниманию обработку экспорта данных из Asterisk в 1С. 

К сожалению доступен пока только основной функционал, но его достаточно для реализации многих задач. 

Для внедрения модуля необходимо внести изменения в глобальный модуль конфигурации. Код приведен ниже:

Процедура ПриНачалеРаботыСистемы()
   . . .
   // Запуск компонента Asterisk1C
   Попытка
      Asterisk1C = 0;
      ПодключитьВнешнююКомпоненту("Asterisk1C");
      Если Asterisk1C = 0 Тогда
         Попытка
            Asterisk1C = ПолучитьCOMОбъект( , "Asterisk1C");
         Исключение
            Asterisk1C = 0;
         КонецПопытки;
      КонецЕсли;

      Если Asterisk1C = 0 Тогда
         Попытка
            Asterisk1C = ПолучитьCOMОбъект( "", "Asterisk1C");
         Исключение
            Asterisk1C = 0;
            Предупреждение(ОписаниеОшибки());
         КонецПопытки;
      КонецЕсли;

      Если Asterisk1C <> 0 Тогда
         Asterisk1C.Connect("192.168.1.110", 5038, "client1C", "client1c8pass");
         Asterisk1C.AgentLogin("201", "105");
         // Если нужно дождаться завершения входа агента
         Пока Не(Asterisk1C.IsAgentLogin()) Цикл
            Asterisk1C.Sleep(500);
         КонецЦикла;
         // This is for test
         Asterisk1C.AgentPause();
         Asterisk1C.AgentUnPause();
         Asterisk1C.Originate("1234567", "internal", 20);
      Иначе
         Предупреждение("Компонент Asterisk1C не загружен");
      КонецЕсли;
   Исключение
      Asterisk1C = 0;
      Предупреждение(ОписаниеОшибки());
   КонецПопытки;

КонецПроцедуры // ПриНачалеРаботыСистемы()

Процедура ПриЗавершенииРаботыСистемы()
   . . .
   Если Asterisk1C <> 0 Тогда
      Попытка
         Asterisk1C.AgentLogoff();
         // Если нужно дождаться завершения выхода агента
         Пока Asterisk1C.IsAgentLogin() Цикл
            Asterisk1C.Sleep(500);
         КонецЦикла;
         Asterisk1C.Disconnect();
         Asterisk1C = 0;
      Исключение
         Asterisk1C = 0;
         Предупреждение(ОписаниеОшибки());
      КонецПопытки;
   КонецЕсли;
КонецПроцедуры
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
   Если Источник = "Asterisk1C" Тогда
      // Событие – Звонок на зарегистрированного агента
      Если Событие = "Ringing" Тогда
         ЗаписьЖурналаРегистрации(Источник + " - " + Событие,
            УровеньЖурналаРегистрации.Информация,
            ,
            ,
            "From: " + Asterisk1C.GetField(Данные, "CallerID") +
            " To: " + Asterisk1C.GetField(Данные, "CallingNumber")
            );
      Иначе
         ЗаписьЖурналаРегистрации(Источник + " - " + Событие,
            УровеньЖурналаРегистрации.Информация,
            ,
            ,
            Данные
            );
      КонецЕсли;
      Возврат;
   КонецЕсли;
   . . .
КонецПроцедуры // ОбработкаВнешнегоСобытия()

В строках:

Asterisk1C.Connect("192.168.1.110", 5038, "client1C", "client1c8pass");
Asterisk1C.AgentLogin("201", "105");

необходимо указать ваши реквизиты подключения. 
Так же потребуется изменение диалплана на Астериск.

На этом все. Спасибо за внимание!

Если статья оказалась полезной - поделись ссылкой с друзьями - кнопки ниже!

Цель нашей компании - предоставление высококачественных ИТ-услуг предприятиям малого и среднего бизнеса.