[macro-rino-set-channel-vars] exten => s,1,Set(__RINO_RETURN_CONTEXT=${MACRO_CONTEXT}) exten => s,n,Set(__RINO_RETURN_EXTEN=${MACRO_EXTEN}) exten => s,n,Set(__RINO_RETURN_PRIORITY=$[${MACRO_PRIORITY} + 2]) exten => s,n,MacroExit [macro-rino-dtmf] exten => s,1,NoOp(DTMFDigitParam=${ARG1}) exten => s,n,GotoIf($["${ARG1}" = "1"]?dtmf1) exten => s,n,GotoIf($["${ARG1}" = "2"]?dtmf2) exten => s,n,GotoIf($["${ARG1}" = "3"]?dtmf3) exten => s,n,GotoIf($["${ARG1}" = "4"]?dtmf4) exten => s,n,GotoIf($["${ARG1}" = "5"]?dtmf5) exten => s,n,GotoIf($["${ARG1}" = "6"]?dtmf6) exten => s,n,GotoIf($["${ARG1}" = "7"]?dtmf7) exten => s,n,GotoIf($["${ARG1}" = "8"]?dtmf8) exten => s,n,GotoIf($["${ARG1}" = "9"]?dtmf9) exten => s,n,GotoIf($["${ARG1}" = "0"]?dtmf0) exten => s,n,GotoIf($["${ARG1}" = "*"]?dtmfAs) exten => s,n,GotoIf($["${ARG1}" = "#"]?dtmfPo) exten => s,n(dtmf1),NoOp(DTMFDigit=1) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf2),NoOp(DTMFDigit=2) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf3),NoOp(DTMFDigit=3) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf4),NoOp(DTMFDigit=4) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf5),NoOp(DTMFDigit=5) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf6),NoOp(DTMFDigit=6) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf7),NoOp(DTMFDigit=7) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf8),NoOp(DTMFDigit=8) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf9),NoOp(DTMFDigit=9) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmf0),NoOp(DTMFDigit=0) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmfAs),NoOp(DTMFDigit=*) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmfPo),NoOp(DTMFDigit=#) exten => s,n,Goto(s,dtmfexit) exten => s,n(dtmfexit),MacroExit exten => t,1,MacroExit exten => i,1,MacroExit [rino-incoming-call] exten => _[0-9*#p]!,1,Macro(rino-set-channel-vars) exten => _[0-9*#p]!,n,Set(CDR(recvip)=${CHANNEL(recvip)}) exten => _[0-9*#p]!,n,NoOp(CallerFullAddress=${CALLERID(all)}) exten => _[0-9*#p]!,n,NoOp(RedirectedFrom=${CALLERID(rdnis)}) exten => _[0-9*#p]!,n,NoOp(RedirectedCause=${PRIREDIRECTREASON}) exten => _[0-9*#p]!,n,NoOp(SipDomain=${SIPDOMAIN}) exten => _[0-9*#p]!,n,NoOp(SipUri=${SIPURI}) exten => _[0-9*#p]!,n,NoOp(Host=${CHANNEL(recvip)}) exten => _[0-9*#p]!,n,NoOp(${CALLERID(dnid)}) exten => _[0-9*#p]!,n,NoOp(${PRIREDIRECTREASON}) exten => _[0-9*#p]!,n,Set(PlayKPV=0) ;initial timeout for incoming channel exten => _[0-9*#p]!,n,Set(TIMEOUT(response)=1000000) ;exten => _[0-9*#p]!,n,Progress() exten => _[0-9*#p]!,n(wait),Wait(1000000) exten => _[0-9*#p]!,n,Goto(wait) exten => default,n(wait),Wait(1000000) exten => default,n,Set(TIMEOUT(response)=1000000) exten => default,n(wait),Wait(1000000) exten => default,n,Goto(wait) exten => rino-incoming-call,n(wait),Wait(1000000) exten => rino-incoming-call,n,Set(TIMEOUT(response)=1000000) exten => rino-incoming-call,n(wait),Wait(1000000) exten => rino-incoming-call,n,Goto(wait) exten => s,1,Macro(rino-set-channel-vars) exten => s,n,NoOp(${CALLERID(all)}) exten => s,n,Set(PlayKPV=0) ;initial timeout for incoming channel exten => s,n,Set(TIMEOUT(response)=1000000) ;exten => s,n,Progress() exten => s,n(wait),Wait(1000000) exten => s,n,Goto(wait) exten => _*8[0-9]#,1,SET(GLOBAL(PICKUPMARK)=${EXTEN:2}) exten => _*8[0-9]#,n,Pickup(${EXTEN:2}) ;SUBSCRIBE presence test ;exten => _XXX,hint,SIP/293&SIP/211 [rino-dir-incoming-call] exten => _[0-9*#p]!,1,Answer(4000) exten => _[0-9*#p]!,2,Set(TIMEOUT(response)=1000000) exten => _[0-9*#p]!,3,Set(CALLERID(num)=777888) exten => _[0-9*#p]!,4,Dial(SIP/222/222) [rino-bridge-call] ;exten => select,1,Macro(rino-set-channel-vars) ;initial timeout for incoming channel exten => select,1,Set(TIMEOUT(response)=1000000) exten => select,n,Set(CALLERID(num)=${RinoDialerNumber}) ;exten => select,n,Dial(${RinoChannelName}/${RinoDialNumber},,gF(rino-outgoing-answer^select^1)) exten => select,n,Dial(${RinoChannelName},,gF(rino-outgoing-answer^select^1)) ;some redirect or FAIL from dial exten => select,n,GotoIf($["${RINO_RETURN_CONTEXT}" = ""]?rino-conf-return,select,1) exten => select,n,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) ;some hangup ;exten => h,1,Dial(${RinoChannelName}/${RinoDialNumber}) ;exten => h,1,GotoIf($["${RINO_RETURN_CONTEXT}" = ""]?rino-conf-return,select,1) ;exten => h,2,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) ;exten => i,1,GotoIf($["${RINO_RETURN_CONTEXT}" = ""]?rino-conf-return,select,1) ;exten => i,2,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) [rino-disconnect] exten => select,1,HangUp(${RelReason}) [rino-incoming-ringing] ;exten => select,1,Macro(rino-set-channel-vars) exten => select,1,NoOp() exten => select,n,Ringing exten => select,n,NoOp() exten => select,n,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) ;exten => select,n(wait),Wait(1000000) ;exten => select,n,Goto(wait) [rino-incoming-answer] exten => select,1,Macro(rino-set-channel-vars) exten => select,n,Answer exten => select,n,NoOp() exten => select,n,GotoIf($["${PlayKPV}" != "1"]?dtmfwait) exten => select,n(kpv),Playtones(0/3200,425/800) exten => select,n(dtmfwait),NoOp(ReadyToConf) exten => select,n,WaitExten exten => select,n,Goto(dtmfwait) exten => _[0-9*#],1,GotoIf($["${PlayKPV}" = "1"]?gokpv) exten => _[0-9*#],n,Macro(rino-dtmf,${EXTEN}) exten => _[0-9*#],n,Goto(select,dtmfwait) exten => _[0-9*#],n(gokpv),Goto(select,dtmfwait) exten => i,1,Goto(select,dtmfwait) exten => t,1,Goto(select,dtmfwait) [rino-outgoing-call] exten => _X!,1,Macro(rino-set-channel-vars) exten => _X!,n,NoOp() ;initial timeout for outgoing channel exten => _X!,n,Set(TIMEOUT(response)=1000000) exten => _X!,n(wait),Wait(1000000) exten => _X!,n,Goto(wait) exten => s,1,Macro(rino-set-channel-vars) exten => s,n,NoOp() ;initial timeout for outgoing channel exten => s,n,Set(TIMEOUT(response)=1000000) exten => s,n(wait),Wait(1000000) exten => s,n,Goto(wait) [rino-outgoing-answer] exten => select,1,Macro(rino-set-channel-vars) exten => select,n,NoOp() exten => select,n,GotoIf($["${PlayKPV}" != "1"]?dtmfwait) exten => select,n(kpv),Playtones(0/3200,425/800) exten => select,n(dtmfwait),NoOp(ReadyToConf) exten => select,n,WaitExten exten => select,n,Goto(dtmfwait) exten => _[0-9*#],1,GotoIf($["${PlayKPV}" = "1"]?gokpv) exten => _[0-9*#],n,Macro(rino-dtmf,${EXTEN}) exten => _[0-9*#],n,Goto(select,dtmfwait) exten => _[0-9*#],n(gokpv),Goto(select,dtmfwait) exten => i,1,Goto(select,dtmfwait) exten => t,1,Goto(select,dtmfwait) [rino-play-voice] exten => select,1,NoOp(Return=${RINO_RETURN_CONTEXT}:${RINO_RETURN_EXTEN}:${RINO_RETURN_PRIORITY}) exten => select,n,NoOp(VoiceStart=${SynthzRpt}:${Synthz}) ;exten => select,n(VoicePlay),Background(${Synthz},sn) exten => select,n(VoicePlay),Background(${Synthz},n) exten => select,n,GotoIf($["${BACKGROUNDSTATUS}" != "SUCCESS"]?VoiceError) exten => select,n,Set(SynthzRpt=$[${SynthzRpt} - 1]) exten => select,n,GotoIf($[${SynthzRpt} > 0]?VoicePlay) exten => select,n(VoiceError),NoOp(VoiceStop=${SynthzRpt}) exten => select,n(VoiceExit),Set(SynthzRpt=0) exten => select,n,GotoIf($["${RINO_RETURN_CONTEXT}" = ""]?rino-conf-return,select,1) exten => select,n,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) exten => _[0-9*#],1,Macro(rino-dtmf,${EXTEN}) exten => _[0-9*#],n,NoOp(VoiceStop=${SynthzRpt}) ;exten => _[0-9*#],1,NoOp(VoiceStop=${SynthzRpt}) ;exten => _[0-9*#],n,Macro(rino-dtmf,${EXTEN}) exten => _[0-9*#],n,Goto(select,VoiceExit) exten => i,1,NoOp(VoiceStop=${SynthzRpt}) exten => i,n,Goto(select,VoiceExit) [rino-conf] exten => select,1,NoOp(Return=${RINO_RETURN_CONTEXT}:${RINO_RETURN_EXTEN}:${RINO_RETURN_PRIORITY}) exten => select,n,NoOp(${ConfID}:${ConfParams}) exten => select,n,StopPlaytones exten => select,n,Set(PlayKPV=0) exten => select,n,MeetMe(${ConfID},1qF${ConfParams}) exten => select,n,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) [rino-conf-return] exten => select,1,NoOp(ReturnConf=${RINO_RETURN_CONTEXT}:${RINO_RETURN_EXTEN}:${RINO_RETURN_PRIORITY}) exten => select,n,GotoIf($["${RINO_RETURN_CONTEXT}" = ""]?dtmfwait) exten => select,n,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) ;exten => select,n(wait),Wait(1000000) ;exten => select,n,Goto(wait) exten => select,n(dtmfwait),NoOp(ReadyToConf) exten => select,n,WaitExten exten => select,n,Goto(dtmfwait) exten => _[0-9*#],1,Macro(rino-dtmf,${EXTEN}) exten => _[0-9*#],n,Goto(select,dtmfwait) exten => i,1,Goto(select,dtmfwait) exten => t,1,Goto(select,dtmfwait) [rino-send-fax] exten => select,1,SendFAX(${FaxFileName}) exten => select,n,GotoIf($["${RINO_RETURN_CONTEXT}" = ""]?wait) exten => select,n,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) exten => select,n(wait),Wait(1000000) exten => select,n,Goto(wait) ;exten => h,n,Goto(wait) [rino-receive-fax] exten => select,1,ReceiveFAX(${FaxFileName}) exten => select,n,GotoIf($["${RINO_RETURN_CONTEXT}" = ""]?wait) exten => select,n,Goto(${RINO_RETURN_CONTEXT},${RINO_RETURN_EXTEN},${RINO_RETURN_PRIORITY}) exten => select,n(wait),Wait(1000000) exten => select,n,Goto(wait) ;[rino-test-receive-fax] ;exten => _[0-9*#]!,1,Answer ;exten => _[0-9*#]!,n,Wait(1) ;exten => _[0-9*#]!,n,Monitor(wav,"fax_test") ;exten => _[0-9*#]!,1,ReceiveFAX("/var/spool/asterisk/tmp/fax_test.tiff") ;exten => _[0-9*#]!,1,SendFAX("/var/spool/asterisk/tmp/fax_test.tiff") ;exten => _[0-9*#]!,n,Dial(SIP/401) ;[rino-segment-0] ;include => rino-incoming-call ;[rino-segment-1] ;include => rino-incoming-call ;[rino-segment-2] ;include => rino-incoming-call ;[rino-segment-3] ;include => rino-incoming-call ;[rino-segment-random-select] ;exten => _[0-9*#p+]!,1,Goto(rino-segment-${RAND(0,3)},${EXTEN},1) [rino-subscribe] exten => 295,hint,SIP/295 exten => 293,hint,SIP/293 exten => 211,hint,SIP/211