Команда RetryDial()
Это простой подвариант команды Dial,:::::()" class="wiki wiki_page">Dial.
RetryDial(announce[|context][|sleep][|loops]:Technology/resource[&Technology2/resource2...][|timeout][|options][|URL])
Назначение
Совершить вызов заданного екстеншена, повторять вызов при неудачной попытке вызова, вызывающий пользователь может закончить процедуру вызова, нажав кнопку на dtmf клавиатуре.Описание
Команда пытается вызвать заданный екстеншен(ы). Если нет доступных для совершения вызовов каналов, проигрываем звуковой файл, определенный в параметре 'announce', ждем 'sleep' секунд и повторяем вызов.Если число попыток вызовов совпало со значением в параметре 'loops', выполнение команд плана набора будет продолжено с команды со следующим приоритетом.
Если опция 'loops' установлена в ноль, попытки вызова будут повторяться бесконечно. В процессе ожидания ответа, может быть набран екстеншен, состоящий из одной цифры. И если этот екстеншен присутствует в контексте: 'context', процедура вызова заданного екстеншена(ов) будет немедленно завершена и дальнейшее управление будет передано на этот екстеншен.
Значения по умолчанию:
'loops' - 12,
'sleep' - 10
'context' - по умолчанию, текущий контекст.
Все аргументы, после первого символа двоеточия (':'), будут без изменения переданы приложению Dial() (смотри описание команды Dial).
Пример
[vcon]exten => 1,1,Voicemail(${BOX})
[mycon]
exten => _1XXX,1,SetVar(BOX=${EXTEN})
exten => _1XXX,2,RetryDial(please-wait|vcon|5|3:SIP/${BOX}|60|d)
exten => _1XXX,3,Playback(sorry-pal)
exten => _1XXX,4,Hangup
В файле записан анонс: "На данный момент я очень занят, нажмите 1 для того, чтобы оставить мне голосовое сообщение или дождитесь, пока я отвечу на Ваш звонок"
Так как, Вы добавили флаг 'd', то Вы можете набрать '1' даже если соединение с абонентом еще не установлено (происходит его вызов). Если Вы хотите, чтобы вызывающий абонент слушал музыку, вместо сигналов вызова, то также добавьте флаг 'm'.
В данном примере, вызов абонента будет производиться в течение 60 секунд, с промежутками ожидания в 5 секунд между попытками повторного вызова. Попытки повторного вызова будут совершаться три раза (для этого и описано: 5|3)
Детальная информация.
Смотри: bug/patch 3313Эта команда не для совершения обратного вызова звонящему абоненту, т.е. она не для реализации функции auto-callback. Она предназначена для случаев, когда Вам необходимо проиграть звуковой файл, который расскажет вызывающему абоненту, что-то вроде этого: "На данный момент я где то рядом с телефоном, нажмите 1, чтобы оставить мне голосовое сообщение или дождитесь пока я возьму трубку." или "нажмите 1, чтобы оставить мне голосовое сообщение или нажмите 2 для того, чтобы позвонить мне на сотовый телефон", но если вызывающему ничего из предложенного не нужно, то он просто может положить трубку и вызов будет завершен.
Если для команды задан флаг 'd', он расширяет возможности флага 'H'. и позволяет перехватывать любые dtmf посылки, в процессе ожидания, пока вызываемый абонент ответит на вызов, и возвращает набранное значение. Это позволяет Вам набрать определенную цифру для выхода из процесса вызова, пока вы дожидаетесь ответа. Итак, если вы зададите этот флаг 'd' в поле dialargs, команды RetryDial(), тогда у абонента появляется возможность самостоятельно отменить вызов заданного екстеншена, еще до того, как он ответит на вызов так же, как пока проигрывается музыка ожидания (music-on-hold).
Ссылки по теме:
- Dial,:::::()" class="wiki wiki_page">Команда Dial
Список команд