[ребус решен] Приоритет выполнения include (вопрос в форме ребуса)
Подзабыл теорию не серчайте. На данный момент не имею возможности провести тестирование, и потому спрашиваю здесь.
Что имеет более высокий приоритет в контекстах: вложение в контекст или include?
Собственно сам ребус:
| Code: |
| [alpha] exten = _86XXX.,1,Dial(SIP/100) include => beta [beta] exten = _86XXX.,1,Dial(SIP/200) |
При наборе 8611111111 куда пойдет звонок на экстеншен 100 или 200?
По логике (как я подозреваю) должен уйти на 100.
Если это так тогда если изменить [alpha] на:
exten = _X.,1,Dial(SIP/100)
include => beta
Тоже звонок пойдет на 100? Или все же приоритетней include?
Если это так тогда если изменить [alpha] на:
exten = _X.,1,Dial(SIP/100)
include => beta
Тоже звонок пойдет на 100? Или все же приоритетней include?
Спасибо
Last edited by Artyo on Thu Nov 04, 2010 20:11
Я прав?
Помню что чтобы такого избежать надо делать 2 и более include'ов но опять же в каком порядке
update. помню что приоритет можно было из cli посмотреть CLI> dialplan show alpha
Но нет доступа сейчас к астериску, а логику написать надо
update 2. Хотя помоему это я путаю. Если в одном контексте разместить
exten = _X.,1,Dial(SIP/100)
exten = _86.,1,Dial(SIP/200)
То при наборе 861111111111 вызовет 200.
А если включить вторую строчку в include то вызовет 100.
Освежил память и сам ответил на ребус
Last edited by Artyo on Thu Nov 04, 2010 20:11
_________________
Успехов!
С include хотя утверждение верно, будут обрабатываться по порядку, но с экстеншенами по другому:
пример:
| Code: |
| [prio_test] exten => XXXXXXX,1,Dial(sip/100) exten => 1234567,1,Dial(sip/200) exten => X.,1,Dial(sip/300) exten => 12XXXXX,1,Dial(sip/400) |
В этом случае уж точно приоритет будет не по порядку обрабатываться: 100, 200, 300, 400. Вот что говорит сам астериск:
| Code: |
| CLI> dialplan show prio_test [ Context 'prio_test' created by 'pbx_config' ] '1234567' => 1. Dial(sip/200) [pbx_config] '12XXXXX' => 1. Dial(sip/400) [pbx_config] 'X.' => 1. Dial(sip/300) [pbx_config] 'XXXXXXX' => 1. Dial(sip/100) [pbx_config] -= 4 extensions (4 priorities) in 1 context. =- |
Получается все логично: уйдет на 200. Наиболее точный шаблон всегда имеет приоритет выше. Но этого не будет если есть include:
| Code: |
| [prio_test] exten => XXXXXXX,1,Dial(sip/100) exten => X.,1,Dial(sip/300) exten => 12XXXXX,1,Dial(sip/400) include => prio_test2 [prio_test2] exten => 1234567,1,Dial(sip/200) |
ответит:
| Code: |
| CLI> dialplan show prio_test [ Context 'prio_test' created by 'pbx_config' ] '12XXXXX' => 1. Dial(sip/400) [pbx_config] 'X.' => 1. Dial(sip/300) [pbx_config] 'XXXXXXX' => 1. Dial(sip/100) [pbx_config] Include => 'prio_test2' [pbx_config] -= 3 extensions (3 priorities) in 1 context. =- |
соответственно набранный номер 1234567 уйдет уже на 400 номер.
update. единственно что не понятно почему X. стоит выше чем XXXXXX
_________________
Slackware 13.1 - Asterisk 1.8
В попыхах упустил самое важное из виду, а именно символ шаблона _
| Artyo wrote: |
| Немного не так. * не бейсик. |
а я такого никогда и не заявлял - что сам астериск это бейсик. я говорил что стандартный конфиг астериска - это "аля-Бейсик" язык только команды в телефонных терминах(и я не зря упомянул Cи-подобный AEL). более точного аналога для описания вы не найдете. что вам не понравилось в моем сравнении? или просто поспорить захотели, не важно о чём?
обратно к нашим баранам:
| Quote: |
| '1234567' => 1. Dial(sip/200) [pbx_config] '12XXXXX' => 1. Dial(sip/400) [pbx_config] |
сделайте для теста конкретно такой диалплан и проверьте. звонок по логике должен уйти на первый встреченный "сверху-вниз" шаблон, тоесть на sip/200.
или
| Quote: |
| '12XXXXX' => 1. Dial(sip/400) [pbx_config] '1234567' => 1. Dial(sip/200) [pbx_config] |
тут уйдет на 400
тоесть более "узкие" шаблоны должны стоять "сверху вниз" в диалплане а _X. уже в самом низу. я не утрверждаю что так и есть, но уверен что так должно быть - чисто по логике. (ну плюс еще немного личного опыта с этим)
убедите меня что я не прав.
ps: кнопку Цитаты у вас забираю, так как вы ей пользуетесь совершенно неразумно. советую перечитать правила.
_________________
Успехов!