Внимание!
Эта wiki об устаревших версиях
Документация к актуальной версии интеграции 1С и телефонии доступна по ссылке

Инструменты пользователя

Инструменты сайта


doc:1cajam:api:originate

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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 ====== ====== Команда Asterisk Manager API: Originate ======
  
- +Совершение исходящего вызова или выполнение Shell скрипта.
-===== Назначение ===== +
- +
- +
-Совершение исходящего вызова.+
  
 ===== Параметры команды ===== ===== Параметры команды =====
- 
  
   * **Channel**:​ Название канала,​ с которого совершается исходящий вызов (В том же формате,​ как если бы Вы совершали вызов этому абоненту командой Dial.)   * **Channel**:​ Название канала,​ с которого совершается исходящий вызов (В том же формате,​ как если бы Вы совершали вызов этому абоненту командой Dial.)
Строка 21: Строка 16:
   * **Data** : Параметры команды плана набора,​ используемой для совершения исходящего вызова.   * **Data** : Параметры команды плана набора,​ используемой для совершения исходящего вызова.
   * **Async**: Если указано “true” исходящий вызов будет производиться асинхронно. Результат ее выполнения будет возвращен позже, в пакете типа “Event” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды,​ совершающей исходящий вызов)   * **Async**: Если указано “true” исходящий вызов будет производиться асинхронно. Результат ее выполнения будет возвращен позже, в пакете типа “Event” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды,​ совершающей исходящий вызов)
-  * **ActionID**: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать,​ когда выполняется несколько асинхронных запросов одновременно.+  * **Codecs**: Список кодеков разделенный ​запятыми для использования в текущем вызове. 
 +  * **EarlyMedia**:​ Если указать “true” произойдет принудительное соединение в другим каналом в режиме EarlyMedia ((Параметр появился в компоненте версии 1.0.20))  
 +  * **ActionID**:​ Идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать,​ когда выполняется несколько асинхронных запросов одновременно
 +  * **Result**: В эту переменную будет возвращен результат выполнения функции.
  
 +<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>​
 ===== Последовательность событий при совершении исходящего вызова ===== ===== Последовательность событий при совершении исходящего вызова =====
  
Строка 48: Строка 52:
  
 Совершение вызова с канала SIP на указанный номер. Совершение вызова с канала SIP на указанный номер.
-В данном случае исходящий вызов на номер внешнего абонента не будет совершаться до тех пор, пока наш SIP абонент не ответит на вызов:+В данном случае исходящий вызов ​с номера 26 на номер внешнего абонента ​74952293042 ​не будет совершаться до тех пор, пока наш SIP абонент ​26 не ответит на вызов
 +На телефоне во время вызова будет отображаться "​26->​74952293042",​ во время вызова будет использоваться контекст "​from-internal"​.
  
-<​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> <code 1c>
-Компонента.Originate("SIP/101test","default","​8135551212","​1","​30000","​3125551212","​var1=23|var2=24|var3=25",,,,,"​1"); + ​Процедура Originate() 
-</​code>​+  
 + 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” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды,​ совершающей исходящий вызов). 
 +        Codecs ​         =       ""; 
 +        EarlyMedia ​     ​      "";​ 
 + ActionID = "​123123123";​  ​  //​ ActionID:​ Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать,​ когда выполняется несколько асинхронных запросов одновременно. 
 +  
 + Попытка 
 + Результат=""; 
 + Компонент.Originate(ChannelContextExtenPriorityTimeoutCallerID, Variable, Account, Application,​ Data, Async, Codecs, EarlyMedia, ActionID, Результат);​ 
 +   ​  ​       Сообщить("Результат оригинации ​"+Результат); 
 + Исключение 
 + Сообщить("​Исключение при "​+Элемент.Имя+"​ ошибка:"​+ИнформацияОбОшибке());​ 
 + КонецПопытки;​  
 +  
 +КонецПроцедуры
  
- 
----- 
- 
- 
-**Пример** 
- 
- 
-Совершение вызова с внешнего канала на локальный екстеншен. 
-В данном случае вызов локального екстеншена не будет совершаться до тех пор, пока не ответят по внешнему ZAP каналу:​ 
- 
-<​code>​ 
-Action: Originate 
-Channel: Zap/​g2/​8135551212 
-Context: default 
-Exten: 101 
-Priority: 1 
-Timeout: 30000 
-Callerid: 3125551212 
 </​code>​ </​code>​
  
-Тут екстеншен 101 – это наш локальный SIP телефон.+Следующий пример демонстрирует выполнение команды Playback для проигрывания сотруднику c с внутренним номером 26 записи разговора из файла.
  
-**Код на 1С** 
 <code 1c> <code 1c>
-Компонента.Originate("Zap/g2/8135551212","​default","​101","​1","​30000","​3125551212",,,,,,"​1");+Процедура ПрослушатьЗвонок(ИмяФайлаЗаписи) Экспорт  
 + Если НЕ ЗначениеЗаполнено(ИмяФайлаЗаписи) Тогда 
 + Возврат;​  
 + КонецЕсли;​  
 +  
 + Если Найти(ИмяФайлаЗаписи,​ПутьКЗаписямРазговоров)=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” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды,​ совершающей исходящий вызов). 
 +        Codecs ​         =       ""​
 +        EarlyMedia ​     =       "";​ 
 + ActionID = "​114";​ //​ ActionID:​ Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использоватькогда выполняется несколько асинхронных запросов одновременно. 
 +  
 + Результат="";​ 
 + Попытка 
 + Компонент.Originate(ChannelContextExtenPriorityTimeoutCallerID, Variable, Account, Application,​ Data, Async, Codecs, EarlyMedia, ActionID, Результат);​ 
 + СообщитьОтладочнуюИнформацию("Начало прослушивания разговора ​"+ИмяФайлаБезРасширения,​Результат); 
 + Исключение 
 + СообщитьОтладочнуюИнформацию("​Ошибка при прослушивании разговора "​+ИмяФайлаБезРасширения,​Результат,​ОписаниеОшибки());​ 
 + КонецПопытки;​  
 +  
 +КонецПроцедуры
 </​code>​ </​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]]
  
- 
----- 
- 
- 
-**Пример** 
- 
-Данный,​ насколько странный пример,​ демонстрирует,​ как с помощью 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~~ ~~DISQUS~~
doc/1cajam/api/originate.1328000154.txt.gz · Последние изменения: 2014/11/14 22:32 (внешнее изменение)