宏指令和 上下文 基本一样,宏指令的定义如下:
[macro-voicemail]
exten =>s, 1, Dial(${ARG1}, 10, r)
exten =>s,2, voicemail (u${MACRO_EXTEN}@default)
exten =>s, 102, voicemail (b${MACRO_EXTEN}@default)
说明:
1、宏指令名字的定义:macro-name 必须要以 macro- 开头。
2、宏指令中的 extension 只能用 s 表示,这下应该就能明白上篇例子中的s了
既然用到了宏,那么其中的像 分机 等就都需要用变量来表示了,宏中预定义变量:
${MACRO_CONTEXT} ;这个被调用的宏中,初始的上下文
${MACRO_EXTEN} ;这个被调用的宏中,初始的extension
${MACRO_PRIORITY} ;这个被调用的宏中,初始的优先级
${ARGn};传递到宏指令的第n个变量。如第一个变量 ${ARG1}
然后就是在 Dialplan 中调用我们的宏:
exten =>101,1,Macro(voicemail, ${JOHN})
exten =>102,1, Macro(voicemail, ${JANE})
exten =>103,1, Macro(voicemail, ${JACK})
使用 Macro() 应用 :
1、其中第一个参数就是 宏的名字但不需要macro-前缀,
2、然后后面一个 ${JOHN} 这个参数就是宏中的 ${ARG1}
3、宏中的 ${MACRO_EXTEN} 那就是 exten =>101,1,Macro(voicemail, ${JOHN}) 这个里面的101
来源:oschina
链接:https://my.oschina.net/u/187801/blog/109445