Инструменты пользователя

Инструменты сайта


doc:1cajam:thik

Запуск компоненты mikoajam в режиме толстого клиента

Процедуры инициализации, логина и логофа

Перем Компонент Экспорт; // объявляем глобальную переменную для компонента
 
Процедура Инициализация() // подключаем компонент
        Попытка
		ИмяФайла="C:\mikoAjam.dll";
                ПодключитьВнешнююКомпоненту(ИмяФайла,"Comp" ,ТипВнешнейКомпоненты.Native);
		Компонент = Новый ("AddIn.Comp.MikoAjam");
	Исключение
		Сообщить("Исключение при инициализации");
	КонецПопытки; 
КонецПроцедуры
 
Процедура Логин() //авторизуемся на сервере Asterisk
        Попытка
                Компонент.Хост 	   = "nash.asterisk.ru";       // адрес сервера астериск с опубликованным ajam интерфейсом
		Компонент.Порт 	   = "8088";                   // порт опубликованного ajam интерфейса
		Компонент.Таймаут  = 5;                        // время в секундах на ожидание ответа Asterisk, по умолчанию 5 секунд.
		Компонент.РежимSSL = Ложь;                     // режим SSL шифрования пакетов
		result="";
		Компонент.Login(МенеджерЛогин,МенеджерПароль,result);
                Сообщить("Результат авторизации "+result);
	Исключение
		Сообщить("Исключение при установке параметров логина "+ИнформацияОбОшибке());
	КонецПопытки; 
КонецПроцедуры
 
Процедура Логофф() //разрываем соединение
	Попытка
		Результат="";
		Компонент.Logoff(Результат);
	Исключение
		Сообщить("Исключение при разлогинивании");
	КонецПопытки; 
КонецПроцедуры

Простейшая команда Ping

Процедура Ping() 
	Попытка
		respose ="";
		Результат=Компонент.Ping(respose);
                Сообщить("Результат пинга "+Результат+". Ответ asterisk "+respose );		
	Исключение
		Сообщить("Исключение при пинге");
	КонецПопытки; 
КонецПроцедуры

Звонок абонента A, абоненту Б.

Процедура Originate()
 
	Channel		=	КаналАбонентаA;	//	Channel: Название канала, с которого совершается исходящий вызов (В том же формате, как если бы Вы совершали вызов этому абоненту командой Dial.)
	Context		=	Контекст;	//	Context: Название контекста для совершения исходящего вызова (используется только совместно с параметрами Exten и Priority)
	Exten		=	НомерАбонентаБ ;//	Exten: Extension to use on connect (используется только совместно с параметрами Context и Priority)
	Priority	=	"1";		//	Priority: Priority to use on connect (используется только совместно с параметрами Context и Exten)
	Timeout		=	"";		//	Timeout: Таймаут (в миллисекундах) для соединения с инициатором исходящего вызова (значение по умолчанию: 30000 миллисекунд).
	CallerID	=	"MIKO_Abonent";	//	CallerID: Значение CallerID, используемое для совершения исходящего вызова.
	Variable	=	"";		//	Variable: Установка переменных канала (максимум 32). Переменные будут установлены для обоих каналов, участвующих в соединении (локального, для абонента от которого совершается вызов и для вызываемого канала).
	Account		=	"miko";		//	Account: Значение для “Account code” исходящего вызова.
	Application	=	"";		//	Application: Команда плана набора, используемая для совершения исходящего вызова (используется параметр “Data”, для указания ее параметров)
	Data		=	"";		//	Data : Параметры команды плана набора, используемой для совершения исходящего вызова.
	Async		=	"1";		//	Async: Если указано “true” исходящий вызов будет производиться асинхронно. Результат ее выполнения будет возвращен позже, в пакете типа “Event” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды, совершающей исходящий вызов)
	ActionID	=	"123123123";	//	ActionID: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно.
 
	Попытка
		Результат="";
		Компонент.Originate(Channel,Context,Exten,Priority,Timeout,CallerID,Variable,Account,Application,Data,Async,ActionID,Результат);
   	        Сообщить("Результат оригинации "+Результат);
	Исключение
		Сообщить("Исключение при "+Элемент.Имя+" ошибка:"+ИнформацияОбОшибке());
	КонецПопытки; 
 
