This component provide access from 1C to Asterisk PBX. Now only base functionality.
Trunk inbound, Ringing, Hangup events and base methods - Agent Login/Logoff/Pause/Unpause and Originate.
Change Global module to register this component in 1C system.
See this post to changes in Asterisk dialplan (extensions.conf)
(use page source if next text not readable)
Перем Asterisk1C Экспорт; . . . Процедура ПриНачалеРаботыСистемы() . . . // Запуск компонента 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") ); Иначе ЗаписьЖурналаРегистрации(Источник + " - " + Событие, УровеньЖурналаРегистрации.Информация, , , Данные ); КонецЕсли; Возврат; КонецЕсли; . . . КонецПроцедуры // ОбработкаВнешнегоСобытия()
0 comment(s) so far