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

Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 12:34
xeon_greg
добрый всем день.
есть такая конструкция, она работает

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

[voice_menu]
exten => 1,1,Dial(SIP/103,15,t) 
exten => 1,2,Goto(106-${DIALSTATUS},1) ;
exten => 106-CHANUNAVAIL,1,Dial(SIP/${EXTEN:0:3},15,t)
exten => 106-BUSY,1,Dial(SIP/${EXTEN:0:3},15,t)
exten => 106-NOANSWER,1,Dial(SIP/${EXTEN:0:3},15,t)
кто подскажет почему не работает такая? , вернее работает только для BUSY :

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

[vioce_menu]
exten => 1,1,Dial(SIP/103,15,t) ;
exten => 1,2,Goto(106-${DIALSTATUS},1) ;
exten => _XXX-CHANUNAVAIL,1,Dial(SIP/${EXTEN:0:3},15,t)
exten => _XXX-BUSY,1,Dial(SIP/${EXTEN:0:3},15,t)
exten => _XXX-NOANSWER,1,Dial(SIP/${EXTEN:0:3},15,t)
в лог валит

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

Called SIP/103
    -- SIP/103-00000022 is ringing
    -- Nobody picked up in 15000 ms
    -- Executing [1@voice_menu:2] Goto("SIP/101-00000021", "106-NOANSWER,1") in new stack
    -- Goto (voice_menu,106-NOANSWER,1)
    -- Channel 'SIP/101-00000021' sent to invalid extension: context,exten,priority=voice_menu,106-NOANSWER,1
    -- Executing [i@voice_menu:1] Hangup("SIP/101-00000021", "") in new stack
хотя

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

dialplan show 106-BUSY@voice_menu
[ Context 'voice_menu' created by 'pbx_config' ]
  '_XXX-BUSY' =>    1. Dial(SIP/${EXTEN:0:3},15,t)                [pbx_config]

-= 1 extension (1 priority) in 1 context. =-
dialplan show 106-NOANSWER@voice_menu
There is no existence of 106-NOANSWER@voice_menu extension
Command 'dialplan show 106-NOANSWER@voice_menu' failed.

dialplan show 106-CHANUNAVAIL@voice_menu
There is no existence of 106-CHANUNAVAIL@voice_menu extension
Command 'dialplan show 106-CHANUNAVAIL@voice_menu' failed.

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 12:55
xeon_greg
ага понял сам почему, тк это шаблон символы N трактуются спец образом в NOANSWER и CHANUNAVAIL . тогда другой вопрос как это обойти ?

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 13:10
ded
Загадка!
Но - так и есть. Проверил копипастой.
Если хотите обойти - соорудите макрос, и предавайте в него вызываемый номер аргументом:

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

exten => 1,1,Dial(SIP/103,15,t)
exten => 1,2,Macro(redial,106) 

[macro-redial]
exten => s-CHANUNAVAIL,1,Dial(SIP/${ARG1},15,t)
exten => s-BUSY,1,Dial(SIP/${ARG1},15,t)
exten => s-NOANSWER,1,Dial(SIP/${ARG1},15,t)

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 13:18
virus_net
Да нету загадок, тут точно есть очепятка.
Название контекста во втором случае vioce_menu, а Goto на voice_menu

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

*CLI> dialplan show 106-NOANSWER@vioce_menu

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

*CLI> dialplan show 106-NOANSWER@voice_menu
UPDATED:
Хотя ситуация реально странная :)

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

[contest]
exten => 1,1,Dial(SIP/103,15,t) ;
exten => 1,2,Goto(106-${DIALSTATUS},1) ;
exten => _XXX-CHANUNAVAIL,1,Dial(SIP/${EXTEN:0:3},15,t)
exten => _XXX-BUSY,1,Dial(SIP/${EXTEN:0:3},15,t)
exten => _XXX-NOANSWER,1,Dial(SIP/${EXTEN:0:3},15,t)

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

*CLI> dialplan show contest
[ Context 'contest' created by 'pbx_config' ]
'1' => 1. Dial(SIP/103,15,t) [pbx_config]
2. Goto(106-${DIALSTATUS},1) [pbx_config]
'_XXX-BUSY' => 1. Dial(SIP/${EXTEN:0:3},15,t) [pbx_config]
'_XXX-CHANUNAVAIL' => 1. Dial(SIP/${EXTEN:0:3},15,t) [pbx_config]
'_XXX-NOANSWER' => 1. Dial(SIP/${EXTEN:0:3},15,t) [pbx_config]

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

