Команда WaitExten


Назначение:

Команда дает возможность звонящему абоненту набрать номер нового экстеншена, с которым будет работать текущий контекст

Описание:

WaitExten(seconds)

Ожидать, пока пользователь наберет номер нового екстеншена заданное число секунд, потом выйти с кодом возврата 0. Параметр Seconds может быть не только целым числом, но и иметь десятичную дробь. (например: 1.5 = 1.5 секунды).

Эта команда особенно интересна тем, что она перезапускает текущий контекст сначала, но обрабатываемым екстеншеном уже будет тот номер, что был введен абонентом. Вот посмотрите на пример использования:
[waitexten_example]
exten => s,1,NoOp(${TIMESTAMP} waitexten_example begins)
exten => s,2,DigitTimeout,1          ; Сначала установим паузу в 1 секунду, 
                                  ; если пройдет больше времени, то набор номера будет считаться законченым
exten => s,3,ResponseTimeout,10 ; 10 секунд в течение которых ничего не набрали - это уже проблема...

exten => _X,1,NoOp( only got one digit. It was ${EXTEN})
exten => _X,2,SetVar(Predigits=${EXTEN})         ; Сохраняем предыдущий номер для использования позже...
exten => _X,3,Goto(s-gathermoredigits,1)

exten => s-gathermoredigits,1,NoOp( users have slow fingers - lets increase the DigitTimeout and try again)
exten => s-gathermoredigits,2,DigitTimeout,5    ; Увеличим паузу в наборе номера (между цифрами) до 5 секунд
exten => s-gathermoredigits,3,WaitExten(8)      ; и дадим звонящему 8 секунд, чтобы что-нибудь набрать

exten => _X.,1,NoOp(${TIMESTAMP} ok, теперь наберем номер ${Predigits}${EXTEN})
exten => _X.,4,Dial(facility/${Predigits}${EXTEN})


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