КонецПроцедуры

Пример обработчика внешних событий

//Срабатывает на каждое внешнее событие тут будем мониторить входящие звонки
Процедура ВнешнееСобытие(Источник, Событие, Данные)
 
	Если Источник="MikoAjamEvent" Тогда		
 
		Если Событие="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' 
			///>
 
		ИначеЕсли Событие="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'
			// />				
		ИначеЕсли Событие="Unlink" Тогда 
			//ПРИМЕР ОТВЕТА XML строка в переменной "Данные"
			// <generic 
			// event='Unlink' 
			// privilege='call,all' 
			// channel1='SIP/263-000000e0' 
			// channel2='SIP/17-000000e1' 
			// uniqueid1='1322828367.324' 
			// uniqueid2='1322828367.325' 
			// callerid1='263'
			// callerid2='17'
			// />	
 
		ИначеЕсли Событие="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'
			// />
		ИначеЕсли Событие="Newchannel" Тогда
			//ПРИМЕР ОТВЕТА Звоню с номера 263 на номер 17 XML строка в переменной "Данные"
			//<generic
			// event='Newchannel'
			// privilege='call,all'
			// sequencenumber='83247'
			// file='channel.c'
			// line='978'
			// func='__ast_channel_alloc_ap'
			// channel='SIP/263-000001ca'
			// channelstate='0'
			// channelstatedesc='Down'
			// calleridnum='263'
			// calleridname='device'
			// accountcode=''
			// exten='17'
			// context='from-internal'
			// uniqueid='1322315915.748' />
			// />
 
			//ПРИМЕР ОТВЕТА Звоню с номера 74997623634 на номер 229-30-42 оператора МАНГО XML строка в переменной "Данные"
			//<generic 
			//event='Newchannel' 
			//privilege='call,all' 
			//channel='SIP/mangotrunk-0000016b'
			//channelstate='0'
			//channelstatedesc='Down' 
			//calleridnum='74997623634'
			//calleridname='74997623634'
			//accountcode='' 
			//exten='info'
			//context='from-trunk-sip-mangotrunk'
			//uniqueid='1323941846.598' />
		ИначеЕсли Событие="Cdr" Тогда	
		ИначеЕсли Событие="ReceiveFAX" Тогда				
			//ПРИМЕР ОТВЕТА получаем факс XML строка в переменной "Данные"
			//<generic
			// 	event='ReceiveFAX'
			// 	privilege='call,all'
			// 	sequencenumber='508724'
			// 	file='res_fax.c'
			// 	line='1654'
			// 	func='receivefax_exec'
			// 	channel='SIP/mangotrunk-00000a37'
			//	context='ext-fax'
			//	exten='s'
			//	callerid='A16551705P1'
			//	remotestationid='(null)'
			//	localstationid='(null)'
			//	pagestransferred='0'
			//	resolution='(null)'
			//	transferrate='(null)'
			//	filename='/var/spool/asterisk/fax/1322812029.3901.tif'
			//	/>
 
		ИначеЕсли Событие="SendFAX" Тогда				
			//ПРИМЕР ОТВЕТА отправляем факс XML строка в переменной "Данные"
			// <generic
			// event='SendFAX'
			// privilege='call,all'
			// sequencenumber='506205'
			// file='res_fax.c'
			// line='2155'
			// func='sendfax_exec'
			// channel='SIP/263-00000a31'
			// context='amidll'
			// exten='333'
			// callerid='263'
			// remotestationid='(null)'
			// localstationid='(null)'
			// pagestransferred='0'
			// resolution='(null)'
			// transferrate='(null)'
			// filename='/var/spool/asterisk/tmp/SIP-261-fax.tif'
			// />
		КонецЕсли; //Виду события
 
	КонецЕсли; // Если ЭтоМИКО КОМПОНЕНТА
 
КонецПроцедуры
doc/1cajam/thik.txt · Последние изменения: 2014/11/14 22:32 (внешнее изменение)