*CLI> dialplan show 123-BUSY@contest
[ Context 'contest' created by 'pbx_config' ]
'_XXX-BUSY' => 1. Dial(SIP/${EXTEN:0:3},15,t) [pbx_config]

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

*CLI> dialplan show 123-CHANUNAVAIL@contest
There is no existence of 123-CHANUNAVAIL@contest extension
Command 'dialplan show 123-CHANUNAVAIL@contest' failed.

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

*CLI> dialplan show 123-NOANSWER@contest
There is no existence of 123-NOANSWER@contest extension
Command 'dialplan show 123-NOANSWER@contest' failed.
Но что то тут не так. У меня такие же конструкции используются, только не шаблон и они работают :)
Шаблоном тока подобное:

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

exten => _111-[A-Z].,1,Hangup()
Добавляем в контекст

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

exten => _XXX-[A-Z].,1,NoOp(Not matched)
и смотрим:

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

*CLI> dialplan show 123-CHANUNAVAIL@contest
[ Context 'contest' created by 'pbx_config' ]
'_XXX-[A-Z].' => 1. NoOp(Not matched) [pbx_config]

-= 1 extension (1 priority) in 1 context. =-

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

*CLI> dialplan show 123-CHANUNAVAIL@contest
[ Context 'contest' created by 'pbx_config' ]
'_XXX-[A-Z].' => 1. NoOp(Not matched) [pbx_config]

-= 1 extension (1 priority) in 1 context. =-
О как :) Чудеса да и тока, но ведь чудес не бывает.

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 13:52
virus_net
Опытным путем:

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

    -- Executing [15@users:1] Set("SIP/6003-00001b44", "DIALSTATUS=CHA") in new stack
    -- Executing [15@users:2] Goto("SIP/6003-00001b44", "106-CHA,1") in new stack
    -- Goto (users,106-CHA,1)
    -- Executing [106-CHA@users:1] NoOp("SIP/6003-00001b44", "Dial(SIP 106,15,t)") in new stack

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

    -- Executing [15@users:1] Set("SIP/6003-00001b43", "DIALSTATUS=CHAN") in new stack
    -- Executing [15@users:2] Goto("SIP/6003-00001b43", "106-CHAN,1") in new stack
    -- Goto (users,106-CHAN,1)
    -- Executing [106-CHAN@users:1] NoOp("SIP/6003-00001b43", "Not matched [106-CHAN]") in new stack
Т.е. как тока дошло до CHAN, так все сразу и обломилось.
Со вторым все обломалось сразу же на N:

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

    -- Executing [15@users:1] Set("SIP/6003-00001b48", "DIALSTATUS=N") in new stack
    -- Executing [15@users:2] Goto("SIP/6003-00001b48", "106-N,1") in new stack
    -- Goto (users,106-N,1)
    -- Sent into invalid extension '106-N' in context 'users' on SIP/6003-00001b48
Удивлен состоянием счета. Реально удивлен :)

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 13:59
xeon_greg
да таки как DED yаписал придется использовать макрос, так шаблон не пропускает N,X,Z те трактует их как спец-символы. ну можно сказать проблема решена - использовать макрос в котором не будет шаблона

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 14:02
xeon_greg
virus_net писал(а):Да нету загадок, тут точно есть очепятка.
Название контекста во втором случае vioce_menu, а Goto на voice_menu
на самом деле опечатки там не было, это я уже при наборе текста в форум дописывал название контекста чтобы понятнее было и тут уже сделал опечатку

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 17:32
zzuz
Чтобы экранировать такой шаблон , помещайте шаблонные символы в []
То есть .

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

_16X-CHA[N],BlaBla()

Re: Goto переход в экстеншн шаблон

Добавлено: 08 фев 2017, 18:51
virus_net
ёк макарёк ! про шаблонные букАвки, то я и забыл :D от дебил :lol:
спасибо zzuz, теперь чудеса точно исчезли

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

*CLI> dialplan show 123-CHANUNAVAIL@tests
[ Context 'tests' created by 'pbx_config' ]
'_XXX-CHA[N]U[N]AVAIL' => 1. NoOp(Dial(SIP ${EXTEN:0:3},15,t)) [pbx_config]

Re: Goto переход в экстеншн шаблон

Добавлено: 16 фев 2017, 12:25
whoim
бум знать, если не забудем :D