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

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

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


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” (позволяет осуществлять несколько вызовов без ожидания результата предыдущей команды, совершающей исходящий вызов)
  • ActionID: Не обязательный идентификатор запроса. Позволяет сопоставить результат выполнения конкретному запросу. В качестве значения можно использовать или номер или строку. Очень полезно использовать, когда выполняется несколько асинхронных запросов одновременно.
Для переменной Variable не применяется URLENCODE, имейте это ввиду при передаче сложных переменных! Делайте замену символов на «безопасные» в среде 1С. Например, символ пробела нужно заменить последовательностью «%20»

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

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

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

Комментарии

doc/1cajam/api/originate.1328174504.txt.gz · Последние изменения: 2014/11/14 22:32 (внешнее изменение)