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

ael include context

Добавлено: 20 апр 2013, 22:12
d771
Собственно, не пойму, что я деллаю нетак:

есть некий обработчик:

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

context local_users {
 _3XXXXXX => {
        // Проверяем, зареган ли номер у нас перед звонком в сибирьтелеком
        ChanIsAvail(SIP/383${EXTEN},s);
        switch (${AVAILSTATUS}) {
            case 5:
                Hangup(20);
                break;
            case 4:
                Dial(SIP/${EXTEN}@sibirtelecom);
                break;
            default:
                Dial(SIP/383${EXTEN});
        }
        Hangup(); // надо только для отладки
 }

<остальное>
}
В таком варианте контекст работает.

но стоит переписать так:

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

context detect_local {
 _3XXXXXX => {
        // Проверяем, зареган ли номер у нас перед звонком в сибирьтелеком
        ChanIsAvail(SIP/383${EXTEN},s);
        switch (${AVAILSTATUS}) {
            case 5:
                Hangup(20);
                break;
            case 4:
                Dial(SIP/${EXTEN}@sibirtelecom);
                break;
            default:
                Dial(SIP/383${EXTEN});
        }
        Hangup(); // надо только для отладки
 }
}
context users {

includes {detect_local;};

<остальное>
}
И все, он игнорируется.

но по ael reload он успешно применяется:
[Apr 21 01:10:39] -- Registered extension context 'users'; registrar: pbx_ael
[Apr 21 01:10:39] -- Including context 'detect_local' in context 'users'

Можете подсказать, где ошибка?

Re: ael include context

Добавлено: 20 апр 2013, 22:40
ded
d771, это нифига не Вопросы новичков.

Re: ael include context

Добавлено: 20 апр 2013, 23:07
Aven
Не используйте AEL.
Тем более если не замечаете лишние скобки.

Re: ael include context

Добавлено: 20 апр 2013, 23:17
ded
Добавлю: освойте простой диал-план, выполнение шагов простое и примитивное, как в бэйсике. Если освоите бэйсик, то потом может перейдёте на ael.
P.S. не используйте конструкции Dial(SIP/${EXTEN}@sibirtelecom)
лучше Dial(SIP/sibirtelecom/${EXTEN})
и начните с книжек всё таки.

Re: ael include context

Добавлено: 21 апр 2013, 07:24
d771
Aven писал(а):Не используйте AEL.
Тем более если не замечаете лишние скобки.
Во сейчас внимательно пересмотрел мои посты. Никак не могу заметить лишние скобки. Даже уже их пересчитал все.
можете показать, какие именно лишние?

Re: ael include context

Добавлено: 21 апр 2013, 07:26
d771
ded писал(а): и начните с книжек всё таки.
Да книжки-то под рукой. Чай в гугле не забанили. Но некоторые проблемы ставят меня в тупик даже на фазе "сформировать поисковый запрос".

Re: ael include context

Добавлено: 21 апр 2013, 08:59
d771
Вобщем, оказалось, что независимо от позиции стоки "includes" включеный контекст всегда выполняется в конце. Не зависимо от того, перекрывает он существующие или нет.
Странное поведение, однако.

Re: ael include context

Добавлено: 21 апр 2013, 09:58
Vlad1983
от положения include зависит только порядок обхода самих include
корневые екстены всегда первые
так всегда было

Re: ael include context

Добавлено: 21 апр 2013, 10:24
Aven
d771 писал(а):
Aven писал(а):Не используйте AEL.
Тем более если не замечаете лишние скобки.
Во сейчас внимательно пересмотрел мои посты. Никак не могу заметить лишние скобки. Даже уже их пересчитал все.
можете показать, какие именно лишние?
ну две скобки же после: Hangup(); // надо только для отладки

Re: ael include context

Добавлено: 21 апр 2013, 10:47
april22
ни чего странного - так задумано , если нет описания действия в основном контексте - то отправляется в инклуд .