Страница 1 из 2

Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 07:21
souljapanic
Есть вот такой контекст:

[TestIvr]

exten => s,1,Set(TIMEOUT(digit)=3) ;
exten => s,n,Set(TIMEOUT(response)=4) ;
exten => s,n,Set(CDR(accountcode)="incoming-to-${EXTEN}");
exten => s,n,Set(CHANNEL(language)=ivr);
exten => s,n,Playback(ru_zip_1);
exten => s,n,Background(play);
exten => s,n,WaitExten(4);
exten => s,n,Dial(SIP/client/XXXXXXX,60,tTog);
exten => s,n,NoOp(client_DIALSTATUS=${DIALSTATUS});
exten => s,n,Hangup;

exten => 1,1,Dial(SIP/client/602,60,tTog);
exten => 1,n,NoOp(client_DIALSTATUS=${DIALSTATUS});
exten => 1,n,Hangup;

exten => 2,1,Dial(SIP/client/601,60,tTog);
exten => 2,n,NoOp(client_DIALSTATUS=${DIALSTATUS});
exten => 2,n,Hangup;

exten => _[it],1,Dial(SIP/client/600,60,tTog);
exten => _[it],n,NoOp(client_DIALSTATUS=${DIALSTATUS});
exten => _[it],n,Hangup;

Ситуация следующая, при звонке на номер XXXXXXX попадаем в контекст TestIvr, где описан автосекретарь. По таймауту и некорректному набору звонок уходит на линию 600, при нажатии 2 на линию 601, при нажатии 1 на линию 602. Но вот если тот кто звонит на номер XXXXXXX во время прослушивания сообщения автосекретаря или после него в течение 4 секунд нажимает звёздочку, то вызов уходит на линию 600, как понимаю нажатие звёздочки распознаётся как некорректное. Как сделать так, чтобы при нажатие звёздочки не было на это никакой реакции и контекст выполнялся дальше, чтобы нажатие звёздочки игнорировалось этим контекстом.

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 10:11
virus_net
в данном контексте нет обработки *
открой консоль и смотри в дебаг вызова когда нажимается *
какой exten отрабатывает ?

либо:

Код: Выделить всё

CLI> dialplan show *@TestIvr

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 10:30
souljapanic
-- Invalid extension '*' in context 'TestIvr' on DAHDI/37-1
== CDR updated on DAHDI/37-1
-- Executing [i@TestIvr:1] Dial("DAHDI/37-1", "SIP/client/600,60,tTog") in new stack

Вот, что пишет в консоли, как понимаю считает нажатие "*" считается некорректным.

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 11:34
souljapanic
Дело ещё обстоит в том, что если телефон в тональном режиме и звонящий нажимает "*" то такая ситуация и происходит, а если телефон в импульсном режиме у звонящего, то на asterisk "*" не прилетает.

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 12:19
ded
exten => *,n,Goto(s,5)
если телефон в тональном режиме и звонящий нажимает "*" то такая ситуация и происходит, а если телефон в импульсном режиме у звонящего, то на asterisk "*" не прилетает.
Было бы удивительно, если бы телефон в импульсном режиме посылал а asterisk "*"!

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 14:14
virus_net
souljapanic писал(а):-- Invalid extension '*' in context 'TestIvr' on DAHDI/37-1
ну дык тогда потому у тя и попадает под:
souljapanic писал(а):exten => _[it],1,Dial(SIP/client/600,60,tTog);
Asterisk i extension
о чем и пишет в
souljapanic писал(а):-- Executing [i@TestIvr:1] Dial("DAHDI/37-1", "SIP/client/600,60,tTog") in new stack
опиши в контексте нажатие * и то действие что хочешь, например так как посоветовал ded

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 14:57
souljapanic
Я и хочу, чтобы при нажатие "*" никакого действия не было, чтобы этот контекст ни как не реагировал на нажатие "*". Как описать в контексте правило на "*" чтобы контекст не реагировал на неё?

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 15:16
ded
Яхочу чтобы Вы сами нашли решение и опубликовали его здесь!

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 16:05
awsswa
exten => _*,1,NoOp(client_DIALSTATUS=${DIALSTATUS});

Re: Отлючение дейстий при нажатии звёздочки в IVR.

Добавлено: 01 фев 2014, 16:43
souljapanic
В этом случаем звонок будет отбиваться, необходимо следующее решение, что во время проигрывания звукового сообщения и если нажимается "*", то ничего не происходит и звуковое сообщение продолжает проигрываться дальше или выполняется следующее по контексту действие, которое и должно, то есть решётка должна совсем игнорироваться.