No arquivo "/etc/asterisk/extensions_override_elastix.conf" em macro-record-enable adicionei a linhas
exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => s,n,AGI(recordingcheck,${CUT(ARG1,-,${ITER})},${CALLFILENAME}.${MIXMON_FORMAT},${UNIQUEID})
[macro-record-enable]
include => macro-record-enable-custom
exten => s,1,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR(w)
exten => s,n,StopMixMonitor()
exten => s,n(check),ExecIf($["${ARG1}"=""]?MacroExit())
exten => s,n,GotoIf($["${ARG2}"="Group"]?Group:OUT)
exten => s,n(Group),Set(LOOPCNT=${FIELDQTY(ARG1,-)})
exten => s,n,Set(ITER=1)
exten => s,n(begin),GotoIf($["${CUT(DB(AMPUSER/${CUT(ARG1,-,${ITER})}/recording),=,3)}" != "Always"]?continue)
exten => s,n,Set(TEXTEN=${CUT(ARG1,-,${ITER})})
exten => s,n,Noop(Recording enable for ${TEXTEN})
exten => s,n,Set(CALLFILENAME=g${TEXTEN}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => s,n,Goto(record)
exten => s,n(continue),Set(ITER=$[${ITER}+1])
exten => s,n,GotoIf($[${ITER}<=${LOOPCNT}]?begin)
exten => s,n(OUT),GotoIf($["${ARG2}"="IN"]?IN)
exten => s,n,ExecIf($["${CUT(DB(AMPUSER/${ARG1}/recording),\\\|,1):4}" != "Always"]?MacroExit())
exten => s,n,Noop(Recording enable for ${ARG1})
exten => s,n,Set(CALLFILENAME=OUT${ARG1}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => s,n,Goto(record)
exten => s,n(IN),ExecIf($["${CUT(DB(AMPUSER/${ARG1}/recording),\\\|,2):3}" != "Always"]?MacroExit())
exten => s,n,Noop(Recording enable for ${ARG1})
exten => s,n,Set(CALLFILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => s,n(record),MixMonitor(${MIXMON_DIR}${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => s,n,AGI(recordingcheck,${CUT(ARG1,-,${ITER})},${CALLFILENAME}.${MIXMON_FORMAT},${UNIQUEID})
exten => s,n,Set(CDR(userfield)=audio:${CALLFILENAME}.${MIXMON_FORMAT})
exten => s,n,MacroExit()
e em "/var/lib/asterisk/agi-bin/" criei o arquivo "recordingcheck"
#!/usr/bin/php -q
<?php
include("phpagi.php");
$agi = new AGI();
$exten = $argv[1];
$uniqueid = $argv[2];
$id = $argv[3];
$cidnum = $agi->request['agi_callerid'];
nclude ("nusoap/lib/nusoap.php");
ry{
$sUrl = "http://ipdoservidor/webservice_registro_ligacao.php?wsdl";
$client = new nusoap_client($sUrl);
}catch(Exception $e){
$agi->verbose($e->getMessages());
}
$agi->verbose("telefone = ".$cidnum);
$agi->verbose("ramal = ".$exten);
$agi->verbose("id = ".$uniqueid);
$agi->verbose("codig_registo = ".$id);
$aResposta = $client->call('registrarLigacao', array(array('TELEFONE' => $cidnum, 'RAMAL' => $exten, 'UNIQUE_ID' => $uniqueid, 'CODIGO_REGISTRO'=>$id)));
if ($aResposta['SITUACAO'] == 'ok') {
$agi->verbose("Ligacao registrada com sucesso.");
} else {
$agi->verbose("Resposta falhou ");
if ($client->fault)
$agi->verbose($client->getError());
$agi->verbose("<h2>Request</h2><pre>" . htmlspecialchars($client->request, ENT_QUOTES) . "</pre>");
$agi->verbose("<h2>Response</h2><pre>" . htmlspecialchars($client->response, ENT_QUOTES) . "</pre>");
$agi->verbose("<h2>Debug</h2><pre>" . htmlspecialchars($client->debug_str, ENT_QUOTES) . "</pre>");
}
$agi->verbose("Fim da execusao" );
exit(0);
?>
com isso registro todas a ligaçoes sem problema.
O problema é que o servidor tem que responder rapido, pois estou com ligação capturada. Sem demora, a ligacao fica muda para o cliente.
Dirceu, boa tarde.
O cliente recebe o nr do protocolo com essa rotina?
Se não, tem como pedir para o asterisk ler o arquivo e passar para o cliente?
Abraço
--
Se vcoe que passar um numero de protocolo para o cliente o UNIQUEID é muito extenso no meu ver.
Eu faria defirente.
Crie um tabela para amazenar o protocolo. e em cada ligacao gera o protocolo e grava na tabela.
Exemplo de como se conecta no banco do asterisk.
Este é um exemplo de consulta no banco quando o cliente liga pegunto qual o seu codigo de atendimento, procura para saber se está em dia. pasa para para o suporte, se não vai para financeiro.
A ideia quando o cliente ligar atende a ligacao gera o protocolo grava no banco para consulta posterior, informa o protocolo para o cliente e de sequencia na ligacao.
//Todo ligacao de entrada sera redirecionada para o contexto from-geraprotocolo
[from-geraprotocolo]
exten => s,1,NoOp( Atendento a ligação)
same => n,NoOp(<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<)
same => n,Answer() #Atendo a ligacao.
//aqui voce gera o protocolo
//grava no banco
Exemplo de consulta
same => n(fim),MYSQL(Connect connid localhost root admin asterisk)
same => n,MYSQL(Query resultid ${connid} SELECT status FROM sig_status WHERE codigo = "${digitos}")
same => n,MYSQL(Fetch fetchid ${resultid} status)
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Disconnect ${connid})
same => n,SayDigits(${protocolo}) //fala o protocolo para o cliente
same => n,Dial(SIP/2001/${EXTEN:2}|40|tTrwW) //transfere a ligação para o ramal desejado.
same => n,Hangup
como conectar no banco.
Exemplo de consulta
Basta usar insert
[from-consulta]
exten => s,1,NoOp( Consulta nome no BD )
same => n,NoOp(<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<)
same => n,Answer()
same => n,Set(n=1)
same => n,PlayBack(vm-login)
same => n,Set(TIMEOUT(response)=4)
same => n,Set(TIMEOUT(digit)=2)
same => n(digitando),Read(digitos,beep)
same => n,SayDigits(${digitos})
same => n,Gotoif($[${digitos}>=0]?digitando:fim)
same => n(fim),MYSQL(Connect connid localhost root admin asterisk)
same => n,MYSQL(Query resultid ${connid} SELECT status FROM sig_status WHERE codigo = "${digitos}")
same => n,MYSQL(Fetch fetchid ${resultid} status)
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Disconnect ${connid})
same => n,GotoIf($["${status}" != ""]?localizado:naolocalizado)
same => n(localizado),NoOp(Status encontrado -> ${status} )
same => n,NoOp(<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<)
same => n,MYSQL(Connect connid localhost root admin asterisk)
same => n,MYSQL(Query resultid ${connid} SELECT rota FROM sig_rota WHERE status = "${status}")
same => n,MYSQL(Fetch fetchid ${resultid} rota)
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Disconnect ${connid})
same => n,Dial(${rota},30,tTr)
same => n,Hangup
same => n(naolocalizado),NoOp(<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<)
same => n,NoOp( Nao Localizado)
same => n,GotoIf($[${n}=1}]?loop:continue)
same => n(loop),Set(n=2)
same => n,PlayBack(check-number-dial-again)
same => n,Goto(digitando)
same => n(continue),Dial(DAHDI/9,30,tTr)
same => n,Hangup
--
---
Você está recebendo esta mensagem porque se inscreveu no grupo "ElastixBrasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para elastixbrasi...@googlegroups.com.
Para postar neste grupo, envie um e-mail para elasti...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/elastixbrasil.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Eu acho que em uma central toda e qualquer ligação deve gerar número de protocolo.