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

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


doc:1cajam:api:originate

Команда 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” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды, совершающей исходящий вызов)
  • Codecs: Список кодеков разделенный запятыми для использования в текущем вызове.
  • EarlyMedia: Если указать “true” произойдет принудительное соединение в другим каналом в режиме EarlyMedia 1)
  • ActionID: Идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно.
  • Result: В эту переменную будет возвращен результат выполнения функции.

Все переменные передаваемые в функцию должны иметь тип Строка!

Для переменной Variable не применяется URLENCODE, имейте это ввиду при передаче сложных переменных!

Делайте замену символов на «безопасные» в среде 1С. Например, символ пробела нужно заменить последовательностью %20, символ / заменяем на %2F и т.д.

Последовательность событий при совершении исходящего вызова

Первое, совершается вызов по каналу, указанному в параметре 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».

 Процедура 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” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды, совершающей исходящий вызов).
        Codecs          =       "";
        EarlyMedia      =       "";
	ActionID	=	"123123123";	   //	ActionID: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно.
 
	Попытка
		Результат="";
		Компонент.Originate(Channel, Context, Exten, Priority, Timeout, CallerID, Variable, Account, Application, Data, Async, Codecs, EarlyMedia, ActionID, Результат);
   	        Сообщить("Результат оригинации "+Результат);
	Исключение
		Сообщить("Исключение при "+Элемент.Имя+" ошибка:"+ИнформацияОбОшибке());
	КонецПопытки; 
 
КонецПроцедуры

Следующий пример демонстрирует выполнение команды Playback для проигрывания сотруднику c с внутренним номером 26 записи разговора из файла.

Процедура ПрослушатьЗвонок(ИмяФайлаЗаписи) Экспорт 
	Если НЕ ЗначениеЗаполнено(ИмяФайлаЗаписи) Тогда
		Возврат;			
	КонецЕсли; 
 
	Если Найти(ИмяФайлаЗаписи,ПутьКЗаписямРазговоров)=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(Channel, Context, Exten, Priority, Timeout, CallerID, Variable, Account, Application, Data, Async, Codecs, EarlyMedia, ActionID, Результат);
		СообщитьОтладочнуюИнформацию("Начало прослушивания разговора "+ИмяФайлаБезРасширения,Результат);
	Исключение
		СообщитьОтладочнуюИнформацию("Ошибка при прослушивании разговора "+ИмяФайлаБезРасширения,Результат,ОписаниеОшибки());
	КонецПопытки;	
 
КонецПроцедуры

Полезные ссылки

Комментарии

1) Параметр появился в компоненте версии 1.0.20
doc/1cajam/api/originate.txt · Последние изменения: 2014/11/14 22:32 (внешнее изменение)