Skip to content

Instantly share code, notes, and snippets.

@rodrigolang
Last active July 1, 2016 13:54
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rodrigolang/4506339 to your computer and use it in GitHub Desktop.
Save rodrigolang/4506339 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, escrito em AEL.
context desvios {
includes {
desvio-imediato;
desvio-ocupado;
desvio-timeout;
}
}
context desvio-imediato {
*50 => {
Answer(1);
if( "${DB_EXISTS(DesvioImediato/${CALLERID(num)})}" = "0" ) {
Playback(ramal);
Read(RAMAL,,4,,,);
Set(DB(DesvioImediato/${CALLERID(num)})=${RAMAL});
Playback(desvio-ativo);
} else {
Playback(desvio-existente);
}
}
*51 => {
Answer(1);
if( "${DB_EXISTS(DesvioImediato/${CALLERID(num)})}" = "1" {
Noop(DB_DELETE(DesvioImediato/${CALLERID(num)}));
Playback(desvio-cancelado);
} else {
Playback(desvio-nao-existe);
}
}
h => {
Hangup();
}
}
context desvio-ocupado {
*52 => {
Answer(1);
if( "${DB_EXISTS(DesvioOcupado/${CALLERID(num)})}" = "0" ) {
Playback(ramal);
Read(RAMAL,,4,,,);
Set(DB(DesvioOcupado/${CALLERID(num)})=${RAMAL});
Playback(desvio-ativo);
} else {
Playback(desvio-existente);
}
}
*53 => {
Answer(1);
if( "${DB_EXISTS(DesvioOcupado/${CALLERID(num)})}" = "1" ) {
Noop(DB_DELETE(DesvioOcupado/${CALLERID(num)}));
Playback(desvio-cancelado);
} else {
Playback(desvio-nao-existe);
}
}
h => {
Hangup();
}
}
context desvio-timeout {
*54 => {
Answer(1);
if( "${DB_EXISTS(DesvioTimeout/${CALLERID(num)})}" = "0" ) {
Playback(ramal);
Read(RAMAL,,4,,,);
Set(DB(DesvioTimeout/${CALLERID(num)})=${RAMAL});
volta:
Playback(toques);
Read(NUM,,1,,,);
if( "${NUM}" = "0" ) {
Playback(opcao-invalida);
goto volta;
}
Set(RING=${MATH(${NUM}*4,int)});
Set(DB(DesvioTimeoutTempo/${CALLERID(num)})=${RING});
Playback(desvio-ativo);
} else {
Playback(desvio-existente);
}
}
*55 => {
Answer(1);
if( "${DB_EXISTS(DesvioTimeout/${CALLERID(num)})}" = "1" ) {
Noop(DB_DELETE(DesvioTimeout/${CALLERID(num)}));
Noop(DB_DELETE(DesvioTimeoutTempo/${CALLERID(num)}));
Playback(desvio-cancelado);
} else {
Playback(desvio-nao-existe);
}
}
h => {
Hangup();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment