Здесь показаны различия между двумя версиями данной страницы.
doc:1cajam:thik [2011/12/19 20:03] nb создано |
doc:1cajam:thik [2014/11/14 22:32] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Запуск компоненты mikoajam в режиме толстого клиента ====== | ||
- | |||
- | ===== Процедуры инициализации, логина и логофа ===== | ||
- | <code 1c> | ||
- | Перем Компонент Экспорт; // объявляем глобальную переменную для компонента | ||
- | |||
- | Процедура Инициализация() // подключаем компонент | ||
- | Попытка | ||
- | ИмяФайла="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(Результат); | ||
- | Исключение | ||
- | Сообщить("Исключение при разлогинивании"); | ||
- | КонецПопытки; | ||
- | КонецПроцедуры | ||
- | |||
- | </code> | ||
- | |||
- | ===== Простейшая команда Ping ===== | ||
- | <code 1c> | ||
- | Процедура Ping() | ||
- | Попытка | ||
- | respose =""; | ||
- | Результат=Компонент.Ping(respose); | ||
- | Сообщить("Результат пинга "+Результат+". Ответ asterisk "+respose ); | ||
- | Исключение | ||
- | Сообщить("Исключение при пинге"); | ||
- | КонецПопытки; | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | ===== Звонок абонента A, абоненту Б.===== | ||
- | <code 1c> | ||
- | Процедура 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,Результат); | ||
- | Сообщить("Результат оригинации "+Результат); | ||
- | Исключение | ||
- | Сообщить("Исключение при "+Элемент.Имя+" ошибка:"+ИнформацияОбОшибке()); | ||
- | КонецПопытки; | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | ===== Пример обработчика внешних событий ===== | ||
- | |||
- | <code 1c> | ||
- | |||
- | //Срабатывает на каждое внешнее событие тут будем мониторить входящие звонки | ||
- | Процедура ВнешнееСобытие(Источник, Событие, Данные) | ||
- | |||
- | Если Источник="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' | ||
- | // /> | ||
- | КонецЕсли; //Виду события | ||
- | |||
- | КонецЕсли; // Если ЭтоМИКО КОМПОНЕНТА | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||