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

Пояснить, как работает include =>

Добавлено: 21 июн 2012, 16:47
pilot
Господа,
кто может пояснить, как работает 'include =>', точнее, как вклиниться в конфиги FreePBX?
Суть вопроса:
1. FreePBX генерирует контекст

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

[from-trunk-sip-Tenor]
include => from-trunk-sip-Tenor-custom
exten => _.,1,Set(GROUP()=OUT_3)
exten => _.,n,Goto(from-trunk,${EXTEN},1)
2. Я пытаюсь в extension_custom.conf сделать добавку к этому контексту:

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

[from-trunk-sip-Tenor-custom]
exten => _.,1,Noop(TRALI-VALI)
3. Смотрю в dialplan show - мой контекст стоит после основного. В отработке звонка он не появляется, т.к., как я понимаю, раньше него срабатывает Goto.

Т.е. получается, что добавление по include всегда идет в конец, вне зависимости от того, где стоит сам include? Как в таком случае правильно написать ...-custom, чтобы он сработал?

Re: Пояснить, как работает include =>

Добавлено: 22 июн 2012, 07:13
Vlad1983
просто включает все содержимое контекста, причем в последнюю очередь независимо от того в какой строке стоит include =>
в результате у вас следующий контекст
[from-trunk-sip-Tenor]
exten => _.,1,Set(GROUP()=OUT_3)
exten => _.,n,Goto(from-trunk,${EXTEN},1)
exten => _.,1,Noop(TRALI-VALI) ; не будет создан из-за конфликта приоритета

Re: Пояснить, как работает include =>

Добавлено: 22 июн 2012, 10:18
pilot
Спасибо, vlad1983
Т.е. предположил я правильно.
Тогда суть вопроса остается - как корректно вклиниться в контекст или в макрос конфига FreePBX. Приоритетами я играть пытался - влезть до Goto у меня не получилось. Приоритет n в первой строчке моего контекста не принимается (ошибка), 2 - тоже пересекается с Goto, 3 - уже никому не интересно.

У них там в генерируемых фронтэндом конфигах множество таких "выходов" на включения custom-фрагментов для подпрограмм, макросов и контекстов. Но сами эти контексты/подпрограммы/макросы заканчиваются всякими goto (как в данном примере), Dial и прочими делами, при которых дело до добавленных include-ом в конец строчек просто не доходит.
Куда бедному крестьянину податься? (Сейчас набежит куча ботов с сообщениями "в платную поддержку" :) )

Re: Пояснить, как работает include =>

Добавлено: 22 июн 2012, 11:23
pilot
Вдогонку.
Нашел контекст from-pstn, состоящий из одних include, причем первый - на custom-фрагмент. Переименовал свой контекст в from-pstn-custom. Он заработал (стал появляться в протоколе звонка). Но при этом накрылась первая строчка из "встроенного" контекста ext-local, который включается следом. Т.е. своим вклиниванием я что-то испортил.

Так как правильно влазить в конфиги FreePBX, чтобы ничего не испортить, может кто-то что-то посоветовать?

Re: Пояснить, как работает include =>

Добавлено: 22 июн 2012, 13:56
Vlad1983
в кастомных нужно назначать экстен большей длины, но это не будет работать если нужно перебить s, тогда нужно использовать extensions_override_freepbx.conf

или всегда extensions_override_freepbx.conf

Re: Пояснить, как работает include =>

Добавлено: 22 июн 2012, 14:59
pilot
Я перебил контекст из примера в override, добавив в него то, что мне надо. Все заработало, спасибо за совет.

Однако там видно, что упоминаются некоторые потроха FreePBX (exten => _.,1,Set(GROUP()=OUT_3)). Т.е. есть риск, что при изменении конфигурации транков это решение все испортит?

Нельзя ли пояснить, что означает
назначать экстен большей длины
? Если речь идет о том, что в кастомных включениях надо использовать что-то более точное, чем "_.", то я пробовал и "_X.", и "_9XX" - не помогало.