Gerar Numero de Protocolo

2,569 views
Skip to first unread message

Eduardo Souza

unread,
Jul 31, 2013, 4:36:03 PM7/31/13
to elasti...@googlegroups.com, asteris...@listas.asteriskbrasil.org
Boa tarde,

Estou querendo gerar numero de protocolo para passar para o cliente e estou tentando usar o uniqueid do CDR


Porem fiz uma pagina em php onde busca essa informações no BD para pegar o último porem percebi tb que o mesmo só é gerado quando finaliza a ligação e fiquei na duvida também no caso de tocar e logo em seguida tocar outra ligação.


alguém da lista já fez algo parecido?

Assim que ficar pronto posso até passar para aprendizagem e quem sabe até mesmo melhorar.

att


Eduardo Souza

Sidnei - IG

unread,
Jul 31, 2013, 4:47:44 PM7/31/13
to elasti...@googlegroups.com
Fala Eduardo.
Eu precisei usar também o UNIQUEID em uma particularidade de um cliente e me
deparei com a mesma situação.
Solução:

Assim que eu recebo a ligação armazeno o UNIQUEID e dou insert em um banco
que criei.
Assim não tenho que esperar a ligação finalizar parar ter a informação.

http://www.voip-info.org/wiki/view/Asterisk+cmd+MYSQL



-----Mensagem original-----
De: elasti...@googlegroups.com [mailto:elasti...@googlegroups.com]
Em nome de Eduardo Souza
Enviada em: quarta-feira, 31 de julho de 2013 17:36
Para: elasti...@googlegroups.com
Cc: asteris...@listas.asteriskbrasil.org
Assunto: [ElastixBrasil] Gerar Numero de Protocolo
--

---
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.


Eduardo Souza

unread,
Jul 31, 2013, 4:52:39 PM7/31/13
to asteris...@listas.asteriskbrasil.org, elasti...@googlegroups.com
OK só não entendi como fazer, e também lembrando que ele tem que estar vinculado com o uniqueid para posteriormente consultar a gravação caso precise.


att


Eduardo Souza




Em 31/07/2013, às 17:47, Marcelo Terres <mhte...@gmail.com> escreveu:

> Tu pode fazer um protocolo no estilo YYYYMMAA<XXXX> onde XXXX é um
> contador zerado diariamente.
>
> Tu pode gerar este código antes de atender a chamada e depois
> armazená-lo em um userfield do CDR.
>
> []s
> Marcelo H. Terres
> mhte...@gmail.com
> http://mundoopensource.blogspot.com
> http://biertasters.blogspot.com
> http://twitter.com/mhterres
>
>
> 2013/7/31 Eduardo Souza <eduso...@gmail.com>:
>> _______________________________________________
>> KHOMP: completa linha de placas externas FXO, FXS, GSM e E1;
>> Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7;
>> Intercomunicadores para acesso remoto via rede IP. Conheça em www.Khomp.com.
>> _______________________________________________
>> ALIGERA – Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7.
>> Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express.
>> Channel Bank – Appliance Asterisk - Acesse www.aligera.com.br.
>> _______________________________________________
>> Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasi...@listas.asteriskbrasil.org
> _______________________________________________
> KHOMP: completa linha de placas externas FXO, FXS, GSM e E1;
> Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7;
> Intercomunicadores para acesso remoto via rede IP. Conheça em www.Khomp.com.
> _______________________________________________
> ALIGERA – Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7.
> Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express.
> Channel Bank – Appliance Asterisk - Acesse www.aligera.com.br.
> _______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasi...@listas.asteriskbrasil.org

Dirceu de Moura

unread,
Aug 1, 2013, 12:25:08 PM8/1/13
to elasti...@googlegroups.com

 

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.

Marco Antonio

unread,
Aug 1, 2013, 1:22:03 PM8/1/13
to elasti...@googlegroups.com

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

--

Eduardo Souza

unread,
Aug 1, 2013, 4:37:01 PM8/1/13
to elasti...@googlegroups.com, asteris...@listas.asteriskbrasil.org
Boa tarde

Consegui realizar a seguinte forma, se alguém puder melhorar isso agradeço.

Tipo quando ligo para empresa a Ura joga para uma fila no caso do callcenter, ai ele vai falar o numero do protocolo usando o UNIQUEID.

Esse protocolo só será válido caso a ligação seja atendida caso contrário ele não grava no CDR

alguém tem sugestões de melhoras?

[from-internal]

exten => 900,1,SayDigits(${UNIQUEID})
exten => 900,6,Dial(SIP/2001/${EXTEN:2}|40|tTrwW)


Abaixo é o que ele fala para o cliente, no caso o protocolo usando o uniqueid

-- <SIP/2000-0000000a> Playing 'digits/1.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/3.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/7.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/5.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/3.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/8.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/8.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/9.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/3.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/3.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/1.gsm' (language 'en')
-- <SIP/2000-0000000a> Playing 'digits/0.gsm' (language 'en')

Dirceu de Moura

unread,
Aug 1, 2013, 5:54:44 PM8/1/13
to elasti...@googlegroups.com

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

Gustavo Franco

unread,
Aug 5, 2013, 4:14:51 PM8/5/13
to elasti...@googlegroups.com
Adiciona no skype: gustavo.franco1984

--

---
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.





--
::.Gustavo Franco.::
Especialista em Telefonia IP/STFC
www.gustavofranco.com
br.linkedin.com/pub/gustavo-franco-rodrigues/27/266/a6b
47-9638-9594 - TIM
47-8852-6562 - CLARO

Ernany Augusto

unread,
Feb 10, 2014, 8:25:33 AM2/10/14
to elasti...@googlegroups.com

