Здесь показаны различия между двумя версиями данной страницы.
doc:1cajam:api:originate [2012/01/31 08:55] nabek |
doc:1cajam:api:originate [2014/11/14 22:32] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Команда Asterisk Manager API: Originate ====== | ||
- | |||
- | ===== Назначение ===== | ||
- | |||
- | |||
- | Совершение исходящего вызова. | ||
- | |||
- | ===== Параметры команды ===== | ||
- | |||
- | |||
- | * **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**: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно. | ||
- | |||
- | ===== Последовательность событий при совершении исходящего вызова ===== | ||
- | |||
- | |||
- | Первое, совершается вызов по каналу, указанному в параметре 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 на указанный номер. | ||
- | В данном случае исходящий вызов на номер внешнего абонента не будет совершаться до тех пор, пока наш SIP абонент не ответит на вызов: | ||
- | |||
- | <code> | ||
- | Action: Originate | ||
- | Channel: SIP/101test | ||
- | Context: default | ||
- | Exten: 8135551212 | ||
- | Priority: 1 | ||
- | Callerid: 3125551212 | ||
- | Timeout: 30000 | ||
- | Variable: var1=23|var2=24|var3=25 | ||
- | ActionID: ABC45678901234567890 | ||
- | </code> | ||
- | |||
- | Где номер 8135551212 – это локальный городской номер телефона. | ||
- | В данном примере также показано, как устанавливать переменные канала в Originate запросе. | ||
- | |||
- | Обратите внимание: Что параметры (в данном случае набор переменных канала) в версии 1.6 (и выше) должны отделяться друг от друга символом “,” (запятой), а не символом “|”. Чтобы полностью быть уверенным, какой разделитель используется в Вашей версии, можно в исходных кодах взглянуть на содержимое файла “include/asterisk/app.h”, на предмет определения конструкции с именем “AST_STANDARD_APP_ARGS”. Там вы сразу поймете, какой символ используется в качестве разделителя в наборе параметров. | ||
- | |||
- | При использовании данного примера, вызов абонента SIP/101test будет завершен, если он не ответит в течение 30 секунд. | ||
- | |||
- | При использовании AJAM запрос на оригинацию будет такой: | ||
- | <code> | ||
- | http://xxxxxxxx:8088/asterisk/mxml?action=Originate&channel=SIP/101test&context=default&exten=8135551212&priority=1&Callerid=3125551212&Timeout=30000&ActionID=ABC45678901234567890 | ||
- | </code> | ||
- | |||
- | **Код на 1С** | ||
- | <code 1c> | ||
- | Компонента.Originate("SIP/101test","default","8135551212","1","30000","3125551212","var1=23|var2=24|var3=25",,,,,"1"); | ||
- | </code> | ||
- | |||
- | |||
- | ---- | ||
- | |||
- | |||
- | **Пример** | ||
- | |||
- | |||
- | Совершение вызова с внешнего канала на локальный екстеншен. | ||
- | В данном случае вызов локального екстеншена не будет совершаться до тех пор, пока не ответят по внешнему ZAP каналу: | ||
- | |||
- | <code> | ||
- | Action: Originate | ||
- | Channel: Zap/g2/8135551212 | ||
- | Context: default | ||
- | Exten: 101 | ||
- | Priority: 1 | ||
- | Timeout: 30000 | ||
- | Callerid: 3125551212 | ||
- | </code> | ||
- | |||
- | Тут екстеншен 101 – это наш локальный SIP телефон. | ||
- | |||
- | **Код на 1С** | ||
- | <code 1c> | ||
- | Компонента.Originate("Zap/g2/8135551212","default","101","1","30000","3125551212",,,,,,"1"); | ||
- | </code> | ||
- | |||
- | |||
- | ---- | ||
- | |||
- | |||
- | **Пример** | ||
- | |||
- | Данный, насколько странный пример, демонстрирует, как с помощью AMI команды Originate выполнить команду операционной системы: | ||
- | |||
- | <code> | ||
- | Action: Originate | ||
- | Channel: Local/1@dummy | ||
- | Application: System | ||
- | Data: /path/to/script | ||
- | </code> | ||
- | |||
- | **Код на 1С** | ||
- | <code 1c> | ||
- | Компонента.Originate("Local/1@dummy",,,,,,,,"System","/path/to/script",,); | ||
- | </code> | ||
- | |||
- | ===== Комментарии ===== | ||
- | ~~DISQUS~~ |