Skip to content

Instantly share code, notes, and snippets.

@rodrigolang
Last active December 9, 2015 16:58
Show Gist options
  • Save rodrigolang/4299941 to your computer and use it in GitHub Desktop.
Save rodrigolang/4299941 to your computer and use it in GitHub Desktop.
Exemplo de um contexto para desvio no Asterisk 1.6. Possuir três tipos de desvio: imediato, caso ocupado e tempo expirado.
[desvios]
include => desvio-imediato
include => desvio-ocupado
include => desvio-timeout
[desvio-imediato]
exten => *50,1,Answer(1)
exten => *50,2,Set(EXISTE=${DB_EXISTS(DesvioImediato/${CALLERID(num)})})
exten => *50,3,GotoIf($["${EXISTE}" = "0"]?continua:desliga)
exten => *50,4(continua),Playback(ramal)
exten => *50,5,Read(RAMAL,,4,,,)
exten => *50,6,Set(DB(DesvioImediato/${CALLERID(num)})=${RAMAL})
exten => *50,7,Playback(desvio-ativo)
exten => *50,8,Goto(desvio-imediato,h,1)
exten => *50,9(desliga),Playback(desvio-existente)
exten => *50,10,Goto(desvio-imediato,h,1)
exten => *51,1,Answer(1)
exten => *51,2,Set(RAMAL=${DB_EXISTS(DesvioImediato/${CALLERID(num)})
exten => *51,3,GotoIf($["${RAMAL}" = "1"]?continua:desliga)
exten => *51,4(continua),Noop(DB_DELETE(DesvioImediato/${CALLERID(num)}))
exten => *51,5,Playback(desvio-cancelado)
exten => *51,6,Goto(desvio-imediato,h,1)
exten => *51,7(desliga),Playback(desvio-nao-existe)
exten => *51,8,Goto(desvio-imediato,h,1)
exten => i,1,Goto(desvio-imediato,h,1)
exten => h,1,HangUp()
[desvio-ocupado]
exten => *52,1,Answer(1)
exten => *52,2,Set(EXISTE=${DB_EXISTS(DesvioOcupado/${CALLERID(num)})})
exten => *52,3,GotoIf($["${EXISTE}" = "0"]?continua:desliga)
exten => *52,4(continua),Playback(ramal)
exten => *52,5,Read(RAMAL,,4,,,)
exten => *52,6,Set(DB(DesvioOcupado/${CALLERID(num)})=${RAMAL})
exten => *52,7,Playback(desvio-ativo)
exten => *52,8,Goto(desvio-ocupado,h,1)
exten => *52,9(desliga),Playback(desvio-existente)
exten => *52,10,Goto(desvio-ocupado,h,1)
exten => *53,1,Answer(1)
exten => *53,2,Set(RAMAL=${DB_EXISTS(DesvioOcupado/${CALLERID(num)})
exten => *53,3,GotoIf($["${RAMAL}" = "1"]?continua:desliga)
exten => *53,4(continua),Noop(DB_DELETE(DesvioOcupado/${CALLERID(num)}))
exten => *53,5,Playback(desvio-cancelado)
exten => *53,6,Goto(desvio-ocupado,h,1)
exten => *53,7(desliga),Playback(desvio-nao-existe)
exten => *53,8,Goto(desvio-ocupado,h,1)
exten => i,1,Goto(desvio-ocupado,h,1)
exten => h,1,HangUp()
[desvio-timeout]
exten => *54,1,Answer(1)
exten => *54,2,Set(EXISTE=${DB_EXISTS(DesvioTimeout/${CALLERID(num)})})
exten => *54,3,GotoIf($["${EXISTE}" = "0"]?continua:desliga)
exten => *54,4(continua),Playback(ramal)
exten => *54,5,Read(RAMAL,,4,,,)
exten => *54,6,Set(DB(DesvioTimeout/${CALLERID(num)})=${RAMAL})
exten => *54,7(volta),Playback(toques)
exten => *54,8,Read(NUM,,1,,,)
exten => *54,9,ExecIf($["${NUM}" = "0"]?Playback(opcao-invalida))
exten => *54,10,GotoIf($["${NUM}" = "0"]?volta)
exten => *54,11,Set(RING=${MATH(${NUM}*4,int)})
exten => *54,12,Set(DB(DesvioTimeoutTempo/${CALLERID(num)})=${RING})
exten => *54,13,Playback(desvio-ativo)
exten => *54,14,Goto(desvio-timeout,h,1)
exten => *54,15(desliga),Playback(desvio-existente)
exten => *54,16,Goto(desvio-timeout,h,1)
exten => *55,1,Answer(1)
exten => *55,2,Set(RAMAL=${DB_EXISTS(DesvioTimeout/${CALLERID(num)})
exten => *55,3,GotoIf($["${RAMAL}" = "1"]?continua:desliga)
exten => *55,4(continua),Noop(DB_DELETE(DesvioTimeout/${CALLERID(num)}))
exten => *55,5,Noop(DB_DELETE(DesvioTimeoutTempo/${CALLERID(num)}))
exten => *55,6,Playback(desvio-cancelado)
exten => *55,7,Goto(desvio-timeout,h,1)
exten => *55,8(desliga),Playback(desvio-nao-existe)
exten => *55,9,Goto(desvio-timeout,h,1)
exten => i,1,Goto(desvio-timeout,h,1)
exten => h,1,HangUp()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment