Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / TrixBox, Elastix, FreePbx / Trixbox и custom-IVR

Trixbox и custom-IVR

Откуда: Казахстан, Петропавловск
Сообщений: 69

Trixbox и custom-IVR

Здравствуйте (про уток начитался в предыдущей теме)
Делаю интерактивное меню с возможностью звонить извне по набору короткого номера (1-, 2-х или 3-хзначного), триксбоксовское IVR этого не позволяет, поэтому располагаю следующее в extension-custom:
[fromivr]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Background(custom/1)
exten => s,n,Set(TIMEOUT(digit)=2)
exten => s,n,WaitExten(3)
exten => s,n,Playback(custom/2)
exten => s,n,Goto(ext-queues,502,1)
exten => _.,1,GotoIf($[${EXTEN} > 799]?no_reg) ; разрешено набрать номера с 1 до 799
exten => _.,n,Set(SPEEDDIALLOCATION=${EXTEN})
exten => _.,n(lookup),Macro(speeddial-lookup,${SPEEDDIALLOCATION},${AMPUSER}) ; выдергиваю номер из телефонной книги
exten => _.,n,GotoIf($["${SPEEDDIALNUMBER}"=""]?no_reg)
exten => _.,n,NoOp(SPEEDDIALNUMBER = ${SPEEDDIALNUMBER})
exten => _.,n,Set(LIMIT_WARNING_FILE=beep)
exten => _.,n,Set(LIMIT_PLAYAUDIO_CALLEE=yes)
exten => _.,n,Set(LIMIT_PLAYAUDIO_CALLER=yes)
exten => _.,n,Set(CALLERID(name)=IVR@${CALLERID(number)})
exten => _.,n,Goto(fromivr-out,${SPEEDDIALNUMBER},1) ; переход в контекст дозвона
exten => _.,n(no_reg),Playback(custom/3)
exten => _.,n,Goto(ext-queues,502,1)
exten => h,1,Hangup


Собственно, все работает, но предварительно хотел вместо шаблона _. использовать шаблон _Х!, но он не отрабатывал двух и трехзначные номера. Переменная ${EXTEN} устанавливалапсь сразу же по набору первой цифры. Вопрос - почему?
2010-04-21 10:22

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: Trixbox и custom-IVR

гыыыыы
в первый раз я подобным извращением занимался.
все гораздо проще:

[inbound-ivr]
exten => s,1,noop(------====inbound-ivr====------)
exten => s,n,answer
exten => s,n,macro(usersets-1,goto,end,Set,__concurrent=TRUE)
exten => s,n(begin),playback(silence/3)
exten => s,n,background(custom/intro)
exten => s,n,background(custom/if-you-want-recive-fax-press-6)
exten => s,n,background(custom/otdel-sbyta-press-4)
exten => s,n,background(custom/otdel-snabjeniya-press-2)
exten => s,n,background(custom/otdel-buhgaltery-press-3)
exten => s,n,background(custom/otdel-yurist-press-1)
exten => s,n,background(custom/inter-phone-number-or-wait)
exten => s,n,waitexten(10)
;exten => s,n,Set(loop=${loop}+1)
;exten => s,n,gotoif(($["${loop}" = "3"]?:loop)
exten => s,n,goto(ext-group,600,1)

exten => 4,1,ForkCDR()
exten => 4,n,goto(inbound-ivr-sbyt,s,1)
exten => 2,1,ForkCDR()
exten => 2,n,goto(inbound-ivr-snab,s,1)
exten => 3,1,ForkCDR()
exten => 3,n,goto(inbound-ivr-buhg,s,1)
exten => 1,1,ForkCDR()
exten => 1,n,goto(inbound-ivr-yurist,s,1)
exten => 6,1,ForkCDR()
exten => 6,n,goto(inbound-ivr-fax,s,1)

exten => _1XX,1,ForkCDR()
exten => _1XX,n,goto(ext-local,${EXTEN},1)

[inbound-ivr-sbyt]
exten => s,1,noop(------====inbound-ivr-sbyt====------)
exten => s,n,background(custom/for-kiselev-press-1)
exten => s,n,background(custom/for-mahrova-press-2)
exten => s,n,background(custom/for-ipulaeva-press-3)
exten => s,n,background(custom/for-budeeva-press-4)
exten => s,n,waitexten(5)
exten => s,n,goto(ext-group,600,1)

;exten => 1,1,goto(ext-local,103,1)
;exten => 2,1,goto(ext-local,117,1)
;exten => 3,1,goto(ext-local,124,1)
;exten => 4,1,goto(ext-local,104,1)
exten => 1,1,ForkCDR()
exten => 1,n,goto(ext-queues,610,1)
exten => 2,1,ForkCDR()
exten => 2,n,goto(ext-queues,611,1)
exten => 3,1,ForkCDR()
exten => 3,n,goto(ext-queues,612,1)
exten => 4,1,ForkCDR()
exten => 4,n,goto(ext-queues,613,1)
exten => 9,1,ForkCDR()
exten => 9,n,goto(inbound-ivr,s,1)

;exten => _1XX,1,goto(ext-local,${EXTEN},1)

[inbound-ivr-snab]
exten => s,1,noop(------====inbound-ivr-snab====------)
exten => s,n,background(custom/for-melkozerov-press-1)
exten => s,n,background(custom/for-zjidkov-press-2)
exten => s,n,waitexten(5)
exten => s,n,goto(ext-group,600,1)

exten => 1,1,ForkCDR()
exten => 1,n,goto(ext-local,123,1)
exten => 2,1,ForkCDR()
exten => 2,n,goto(ext-local,120,1)
exten => 9,1,ForkCDR()
exten => 9,n,goto(inbound-ivr,s,1)

;exten => _1XX,1,goto(ext-local,${EXTEN},1)

[inbound-ivr-buhg]
exten => s,1,noop(------====inbound-ivr-buhg====------)
exten => s,n,goto(ext-local,106,1)

[inbound-ivr-yurist]
exten => s,1,noop(------====inbound-ivr-yurist====------)
exten => s,n,goto(ext-local,114,1)

[inbound-ivr-fax]
exten => s,1,noop(------====inbound-ivr-fax====------)
exten => s,n,background(custom/fax-intro)
exten => s,n,waitexten(5)
exten => s,n,goto(macro-fax,f-101,1)

exten => 9,1,goto(inbound-ivr,s,1)

exten => _1XX,1,ForkCDR()
exten => _1XX,n,goto(macro-fax,f-${EXTEN},1)
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2010-04-21 10:30

Сообщений: 6521

Re: Trixbox и custom-IVR

_Х! - это из забытого старого asteriskNOW.
Используйте синтаксис
_Х - для однозначных
_ХХ - для двух значных
_ХХХ - трёхзначных,
_Х. - любой значности больше чем 1.
2010-04-21 10:37

Откуда: Казахстан, Петропавловск
Сообщений: 69

Re: Trixbox и custom-IVR

1. Это понятно, что можно описать одно, двух и трехзначные номера раздельно, хотелось сделать диалплан "красивее" чтоли, поэтому и испытывал шаблон _Х!
Самое интересное, что если в контекст, где используется маска _Х! направить вызовы типа
fromivr,22,1
или fromivr,222,1

то тогда двух и трехзначные номера отрабатываются нормально. Но если переменную ${EXTEN} задает команда WaitExten(3), то 3-х секундное ожидание этой команды не отрабатывается, переменную ${EXTEN} устанавливает первая нажатая цифра.
2. Никак не могу понять, почему если у меня в контексте присутствуют имена _. и s, то при вызове экстеншена s этот экстеншен и вызывается! Хотя он попадает под маску _.

В соответствии с первой заповедью админа, "работает - не трогай" можно и забить, но охота до конца разобраться
2010-04-21 13:03

Сообщений: 6521

Re: Trixbox и custom-IVR

2. Потому что мачится на точное соответствие сначала - есть такой
exten => s,1 и он и исполняется первым. Как они прописаны вконтексте - не играет рояли, важней как их видит Истериск. Это можно видеть по
dialplan show <mydialplan_name>
вот там по приоритетам и будут видны.
Все последние гайды советуют не употреблять конструкции масок
exten => _.,
именно потому, что в неё попадают и буквы и цифры.
2010-04-21 17:10

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru