Команда Transfer()


Назначение

Перевод вызова на другой екстеншен

Описание

Transfer([Tech/]dest[|options])

Данная команда пытается переадресовать вызывающего абонента на другой указанный номер/екстеншен.
Если используется параметр TECH (SIP, IAX2, LOCAL и т.д.), попытка переадресации вызова будет производиться только в том случае, если входящий вызов поступил по каналу указанного типа.
Обратите внимание что, если используется SIP протокол, и попытка переадресации вызова происходит до установления соединения, то вызывающему абоненту будет возвращено SIP сообщение "302 Redirect". Это дает возможность использовать SIP сообщение, предназначенное для переадресации (с кодом 302), для распределения нагрузки по обработке SIP вызовов на несколько серверов.


Результат выполнения этой команды, можно найти в переменной канала - TRANSFERSTATUS:

  • SUCCESS - Успешная переадресация вызова.
  • FAILURE - Перевести вызов не удалось.
  • UNSUPPORTED - Переадресация не поддерживается драйвером канала.


Строка с опциями может содержать следующие символы:

'j' — переход к команде с приоритетом n+101, если перевод вызова завершился неудачно.


Замечания

Asterisk поддерживает "слепой" (автоматический) метод перевода вызова (для каналов SIP, MGCP и H.323), если абонент нажимает '#' и, если аудиопоток вызова проходит через Asterisk, например, в том случае, если команда Dial() содержит опции t или T или, если параметр canreinvite установлен в значение no.
Такой тип перевода вызова устанавливает переменную канала TRANSFER_CONTEXT, в зависимости от того, кто совершает перевод вызова. Если вызов переводит звонящий, то ${TRANSFER_CONTEXT} берется от вызывающего, иначе от вызываемого.

Ссылки по теме: