Макросы - способ централизовать повторяющиеся операции диалплана для их последующего редактирования в одном месте. В следующем примере операция записи звонка вынесена в отдельный макрос:
;; без макроса
[incoming]
exten => s,1,Set(MONITOR_FILE=/mixmon/${UNIQUEID})
same => n,MixMonitor(${MONITOR_FILE}.wav)
same => n,Playback(beep)
same => n,Queue(myqueue,,,,30)
same => n,Hangup()
;; с макросом
[macro-mymixmon]
exten => s,1,Set(MONITOR_FILE=/mixmon/${UNIQUEID})
exten => s,n,MixMonitor(${MONITOR_FILE}.wav)
[incoming]
exten => s,1,Macro(mymixmon)
same => n,Playback(beep)
same => n,Queue(myqueue,,,,30)
same => n,Hangup()
При использовании макросов следуйте двум правилам:
[macro-somename]
Macro(somename)