[AsteriskBrasil] RES: Callback
Neulo Alves
neulo em uol.com.br
Quinta Abril 28 15:20:52 BRT 2011
Luiz existe sim uma aplicação de callback, foi criado por Ricardo para
versão asterisk 1.2 e 1.4
Outra forma de fazer isso seria no extensions.conf utilizando um arquivo
.call
Segue exemplo passo a passo:
Para teste você pode tirar toda essa parte de banco e identificação.
1- Recebimento da chamada, (no meu caso eu so permito callback dos
números cadastrados e descarto o resto.)
[khomp-01-03]
;;;Atende Celular Vivo 9153XXXX
exten => s,1,Set(ip_banco=127.0.0.1)
exten => s,n,Set(usuario=asteriskuser)
exten => s,n,Set(senha=senha)
exten => s,n,Set(banco=asteriskcdrdb)
exten => s,n,NoOp(${CALLERID(name)})
exten => s,n,Set(consulta= select\ callback\, x.telefone\ from\ agenda
a\, agendaux x\ where\ a.codigo =\ x.codage\ and\ a.callback=\ 1\ and\
x.telefone like \'%\${CALLERID(num):2}\'\)
exten => s,n(consulta),MYSQL(Connect connid ${ip_banco} ${usuario}
${senha} ${banco})
exten => s,n,MYSQL(Query resultid ${connid} ${consulta})
exten => s,n,MYSQL(Fetch fetchid ${resultid} callback\ nrtelefone)
exten => s,n,NoOp(Status da busca ${callback})
exten => s,n,GotoIf($["${callback}" = "1"]?40:51)
exten => s,40,NoOp(Realizando callback para ${CALLERID(num)})
exten => s,41,system(cp /etc/callback/callback.call
/etc/callback/callback.tmp.call)
exten => s,42,agi(identifica.php|${nrtelefone})
exten => s,43,system(echo 'Channel: khomp/G${retorno}/${nrtelefone:2}'
>> /etc/callback/callback.tmp.call) ****** aqui você coloco o tronco de
saída)
exten => s,44,system(echo 'CallerID: ${nrtelefone:2}
"<"${nrtelefone}">"' >> /etc/callback/callback.tmp.call) ****** idetificacao
do telefone destino
exten => s,45,system(echo 'Extension: ${nrtelefone}' >>
/etc/callback/callback.tmp.call) ***** telefone destino
exten => s,46,system(mv /etc/callback/callback.tmp.call
/etc/asterisk/${nrtelefone}.call) ***** move o arquivo para pasta
callback
exten => s,47,System(bash /etc/asterisk/callback.sh ${nrtelefone})
***** muda data de criação e move para pasta outgoing do asterisk
exten => s,48,MYSQL(Clear ${resultid})
exten => s,49,MYSQL(Disconnect ${connid})
exten => s,50,Hangup()
exten => s,51,NoOp(Desligando chamada) ***** senão esta cadastrado
rejeita.
exten => s,52,MYSQL(Clear ${resultid})
exten => s,53,MYSQL(Disconnect ${connid})
;exten => s,n,Dial(IAX2/SAP2-TRUNK/8000,90,Tt)
exten => s,n,Hangup()
2- Context Callback
[callback]
exten => s,1,Answer
exten => s,n,BackGround(OpCallBack) ***** URA
exten => s,n,hangup()
exten => 1,1,Dial(destino 1)
exten => 2,1,Dial(destino 2)
exten => 3,1,Dial(destino 3)
exten => 4,1,Dial(destino 4)
exten => 5,1,Dial(destino 5)
exten => 6,1,Dial(destino 6)
exten => *,1,DISA(no-password|diretoria) * para efetuar ligações
utilizando callback
3 – Arquivo .call utilizado no extensions.
Context: callback
MaxRetries: 2
RetryTime:15
WaitTime:20
Priority: 1
Account: Callback
4 – Arquivo callback.sh (serve para atrasar em alguns segundos a chamada do
callback, senão o asterisk retorna antes da pessoa desligar.
#!/bin/sh
DESTINO=$1
# Altera a Data do arquivo para faze a ligação depois de 10s.
NOW=`date +%s`
let "NOW=$NOW+10"
TOUCH_TMSP=`date -d "1970-01-01 $NOW sec GMT" +%Y%m%d%H%M.%S`
touch -t $TOUCH_TMSP /etc/asterisk/"$DESTINO".call
mv /etc/asterisk/"$DESTINO".call /var/spool/asterisk/outgoing/
chmod 777 /var/spool/asterisk/outgoing/"$DESTINO".call
#Fim do Script
Eu uso callback desta forma, não foi eu que criei só peguei aqui na lista.
Neulo Alves
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Luiz
Le-Fort (luiz em trofel.com)
Enviada em: quinta-feira, 28 de abril de 2011 14:55
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [AsteriskBrasil] Callback
Ainda estou somente na era de perguntas, mas logo chego no nivel de ajudar a
todos tmb.
Não sei se o nome correto é Callback, tipo, quero ligar para um número
celular corporativo, e o asterisk me retornar a ligação, e logo ser atendido
por uma ura por exemplo.
Procurei sobre "callback" e não encontrei nada nativo do asterisk em
relação, somente algo de baixar e compilar, e como sou novato nisso ainda
não queria arriscar.
Alguma sugestão?
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20110428/15029cf4/attachment-0001.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil