Запуск компоненты 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='<unknown>'
//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 (внешнее изменение)