VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
xeon_greg
Сообщения: 6
Зарегистрирован: 08 фев 2017, 12:11

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

Сообщение 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.
xeon_greg
Сообщения: 6
Зарегистрирован: 08 фев 2017, 12:11

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

Сообщение xeon_greg »

ага понял сам почему, тк это шаблон символы N трактуются спец образом в NOANSWER и CHANUNAVAIL . тогда другой вопрос как это обойти ?
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение 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)
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение 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. =-
О как :) Чудеса да и тока, но ведь чудес не бывает.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение 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
Удивлен состоянием счета. Реально удивлен :)
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
xeon_greg
Сообщения: 6
Зарегистрирован: 08 фев 2017, 12:11

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

Сообщение xeon_greg »

да таки как DED yаписал придется использовать макрос, так шаблон не пропускает N,X,Z те трактует их как спец-символы. ну можно сказать проблема решена - использовать макрос в котором не будет шаблона
xeon_greg
Сообщения: 6
Зарегистрирован: 08 фев 2017, 12:11

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

Сообщение xeon_greg »

virus_net писал(а):Да нету загадок, тут точно есть очепятка.
Название контекста во втором случае vioce_menu, а Goto на voice_menu
на самом деле опечатки там не было, это я уже при наборе текста в форум дописывал название контекста чтобы понятнее было и тут уже сделал опечатку
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

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

Сообщение zzuz »

Чтобы экранировать такой шаблон , помещайте шаблонные символы в []
То есть .

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

_16X-CHA[N],BlaBla()
Линия24 - Системы Массового Телефонного Обслуживания
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение 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]
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
whoim
Сообщения: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар
Контактная информация:

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

Сообщение whoim »

бум знать, если не забудем :D
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH