[AsteriskBrasil] CALL BACK
marcio
marciositoni em ruthjunqueira.org.br
Terça Agosto 11 13:13:02 BRT 2009
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.
Caso positivo segue abaixo:
CONFIGURAÇÃO DE CALLBACK
CallBack Externo
A idéia de utilizar o Call Back é: Ligar para um número, o sistema reconhecer de
quem é esse número, rejeitar a chamada e religar. Assim que a pessoa atender a ligação ela
pode discar para onde ela tem permissão.
Premissas:
Primeiro temos que ter um número de entrada no Asterisk, seja SIP, FXO ou E1
sendo a premissa básica ter a identificação do número chamador (bina). Em nosso
exemplo estaremos entendendo que a ligação seja recebida por um provedor SIP. Assim ele
deve estar devidamente configurado no sip.conf e funcionando (tanto entrada quanto
saída). Quando foi criado este provedor, foi inserido no sip.conf uma linha com a função
register => (lembra quando criamos a regra do Vono?) e no final da linha inserimos uma
barra (/) seguido da extensão que iria atender. Exemplo:
Register => login:senha em provedor.com:5060/entrada
Assim vamos fazer a referência com a extensão entrada. Provavelmente no teu
extensions.conf, na seção [default] deva/possa ter uma linha parecida com a linha abaixo
para que se possa atender a ligação:
exten => entrada,1,Dial(SIP/ramalinterno,60,rtT)
O que faremos é criar uma regra baseada na origem (bina) da ligação. Vamos
considerar que o número do seu celular com permissão para callback seja 99887766.
Assim ADICIONE as seguintes linhas:
exten => entrada/99887766,1,NoOp(Realizando CallBack )
exten => entrada/99887766,2,Wait(1)
exten => entrada/99887766,3,System(cp /etc/callback/chamada.call /var/spool/asterisk/outgoing/)
exten => entrada/99887766,4,Hangup()
No exemplo acima a prioridade 1 não faz nada além de mostrar na tela a
mensagem "realizando callback ";
A prioridade 2 aguarda 1 segundo
A prioridade 3 executa um comando no linux através da aplicação System. No
exemplo acima ele copia o arquivo chamada.call para um diretório específico do asterisk.
É aqui que ele realiza o callback. Este item é o principal e veremos na seqüência.
A prioridade 4 desliga/rejeita a ligação. Assim como pode ver, não houve
atendimento, portanto não houve tarifação da ligação recebida.
Note que não foi deletada a primeira extensão (exten=>entrada,1,Dial....) pois
esta serve para os outros números que ligarem para o número do provedor sip.
Configurando o callback
Primeiro temos que saber como realizamos a ligação para o seu celular. Estou
considerando que você vá utilizar o Vono para retornar, altere conforme a sua necessidade.
Para isso devemos criar um arquivo chamado chamada.call, no exemplo acima este arquivo
está na pasta /etc/callback.
O arquivo ficará da seguinte forma:
Channel: SIP/99887766 em vono
Context: callback
CallerID: 99887766 <99887766>
Extension: s
MaxRetries: 0
RetryTime: 2
WaitTime:10
Priority: 1
O arquivo acima (chamada.call), está dizendo que será feito uma ligação
(aplicação Dial) passando os parâmetros, ou seja, para SIP/99887766 em vono. Após isso o
sistema "jogará" esta ligação num contexto chamado "callback" na extensão "s" na
prioridade "1".
Uma vez existindo este arquivo, se copiarmos ele para o diretório
/var/spool/asterisk/outgoing, o Asterisk sempre está lendo este diretório e se encontrar o
arquivo ele tentará efetuar a chamada. Assim neste exemplo necessitamos de criar o
contexto [callback] no extensions.conf, Exemplo abaixo:
[callback]
exten => s,1,Answer()
exten => s,2,ResponseTimeout(60)
exten => s,3,WaitExten(60|m[(default)])
exten => _1XXX,1,Dial(SIP/${EXTEN},60,rtT)
Quando o asterisk fizer a chamada ele automaticamente aciona o contexto
definido no arquivo chamada.call, no nosso caso o contexto é [callback], extensão s,
prioridade 1.
A prioridade 1 atende o canal mesmo que a chamada de
saída ainda esteja sendo processada.
A prioridade 2 é setado um timeout, ou seja se o celular não atender em 60
segundos ele desliga o canal sip desta chamada.
A prioridade 3 fica aguardando algo ser digitado, durante 60 segundos e enquanto
isso fica-se ouvindo uma música de espera. Toda permissão para discar deve ser colocada
dentro deste contexto. No caso acima eu coloquei que o celular chamado somente pode
discar para ramais internos começando com 1XXX. Caso queira dar permissão de ligação
externa basta adicionar DENTRO DESTE CONTEXTO as extensões necessárias.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20090811/d90f37c0/attachment-0001.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil