Здесь показаны различия между двумя версиями данной страницы.
doc:1cajam:api:originate [2012/02/02 11:19] amzh |
doc:1cajam:api:originate [2014/11/14 22:32] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Команда Asterisk Manager API: Originate ====== | ||
- | Совершение исходящего вызова или выполнение Shell скрипта. | ||
- | |||
- | ===== Параметры команды ===== | ||
- | |||
- | * **Channel**: Название канала, с которого совершается исходящий вызов (В том же формате, как если бы Вы совершали вызов этому абоненту командой Dial.) | ||
- | * **Context**: Название контекста для совершения исходящего вызова (используется только совместно с параметрами Exten и Priority) | ||
- | * **Exten**: Extension to use on connect (используется только совместно с параметрами Context и Priority) | ||
- | * **Priority**: Priority to use on connect (используется только совместно с параметрами Context и Exten) | ||
- | * **Timeout**: Таймаут (в миллисекундах) для соединения с инициатором исходящего вызова (значение по умолчанию: 30000 миллисекунд). | ||
- | * **CallerID**: Значение CallerID, используемое для совершения исходящего вызова. | ||
- | * **Variable**: Установка переменных канала (максимум 32). Переменные будут установлены для обоих каналов, участвующих в соединении (локального, для абонента от которого совершается вызов и для вызываемого канала). | ||
- | * **Account**: Значение для “Account code” исходящего вызова. | ||
- | * **Application**: Команда плана набора, используемая для совершения исходящего вызова (используется параметр “Data”, для указания ее параметров) | ||
- | * **Data** : Параметры команды плана набора, используемой для совершения исходящего вызова. | ||
- | * **Async**: Если указано “true” исходящий вызов будет производиться асинхронно. Результат ее выполнения будет возвращен позже, в пакете типа “Event” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды, совершающей исходящий вызов) | ||
- | * **ActionID**: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно. | ||
- | <note important>Все переменные передаваемые в функцию должны иметь тип Строка!</note> | ||
- | |||
- | <note warning>Для переменной Variable не применяется [[http://ru.wikipedia.org/wiki/URL#.D0.9A.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_URL|URLENCODE]], имейте это ввиду при передаче сложных переменных! | ||
- | |||
- | Делайте замену символов на "безопасные" в среде 1С. Например, символ пробела нужно заменить последовательностью %20, символ / заменяем на %2F и т.д. </note> | ||
- | |||
- | ===== Последовательность событий при совершении исходящего вызова ===== | ||
- | |||
- | |||
- | Первое, совершается вызов по каналу, указанному в параметре Channel. | ||
- | Далее, после того как установлено соединение по этому каналу (на вызов ответили), будет запущена процедура исходящего вызова. | ||
- | Это может быть или выполнение команд из указанной точки плана набора: номер екстеншена, указанного в параметре Exten, в контексте из параметра Context, с номером приоритета из “Priority”. | ||
- | Или вызов совершается с помощью команды плана набора из параметра “Application” с ее параметрами из “Data”. | ||
- | Обратите внимание, что таймаут, указанный в “Timeout”, имеет отношение только к первой стадии вызова (совершение вызова по каналу из “Channel”). Все остальные таймауты вызова второй стороны могут быть указаны, например, в параметрах команды Dial. | ||
- | |||
- | |||
- | Использование параметра Async приводит к генерации manager API события (Event) - OriginateResponse, которое содержит код ошибки в поле reason, если оно есть. | ||
- | Код ошибки может принимать следующие значения: | ||
- | |||
- | 0 = Номер или екстеншен не найден. | ||
- | 1 = Нет ответа (no answer) | ||
- | 4 = Успешное выполнение (answered) | ||
- | 8 = Перегрузка или абонент не доступен (congested or not available) | ||
- | |||
- | |||
- | ---- | ||
- | |||
- | **Пример** | ||
- | |||
- | |||
- | Совершение вызова с канала SIP на указанный номер. | ||
- | В данном случае исходящий вызов с номера 26 на номер внешнего абонента 74952293042 не будет совершаться до тех пор, пока наш SIP абонент 26 не ответит на вызов. | ||
- | На телефоне во время вызова будет отображаться "26->74952293042", во время вызова будет использоваться контекст "from-internal". | ||
- | |||
- | <code 1c> | ||
- | Процедура Originate() | ||
- | |||
- | 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 = "26->74952293042"; // 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> | ||
- | |||
- | Следующий пример демонстрирует выполнение команды Playback для проигрывания сотруднику c с внутренним номером 26 записи разговора из файла. | ||
- | |||
- | <code 1c> | ||
- | Процедура ПрослушатьЗвонок(ИмяФайлаЗаписи) Экспорт | ||
- | Если НЕ ЗначениеЗаполнено(ИмяФайлаЗаписи) Тогда | ||
- | Возврат; | ||
- | КонецЕсли; | ||
- | |||
- | Если Найти(ИмяФайлаЗаписи,ПутьКЗаписямРазговоров)=0 Тогда // в имени файла не указан путь к записям разговоров | ||
- | ИмяФайлаБезРасширения = УбратьРасширениеВФайлеЗаписи(ПутьКЗаписямРазговоров + ИмяФайлаЗаписи); | ||
- | Иначе | ||
- | ИмяФайлаБезРасширения = УбратьРасширениеВФайлеЗаписи(ИмяФайлаЗаписи); // в файле не должно быть указано расширение | ||
- | КонецЕсли; | ||
- | |||
- | Channel = "SIP/26"; // Channel: Название канала, с которого совершается исходящий вызов (В том же формате, как если бы Вы совершали вызов этому абоненту командой Dial.) | ||
- | Context = ""; // Context: Название контекста для совершения исходящего вызова (используется только совместно с параметрами Exten и Priority) | ||
- | Exten = ""; // Exten: Extension to use on connect (используется только совместно с параметрами Context и Priority) | ||
- | Priority = ""; // Priority: Priority to use on connect (используется только совместно с параметрами Context и Exten) | ||
- | Timeout = ""; // Timeout: Таймаут (в миллисекундах) для соединения с инициатором исходящего вызова (значение по умолчанию: 30000 миллисекунд). | ||
- | CallerID = "CDR_RECORDS"; // CallerID: Значение CallerID, используемое для совершения исходящего вызова. | ||
- | Variable = ""; // Variable: Установка переменных канала (максимум 32). Переменные будут установлены для обоих каналов, участвующих в соединении (локального, для абонента от которого совершается вызов и для вызываемого канала). | ||
- | Account = ""; // Account: Значение для “Account code” исходящего вызова. | ||
- | Application = "Playback"; // Application: Команда плана набора, используемая для совершения исходящего вызова (используется параметр “Data”, для указания ее параметров) | ||
- | Data = "\"+ИмяФайлаБезРасширения; // Data : Параметры команды плана набора, используемой для совершения исходящего вызова. | ||
- | Async = "0"; // Async: Если указано “true” исходящий вызов будет производиться асинхронно. Результат ее выполнения будет возвращен позже, в пакете типа “Event” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды, совершающей исходящий вызов) | ||
- | ActionID = "114"; // ActionID: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно. | ||
- | |||
- | Результат=""; | ||
- | Попытка | ||
- | Компонент.Originate(Channel,Context,Exten,Priority,Timeout,CallerID,Variable,Account,Application,Data,Async,ActionID,Результат); | ||
- | СообщитьОтладочнуюИнформацию("Начало прослушивания разговора "+ИмяФайлаБезРасширения,Результат); | ||
- | Исключение | ||
- | СообщитьОтладочнуюИнформацию("Ошибка при прослушивании разговора "+ИмяФайлаБезРасширения,Результат,ОписаниеОшибки()); | ||
- | КонецПопытки; | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||
- | ===== Полезные ссылки ===== | ||
- | * [[doc:1cajam|Описание SDK: "Компонента связи 1С и Asterisk"]] | ||
- | * [[doc:1cajam:api|Все функции компоненты связи 1С и Asterisk]] | ||
- | * [[kb:asterisk:ami:Originate|Прототип текущей функции, команда AMI Asterisk: Originate]] | ||
- | * [[kb:asterisk:ami|Интерфейс управления сервером Asterisk (Asterisk Manager API)]] | ||
- | * [[kb:asterisk:events|Список известных событий возвращаемых Asterisk Manager API]] | ||
- | |||
- | |||
- | ===== Комментарии ===== | ||
- | ~~DISQUS~~ |