[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