Нет, не придётся делать через всё-custom. Cмотрим
; Customizations to this dialplan should be made in extensions_custom.conf
; See extensions_custom.conf.sample for an example.
; If you need to use [macro-dialout-trunk-predial-hook], [ext-did-custom], or
; [from-internal-custom] for example, place these in this file or they will get overwritten.
Ну и почитайте рекомендации в самом [macro-dialout-trunk-predial-hook] в файле extensions.conf
В частном случае можно написать контекст
[from-internal-custom]
exten _X.,1,Macro(dialout-trunk-custom,outbound-allroutes,${EXTEN})
ну и написать конечно модифицированный macro-dialout-trunk-custom
В общем случае: думаю, что модифицированый macro-dialout-trunk нужно вам вызывать не во всех случаях, например - только при звонках наружу, который уходит через outbound-allroutes.
Можно увидеть, что
*CLI> dialplan show outbound-allroutes
[ Context 'outbound-allroutes' created by 'pbx_config' ]
'foo' => 1. Noop(bar) [pbx_config]
Include => 'outbound-allroutes-custom' [pbx_config]
Include => 'outrt-001-Alpha' [pbx_config]
Include => 'outrt-002-Bravo' [pbx_config]
Include => 'outrt-003-Charlie' [pbx_config]
то есть мы можем создать контекст outbound-allroutes-custom и определённый шаг в нём.
Заметим, что всё из outbound-allroutes-custom распределяется согласно приоритетам таблицы исходящих маршрутов из GUI. И каждый маршрут на 4-м шаге вызывает тот самый Macro(dialout-trunk,12,${EXTEN},,)
'_172[78]' => 1. Macro(user-callerid,SKIPTTL,) [pbx_config]
2. Set(_NODEST=) [pbx_config]
3. Macro(record-enable,${AMPUSER},OUT,) [pbx_config]
4. Macro(dialout-trunk,12,${EXTEN},,) [pbx_config]
5. Macro(outisbusy,) [pbx_config]
Зная эту кухню мы можем например задать нужный параметр в outbound-allroutes-custom одним шагом, а следующим шагом отправить его дальше по диалплану.
exten => s,1,NoCDR()
exten => s,2,Goto(outbound-allroutes,${EXTEN},1)