====== Запуск компоненты 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 строка в переменной "Данные"
//
ИначеЕсли Событие="Bridge" Тогда //2 абонента соеденились и разговаривают
//ПРИМЕР ОТВЕТА исходящий звонок с 263 на 04 XML строка в переменной "Данные"
//
//Пример ответа Входящий звонок с 79265244742 на мультифонтранк XML строка в переменной "Данные"
//
ИначеЕсли Событие="Unlink" Тогда
//ПРИМЕР ОТВЕТА XML строка в переменной "Данные"
//
ИначеЕсли Событие="Dial" Тогда //Входящий звонок до поднятия трубочки
//ПРИМЕР ОТВЕТА при внешнем входящем звонке с номера 79265244745 на мультифон транк XML строка в переменной "Данные"
//
ИначеЕсли Событие="Newchannel" Тогда
//ПРИМЕР ОТВЕТА Звоню с номера 263 на номер 17 XML строка в переменной "Данные"
//
// />
//ПРИМЕР ОТВЕТА Звоню с номера 74997623634 на номер 229-30-42 оператора МАНГО XML строка в переменной "Данные"
//
ИначеЕсли Событие="Cdr" Тогда
ИначеЕсли Событие="ReceiveFAX" Тогда
//ПРИМЕР ОТВЕТА получаем факс XML строка в переменной "Данные"
//
ИначеЕсли Событие="SendFAX" Тогда
//ПРИМЕР ОТВЕТА отправляем факс XML строка в переменной "Данные"
//
КонецЕсли; //Виду события
КонецЕсли; // Если ЭтоМИКО КОМПОНЕНТА
КонецПроцедуры
~~DISQUS~~