====== Отправка команд серверу Asterisk из 1С с анализом результата выполнения ====== Компонент, входящий в состав SDK: "Компонента связи 1С и Asterisk", передает управляющие команды серверу Asterisk. Команды могут выполняться синхронно и асинхронно. Чаще всего происходит асинхронная обработка ответов. Каждая команда, реализованная в компоненте, имеет параметр ActionID, который в случае асинхронного вызова позволяет однозначно отделить ответ на нашу команду от других ответов и событий Asterisk. Например, при вызове функции мы передали в параметр ActionID слово "Barsik", то в одном из событий или в нескольких мы получим данные, содержащие строку //actionid="Barsik"//. Также, каждая функция компоненты имеет реквизит Result, в который возвращается синхронный ответ функции, если такой предусмотрен AMI интерфейсом Asterisk. Сама же функция возвращает ложь или истину в зависимости от того - успешно она выполнена или нет. Пример вызова функции оригинации звонка: Процедура ПозвонитьС26На74952293042() Channel = "SIP/26" // Channel: Название канала, с которого совершается исходящий вызов (В том же формате, как если бы Вы совершали вызов этому абоненту командой Dial.) Context = "from-internal"; // Context: Название контекста для совершения исходящего вызова (используется только совместно с параметрами Exten и Priority) Exten = "74952293042"; // 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 = "114"; // ActionID: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно. Если Компонент = Неопределено Тогда Сообщить("Компонент не подключен"); Возврат; КонецЕсли; Попытка Результат=""; Если Компонент.Originate(Channel,Context,Exten,Priority,Timeout,CallerID,Variable,Account,Application,Data,Async,ActionID,Результат)=Истина Тогда Сообщить("Результат оригинации "+Результат); КонецЕсли; Исключение Сообщить("Исключение при, ошибка:"+ИнформацияОбОшибке()); КонецПопытки; КонецПроцедуры ===== Полезные ссылки ===== * [[doc:1cajam|SDK: Компонента связи 1C и Asterisk]] * [[doc:1cajam:api|Описание функций реализованных в SDK: Компонента связи 1С и Asterisk]] * [[kb:asterisk:events|Asterisk Manager: Events]] ===== Комментарии ===== ~~DISQUS~~