X893

External Component for 1C - Bridge to Asterisk PBX

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

Post your comment

Thanks for your comments

  • Comment

Github
Bitbucket
Codeplex
SF.net
Resume

Subscribe to x893 blog Subscribe to x893 blog