<!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>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Caso positivo segue abaixo:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</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 =&gt; (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 =&gt; 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 =&gt; 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 =&gt; entrada/99887766,1,NoOp(Realizando CallBack )</P>
<P align=left>exten =&gt; entrada/99887766,2,Wait(1)</P></FONT><FONT 
face=Garamond size=2>
<P align=left>exten =&gt; entrada/99887766,3,System(cp 
/etc/callback/chamada.call /var/spool/asterisk/outgoing/)</P></FONT><FONT 
face=Garamond>
<P align=left>exten =&gt; 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=&gt;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 &lt;99887766&gt;</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 =&gt; s,1,Answer()</P>
<P align=left>exten =&gt; s,2,ResponseTimeout(60)</P>
<P align=left>exten =&gt; s,3,WaitExten(60|m[(default)])</P>
<P align=left>exten =&gt; _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>