Ernany Augusto

unread,
Feb 10, 2014, 8:25:52 AM2/10/14
to elasti...@googlegroups.com

Alclicio Vieira

unread,
Feb 10, 2014, 11:12:25 AM2/10/14
to elasti...@googlegroups.com

Eu acho que em uma central toda e qualquer ligação deve gerar número de protocolo.

José Eduardo Gonçalves de Souza

unread,
Feb 10, 2014, 11:14:42 AM2/10/14
to elasti...@googlegroups.com
Nessa linha o mesmo não envia para fila.

exten => 2000,n,Dial(SIP/6000,30,Tt)

att

Ernany Augusto

unread,
Feb 10, 2014, 11:39:48 AM2/10/14
to elasti...@googlegroups.com
tenta assim:
exten => 2000,n,Queue(6000,t,,)

desculpa eu estava testando para o meu ramal
por isso o comando dial esqueci de alterar para Queue.

Dannylo Carvalho

unread,
Feb 11, 2014, 11:28:20 AM2/11/14
to elasti...@googlegroups.com
Boa tarde, 
Ernany vc conseguiu com o seu ramal?

Ernany Augusto

unread,
Feb 11, 2014, 12:17:00 PM2/11/14
to elasti...@googlegroups.com
sim consegui

Dannylo Carvalho

unread,
Feb 14, 2014, 8:01:58 AM2/14/14
to elasti...@googlegroups.com
Bom dia Ernany, 

Vê se estou fazendo algo de errado, colocando para ramal.

exten => s,n,Dial(SIP/4135,30,Tt)

Me add no skype dannyloc...@hotmail.com

Ernany Augusto

unread,
Feb 14, 2014, 8:08:27 AM2/14/14
to elasti...@googlegroups.com
esta correto.

Alclicio Vieira

unread,
Feb 14, 2014, 8:12:44 AM2/14/14
to elasti...@googlegroups.com
Aqui temos também gateways gsm Dinstar o produto é muito bom e estável.
Participe do Grupo de discussão sobre Elastix/Asterisk no facebook!

Basta acessar e solicitar participar:  https://www.facebook.com/groups/724045590941656/

ALCLICIO VIEIRA,

Phone:55 (61) 3205-3778 (Fixo Direto)
Phone:55 (61) 9527-7330 (Claro)
Phone:55 (61) 9633-2010 (Vivo) 
Phone:55 (61) 8454-3665 (Oi) 





Marcelo Brantes

unread,
Feb 14, 2014, 9:15:27 AM2/14/14
to elasti...@googlegroups.com
Bom dia, Ernany.

No caso de um teste interno, com ligação de um ramal para outro, como eu deveria fazer o 3º passo? Meu ramal com o X-Lite (que deve receber o protocolo) é o 1613 e o ramal de origem é o 1998, e um ramal que poderia usar como destino seria o 1997.

;;MCDU 5356

exten => 5356,1,Set(__FROM_DID=${EXTEN})
exten => 5356,n,Gosub(app-blacklist-check,s,1)
exten => 5356,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 5356,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 5356,n,Set(CALLERPRES()=allowed_not_screened)

exten => 5356,n(dest-ext),Goto(numero-de-protocolo,s,1)

Tentei algumas opções mas não tive sucesso. Agradeço se puder me auxiliar.


Atenciosamente,
Marcelo Brantes

Ernany Augusto

unread,
Feb 14, 2014, 9:49:08 AM2/14/14
to elasti...@googlegroups.com
não entendi muito bem pode explicar melhor.
mais acredito que seja trocando o 5356 pelo seu ramal.

Marcelo Brantes

unread,
Feb 14, 2014, 11:08:49 AM2/14/14
to elasti...@googlegroups.com
Ernany,

Eu já tentei isso. Coloquei o número do X-Lite (1613) no lugar do 5356 e não funcionou. Agora tentei criar uma queue e apontar ela para o 1613, depois fui lá e coloquei no lugar do 5356 o número da queue. Também não funcionou.

É por aí mesmo e o erro está em outro lugar ou estou fazendo algo errado com o seu script?


Atenciosamente,
Marcelo Brantes

Dannylo Carvalho

unread,
Feb 19, 2014, 12:41:47 PM2/19/14
to elasti...@googlegroups.com
Marcelo, vc conseguiu?

José Eduardo Gonçalves de Souza

unread,
Feb 19, 2014, 12:49:30 PM2/19/14
to elasti...@googlegroups.com
Boa tarde,


O meu já tá até mostrando no módulo callcenter do elastix

quem quiser 

Skype edusouza.linux

abs

Raphael Rodrigues

unread,
Feb 19, 2014, 1:34:10 PM2/19/14
to elasti...@googlegroups.com
Eu gostaria de saber como foi feito para mostrar no modulo callcenter, se puder enviar.
--
Raphael Rodrigues
Analista de Redes - Pd's Informática ltda
Linux user number 510457
LPI000275344
CISCO ID: CSCO12223327
http://www.softwarelivre-campos.org/
http://www.pdsnet.com.br/

"Felizes aqueles cujo conhecimento é livre de ilusões e superstições", Sidarta Gautama.

Vostock

unread,
Mar 13, 2014, 1:18:29 PM3/13/14
to elasti...@googlegroups.com
Eduardo se puder me mandar agradeço!!!!

Alex Freitas

unread,
Feb 12, 2017, 10:56:24 AM2/12/17
to ElastixBrasil
Boa Tarde

Tentei seguir esse tutorial e nao consegui..

Se puder ajudar agradeço...
Reply all
Reply to author
Forward
0 new messages