[macro-diversion]
; *20* to delete diversions
; *21* to set diversion to "mailbox" or toggle
; *22*XX to set diversion to number XX
exten = s,1,NoOp(Macro diversion called for ${MACRO_EXTEN} by extension ${CALLERID(num)})
exten = s,n,NoCDR()
;exten = s,n,Set(PEERNAME=tel${CALLERID(num)})
exten = s,n,Set(PEERNAME=${CALLERID(num)})
exten = s,n,GotoIf($["${SIPPEER(${PEERNAME},context)}"!="internal"]?end)
exten = s,n,GotoIf($["${CUT(MACRO_EXTEN,*,2)}"="20"]?unset)
exten = s,n,GotoIf($["${CUT(MACRO_EXTEN,*,2)}"="21"]?mailbox)
exten = s,n,GotoIf($["${CUT(MACRO_EXTEN,*,2)}"="22"]?number)
exten = s,n,Goto(hangup)
exten = s,n(mailbox),GotoIf($["${DB(DIV/${CALLERID(num)})}"!=""]?unset)
exten = s,n,NoOp(Setting diversion for extension ${CALLERID(num)} to mailbox)
exten = s,n,Set(DB(DIV/${CALLERID(num)})=mailbox)
;exten = s,n,TrySystem(/var/lib/asterisk/agi-bin/setmessage.php "Umgeleitet zur Mailbox" "${PEERNAME}" &)
exten = s,n,Devstate(div${CALLERID(num)},2)
exten = s,n,Goto(end)
exten = s,n(number),Set(DIV_DEST=${MACRO_EXTEN:4})
exten = s,n,GotoIf($["${DIV_DEST}"=""]?hangup)
exten = s,n,NoOp(Setting diversion to ${DIV_DEST} for extension ${CALLERID(num)})
exten = s,n,Set(DB(DIV/${CALLERID(num)})=${DIV_DEST})
;exten = s,n,TrySystem(/var/lib/asterisk/agi-bin/setmessage.php "Umgeleitet zu ${DIV_DEST}" "${PEERNAME}" &)
exten = s,n,Devstate(div${CALLERID(num)},2)
exten = s,n,Goto(end)
exten = s,n(unset),NoOp(Un-Setting diversion for extension ${CALLERID(num)})
exten = s,n,Set(DB(DIV/${CALLERID(num)})="")
;exten = s,n,TrySystem(/var/lib/asterisk/agi-bin/setmessage.php "" "${PEERNAME}" &)
exten = s,n,Devstate(div${CALLERID(num)},1)
exten = s,n,Goto(end)
exten = s,n(end),Answer()
exten = s,n,Wait(0.5)
exten = s,n(hangup),Hangup()