<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2853" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Tenho um tutorial de call back só que não consegui
imprementar aqui na empresa, será que o pessoal mais experiente da lista podia
dar uma olhada.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Caso positivo segue abaixo:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><B><FONT face="Times New Roman" size=4>
<P align=left>CONFIGURAÇÃO DE CALLBACK</P></FONT><FONT face=Garamond,Bold
size=4>
<P align=left>CallBack Externo</P></B></FONT><FONT face=Garamond>
<P align=left>A idéia de utilizar o Call Back é: Ligar para um número, o sistema
reconhecer de</P>
<P align=left>quem é esse número, rejeitar a chamada e religar. Assim que a
pessoa atender a ligação ela</P>
<P align=left>pode discar para onde ela tem permissão.</P></FONT><B><FONT
face=Garamond,Bold size=4>
<P align=left>Premissas:</P></B></FONT><FONT face=Garamond>
<P align=left>Primeiro temos que ter um número de entrada no Asterisk, seja SIP,
FXO ou E1</P>
<P align=left>sendo a premissa básica ter a identificação do número chamador
(bina). Em nosso</P>
<P align=left>exemplo estaremos entendendo que a ligação seja recebida por um
provedor SIP. Assim ele</P>
<P align=left>deve estar devidamente configurado no sip.conf e funcionando
(tanto entrada quanto</P>
<P align=left>saída). Quando foi criado este provedor, foi inserido no sip.conf
uma linha com a função</P>
<P align=left>register => (lembra quando criamos a regra do Vono?) e no final
da linha inserimos uma</P>
<P align=left>barra (/) seguido da extensão que iria atender. Exemplo:</P>
<P align=left>Register => login:senha@provedor.com:5060/entrada</P>
<P align=left>Assim vamos fazer a referência com a extensão entrada.
Provavelmente no teu</P>
<P align=left>extensions.conf, na seção [default] deva/possa ter uma linha
parecida com a linha abaixo</P>
<P align=left>para que se possa atender a ligação:</P>
<P align=left>exten => entrada,1,Dial(SIP/ramalinterno,60,rtT)</P>
<P align=left>O que faremos é criar uma regra baseada na origem (bina) da
ligação. Vamos</P>
<P align=left>considerar que o número do seu celular com permissão para callback
seja 99887766.</P>
<P align=left>Assim ADICIONE as seguintes linhas:</P>
<P align=left>exten => entrada/99887766,1,NoOp(Realizando CallBack )</P>
<P align=left>exten => entrada/99887766,2,Wait(1)</P></FONT><FONT
face=Garamond size=2>
<P align=left>exten => entrada/99887766,3,System(cp
/etc/callback/chamada.call /var/spool/asterisk/outgoing/)</P></FONT><FONT
face=Garamond>
<P align=left>exten => entrada/99887766,4,Hangup()</P>
<P align=left>No exemplo acima a prioridade 1 não faz nada além de mostrar na
tela a</P>
<P align=left>mensagem “realizando callback ”;</P>
<P align=left>A prioridade 2 aguarda 1 segundo</P>
<P align=left>A prioridade 3 executa um comando no linux através da aplicação
System. No</P>
<P align=left>exemplo acima ele copia o arquivo chamada.call para um diretório
específico do asterisk.</P>
<P align=left>É aqui que ele realiza o callback. Este item é o principal e
veremos na seqüência.</P>
<P align=left>A prioridade 4 desliga/rejeita a ligação. Assim como pode ver, não
houve</P>
<P align=left>atendimento, portanto não houve tarifação da ligação recebida.</P>
<P align=left>Note que não foi deletada a primeira extensão
(exten=>entrada,1,Dial....) pois</P>
<P align=left>esta serve para os outros números que ligarem para o número do
provedor sip.</P></FONT><B><FONT face=Garamond,Bold size=4>
<P align=left>Configurando o callback</P></B></FONT><FONT face=Garamond>
<P align=left>Primeiro temos que saber como realizamos a ligação para o seu
celular. Estou</P>
<P align=left>considerando que você vá utilizar o Vono para retornar, altere
conforme a sua necessidade.</P>
<P align=left>Para isso devemos criar um arquivo chamado chamada.call, no
exemplo acima este arquivo</P>
<P align=left>está na pasta /etc/callback.</P>
<P align=left>O arquivo ficará da seguinte forma:</P>
<P align=left>Channel: SIP/99887766@vono</P>
<P align=left>Context: callback</P>
<P align=left>CallerID: 99887766 <99887766></P>
<P align=left>Extension: s</P>
<P align=left>MaxRetries: 0</P>
<P align=left>RetryTime: 2</P>
<P align=left>WaitTime:10</P>
<P align=left>Priority: 1</P>
<P align=left>O arquivo acima (chamada.call), está dizendo que será feito uma
ligação</P>
<P align=left>(aplicação Dial) passando os parâmetros, ou seja, para
SIP/99887766@vono. Após isso o</P>
<P align=left>sistema “jogará” esta ligação num contexto chamado “callback” na
extensão “s” na</P>
<P align=left>prioridade “1”.</P>
<P align=left>Uma vez existindo este arquivo, se copiarmos ele para o
diretório</P>
<P align=left>/var/spool/asterisk/outgoing, o Asterisk sempre está lendo este
diretório e se encontrar o</P>
<P align=left>arquivo ele tentará efetuar a chamada. Assim neste exemplo
necessitamos de criar o</P>
<P align=left>contexto [callback] no extensions.conf, Exemplo abaixo:</P>
<P align=left>[callback]</P>
<P align=left>exten => s,1,Answer()</P>
<P align=left>exten => s,2,ResponseTimeout(60)</P>
<P align=left>exten => s,3,WaitExten(60|m[(default)])</P>
<P align=left>exten => _1XXX,1,Dial(SIP/${EXTEN},60,rtT)</P>
<P align=left>Quando o asterisk fizer a chamada ele automaticamente aciona o
contexto</P>
<P align=left>definido no arquivo chamada.call, no nosso caso o contexto é
[callback], extensão s,</P>
<P align=left>prioridade 1.</P>
<P align=left>A prioridade 1 atende o canal mesmo que a chamada de</P>
<P align=left>saída ainda esteja sendo processada.</P>
<P align=left>A prioridade 2 é setado um timeout, ou seja se o celular não
atender em 60</P>
<P align=left>segundos ele desliga o canal sip desta chamada.</P>
<P align=left>A prioridade 3 fica aguardando algo ser digitado, durante 60
segundos e enquanto</P>
<P align=left>isso fica-se ouvindo uma música de espera. Toda permissão para
discar deve ser colocada</P>
<P align=left>dentro deste contexto. No caso acima eu coloquei que o celular
chamado somente pode</P>
<P align=left>discar para ramais internos começando com 1XXX. Caso queira dar
permissão de ligação</P>
<P>externa basta adicionar DENTRO DESTE CONTEXTO as extensões
necessárias.</P></FONT></FONT></DIV></BODY></HTML>