[AsteriskBrasil] CALLBACK asterisk
Danilo Almeida
danilo.almeida em g1telecom.com.br
Quarta Março 6 17:35:42 BRT 2013
Olá galera,
Hoje precisei criar um callback na empresa que trabalho, esse callback
funciona da seguinte maneira:
Ligo na empresa do meu celular(ou de qualquer número que bine) de qualquer
região, o servidor pega o meu número, desliga a chamada e me retorna, após
isso, digito o numero que desejo fazer a ligação e ele disca e completa para
mim.
Isso foi necessário, pois nossos celulares só fazem ligação para região
43...
Então criei uma tutorial Básico para quem necessitar.
Callback para ligações externas
primeiro, criaremos a regra de entrada, nesse caso estou simulando uma
ligação entrando por um
determinado DDR de um link E1, mais pode ser ligações de entrada de qualquer
tipo (FXO, SIP,
Analógico, etc) bastando apenas ser alterado para cada situação.
[entrada]
exten => _3200,1,NoOp(Realizando CallBack )
exten => _3200,2,Wait(1)
exten => _3200,3,Macro(callback,)
exten => _3200,4,Hangup()
linha 1 - mostra na tela a descrição dentro dos parenteses "()"
linha 2 - espera um segundo antes de continuar
linha 3 - vai para macro callback que veremos a seguir.
linha 4 - derruba a ligação após colher as primeiras informações.
agora, criaremos uma macro callback onde criaremos o arquivo .call que fará
o retorno da ligação para o número que ligou.
[macro-callback]
exten =>
s,1,set(CALLBACK-FILE=/var/spool/asterisk/outgoing/${MACRO_EXTEN}-${CALLERID
(num)}.call)
exten => s,n,system(echo Channel: SIP/0${CALLERID(num)}@g1entrada >
${CALLBACK-FILE})
exten => s,n,system(echo Context: saida-callback >> ${CALLBACK-FILE})
exten => s,n,system(echo Extension: 1000 >> ${CALLBACK-FILE})
exten => s,n,system(echo Callerid: ${CALLERID(num)} >> ${CALLBACK-FILE})
exten => s,n,system(echo MaxRetries: 2 >> ${CALLBACK-FILE})
exten => s,n,system(echo RetryTime: 30 >> ${CALLBACK-FILE})
exten => s,n,system(echo WaitTime: 30 >> ${CALLBACK-FILE})
exten => s,n,MacroExit
linha 1 - seto uma variável com o diretório /var/spool/asterisk/outgoing/ +
o nome do arquivo que será criado automaticamente.
linhas n - no restante das linhas, escrevo dentro do arquivo as opções
necessárias para rodar um arquivo .call (vejam mais informações de arquivos
.call para entenderem melhor caso tenham dúvidas).
linha 2 - canal que sairá a ligação, no meu caso estou enviando pela
operadora da empresa em que trabalho.
linha 3 - contexto que será direcionado para que a pessoa possa digitar o
numero desejado.
linha 4 - extensão que será entregue esta ligação dentro do contexto
anterior.
linha 5 - callerid da chamada
linha 6 - Numero maximo de vezes que o asterisk irá tentar chamar o
originador antes de considerar que a chamada falhou.
Este parâmetro não considera a primeira tentativa, portanto se definido como
0, o asterisk tentará chamar apenas uma vez.
linha 7 - Seguntos entre as tentativas de chamar o originador. O padrão é
300 segundos.
linha 8 - Numero de segundos que o asterisk irá chamar o originador a cada
tentativa. O padrão é 45.
linha 9 - sai da Macro.
após sair da macro, o asterisk dará o hangup conforme linha 4 do contexto
entrada, após isso, o arquivo .call criado já será executado chamando o
número que havia ligado anteriormente, quando houver o atendimento dessa
chamada, jogará para o contexto descrito no arquivo .call que criamos
(saida-callback).
o contexto saida-callback dará um bip e aguardará um numero ser digitado.
Nesse caso dará um Bip, mais pode-se personalizar com uma gravação da
maneira que desejar.
[saida-callback]
exten => 1000,1,Answer()
exten => 1000,2,PlayBack(beep)
exten => 1000,n,Read(NUMERO)
exten => 1000,n,Dial(SIP/${NUMERO}@g1telecom,40,tg)
exten => 1000,n,Macro(hangupcall,)
linha 1 - atende a chamada
linha 2 - dá um bip após o atendimento da chamada, aqui pode-se colocar uma
mensagem para o usuário ouvir tipo: digite o numero que deseja, ou coisa do
tipo.
linha 3 - lê os digitos e salva na variável NUMERO
linha 4 - dá um dial para o numero capturado.
linha 5 - dá um hangup ao término da ligação.
acho que é isso pessoal, desculpem qualquer coisa, mais esse é um dos meus
primeiros tutoriais e fiz correndo, qualquer erro me perdoem..rsrs.
abraços.
att
Danilo Ricardo de Almeida
Engenharia e Desenvolvimento / Engineering and Development
GRUPO G1 TELECOMUNICAÇÕES LTDA.
logo.gif
Rua: Ponta Grossa, n°587 – Jardim Dom Bosco
CEP: 86060-450 - Londrina - PR
(Fone/Fax: +55 43 3028-1120 / +55 43 3028-1120
yEMAIL: <mailto:danilo.almeida em g1telecom.com.br>
danilo.almeida em g1telecom.com.br
yMSN: <mailto:danilo.almeida em g1telecom.com.br>
danilo.almeida em g1telecom.com.br
ySuporte: <mailto:suporte em g1telecom.com.br> suporte em g1telecom.com.br
:Site: <http://www.g1telecom.com.br/> www.g1telecom.com.br
P “VOCÊ PRECISA MESMO IMPRIMIR?”
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20130306/5c81e52a/attachment-0001.htm
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome : não disponível
Tipo : image/gif
Tam : 20221 bytes
Descr.: não disponível
Url : http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20130306/5c81e52a/attachment-0001.gif
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome : não disponível
Tipo : image/png
Tam : 8231 bytes
Descr.: não disponível
Url : http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20130306/5c81e52a/attachment-0001.png
Mais detalhes sobre a lista de discussão AsteriskBrasil