[AsteriskBrasil] Gerar Numero de Protocolo

Marcelo Terres mhterres em gmail.com
Sexta Agosto 2 17:33:19 BRT 2013


Você consulta o protocolo diretamente na tabela CDR pesquisando no
campo userfield.

É muito mais prático, o próprio Asterisk grava para você o dado e não
é necessário criar um DB separado (e nem realizar uma nova conexão no
mesmo para gravar dados). Além disso tu usará um select simples
(select * from cdr where userfield=PROTOCOLO) pois o registro da
tabela conterá todas as informações da chamada.

Simples assim.

[]s
Marcelo H. Terres
mhterres em gmail.com
http://mundoopensource.blogspot.com
http://biertasters.blogspot.com
http://twitter.com/mhterres


2013/8/2 Eduardo Souza <edusouza.ti em gmail.com>:
> OK tb cheguei perto de um com googletts, e futuramente o cliente liga e eu peço o protocolo de atendimento e consultaria como seria feito?
> Em 02/08/2013, às 17:20, Marcelo Terres <mhterres em gmail.com> escreveu:
>
>> Mais simples, e sem criação de novo DB:
>>
>> exten => _XXX,1,Answer
>> same => n,Set(PROTOCOLO=${RAND(1,10000000)})
>> same => n,Set(CDR(userfield)=${PROTOCOLO})
>> same => n,agi(googletts.agi,"Bem vindo a empresa X.",pt-BR)
>> same => n,agi(googletts.agi,"Seu protocolo de atendimento é",pt-BR)
>> same => n,SayDigits(${PROTOCOLO})
>> same => n,agi(googletts.agi,"Aguarde que sua ligação está sendo
>> transferida.",pt-BR)
>> same => n,Dial(SIP/${EXTEN},60,twx) ; no caso ${EXTEN}=404
>> same => n,Hangup
>>
>> Usei o googletts.agi só para facilitar e entregar um exemplo
>> facilmente implementável. O uso da função RAND também teve este
>> objetivo. No caso sugiro a criação de um agi para gerar o número do
>> protocolo.
>>
>> Após o término da chamada, na tabela CDR temos então o seguinte registro:
>>
>> id   |        calldate        | src | dst | userfield |    uniqueid
>> -------+------------------------+-----+-----+-----------+----------------
>> 37855 | 2013-08-02 17:10:55-03 | 407 | 404 |  5970968 | 1375474255.692
>>
>>
>> Onde 5970968 foi o número do protocolo.
>>
>> []s
>> Marcelo H. Terres
>> mhterres em gmail.com
>> http://mundoopensource.blogspot.com
>> http://biertasters.blogspot.com
>> http://twitter.com/mhterres
>>
>>
>> 2013/8/2 Wagner <wagner em sincronismotelecom.com>:
>>> Vou compartilhar aqui uma solução que criei para este caso.
>>> Vai ficar meio grande o e-mail.
>>>
>>> =================================================================
>>> --Funcionamento:
>>>
>>> 1. Atender.
>>> 2. Áudio de atendimento.
>>> 3. Gerar protocolo por AGI.
>>> 4. Áudio de protocolo.
>>> 5. Falar o protocolo gerado.
>>> 6. Opção de repetir protocolo.
>>> 7. Se digitar 1 ou qualquer coisa repete o Protocolo.
>>> 8. Colocar o valor do protocolo no userfild.
>>> 9. Se esperar vai para a fila.
>>> 10. Desliga
>>> =================================================================
>>> --Criar tabela.
>>>
>>> 1. Criar o database e a tabela:
>>> CREATE DATABASE registros;
>>> USE registros;
>>> CREATE TABLE protocolos (id int(10) not null auto_increment, numero_cli
>>> varchar(15), data VARCHAR(20), hora VARCHAR(20), protocolo int(16) not null,
>>> primary key (id));
>>> =================================================================
>>> --AGI em Perl
>>>
>>> 1. Instalar bibliotecas do Perl:
>>> apt-get install libdbd-pg-perl
>>> apt-get install ghostscript libnewt-dev libsox-fmt-all linux-headers-`uname
>>> -r` sox
>>> perl -MCPAN -e 'install Asterisk::AGI'
>>>
>>> 2. Código da AGI:
>>>
>>> #!/usr/bin/perl -w
>>>
>>> use DBI();
>>> use Asterisk::AGI;
>>> $AGI = new Asterisk::AGI;
>>>
>>> # ARQUIVO DE LOG
>>> if(! open FILE, ">>/home/suahome/logagi.txt") {  # APONTE QUAL A SUA HOME E
>>> NELA CRIE O ARQUIVO logagi.txt COM PERMISSOES 775
>>>    die "Nao abriu o arquivo" . "\n" ;
>>> }
>>>
>>> $NUM = $ARGV[0]; # numero do cliente
>>> $DATA = $ARGV[1]; # data da discagem
>>> $HORA = $ARGV[2]; # hora da discagem
>>>
>>> # GERAR PROTOCOLO O NUMERO RANDOM MINIMO SERA 1000 E O MAXIMO 9999
>>> $RANGE = 8999;
>>> $MINIMUM = 1000;
>>>
>>> $RANDOM = int(rand($RANGE)) + $MINIMUM;
>>>
>>> $PROTOCOLO = $DATA . $HORA . $RANDOM;
>>>
>>> # REGISTRAR NO BANCO
>>> $dbh = DBI->connect("DBI:mysql:registros:localhost", "root", "suasenha*") or
>>> die print $DBI::errstr; # INSIRA A SENHA DO ROOT DO SEU DB
>>> $dbh->{RaiseError} = 1;
>>> $cmd = "insert into protocolos values
>>> ('0','$NUM','$DATA','$HORA','$PROTOCOLO')";
>>> $sth = $dbh->prepare($cmd);
>>> $sth->execute();
>>> $result = $sth->rows;
>>> $sth->finish();
>>> $dbh->disconnect();
>>>
>>> #RETORNANDO O NUMERO DO PROTOCOLO PARA SER ESCRITO NO USERFILD
>>> $AGI->set_variable('protocolo',$PROTOCOLO);
>>>
>>> # ESCREVENDO NO LOG O RESULTADO DO PROCESSO
>>> print FILE "NUMERO: $NUM DATA: $DATA HORA: $HORA PROTOCOLO: $PROTOCOLO" .
>>> "\n";
>>>
>>> # RETORNAR AO ASTERISK
>>> exit;
>>>
>>> 3. Coloque a AGI na pasta /var/lib/asterisk/agi-bin com permissão 777.
>>> =================================================================
>>>
>>> --Dialplan
>>>
>>> 1. Em AEL:
>>>
>>> context from-psnt {
>>>  _[2]XXX => { // COLOQUE A SUA MASCARA
>>> //============================================================================
>>> // TESTE GERAR PROTOCOLO
>>> //============================================================================
>>>        Answer();
>>>        Playback(audioAtendimento);
>>>
>>> AGI(gera_protocolo.pl,${CDR(src)},${STRFTIME(${EPOCH},,%Y%m%d)},${STRFTIME(${EPOCH},,%H%M)});
>>>        Inicio:
>>>        Playback(audioProtocolo);
>>>        NoOp(------------> ${protocolo});
>>>        SayDigits(${protocolo});
>>>        BackGround(audioRepetir);
>>>        WaitExten(5);
>>>    };
>>>
>>>    1 => { // SE O CLIENTE DISCAR 1 O PROTOCOLO SERA REPETIDO
>>>        goto from-pstn,2000,Inicio; // ALTERA PARA A MASCARA DO INICIO E
>>> PARA O SEU CONTEXT DE ENTRADA
>>>    };
>>>
>>>    i => { // SE O CLIENTE DISCAR ALGO DIFERENTE DE 1 O PROTOCOLO TAMBEM
>>> SERA REPETIDO
>>>        goto from-pstn,2000,Inicio; // ALTERA PARA A MASCARA DO INICIO E
>>> PARA O SEU CONTEXT DE ENTRADA
>>>    };
>>>
>>>    t => {
>>>        Set(CDR(userfild)=${protocolo});
>>>        Queue(fila1,tTwW); # COLOQUE A SUA FILA
>>>        Hangup();
>>>    };
>>> };
>>>
>>> 2. Áudios:
>>> O áudio audioAtendimento deve ter algo como "Olá cliente bem vindo a XXXX".
>>> O áudio audioProtocolo deve ter algo como "Seu protocolo é".
>>> O áudio audioRepetir deve ter algo como "Se deseja que eu repita o código
>>> disque 1 ou aguarde para ser atendido".
>>>
>>> 3. Saída do logagi.txt:
>>>
>>> NUMERO: 1133235550 DATA: 20130802 HORA: 1509 PROTOCOLO: 2013080215095657
>>> NUMERO: 11995310802 DATA: 20130802 HORA: 1514 PROTOCOLO: 2013080215146297
>>>
>>> 4. Registro no banco:
>>>
>>> +----+-------------+----------+------+------------------+
>>> | id | numero_cli  | data     | hora | protocolo        |
>>> +----+-------------+----------+------+------------------+
>>> |  8 | 1133235550  | 20130802 | 1509 | 2013080215095657 |
>>> |  9 | 11995310802 | 20130802 | 1514 | 2013080215146297 |
>>> +----+-------------+----------+------+------------------+
>>> =================================================================
>>>
>>> Em 01/08/2013 19:41, Marcio - Google escreveu:
>>>
>>> Já pensou em usar um CRM?!?!?
>>>
>>>
>>>
>>>
>>> [...]'s
>>>
>>> Marcio
>>>
>>> ========================================
>>> ########### Campanha Ajude o Marcio! ###########
>>> http://sosmarcio.blogspot.com.br/
>>> http://www.vakinha.com.br/VaquinhaP.aspx?e=195793
>>> ========================================
>>>
>>>
>>> Em 1 de agosto de 2013 16:37, Eduardo Souza <edusouza.ti em gmail.com>
>>> escreveu:
>>>>
>>>> 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')
>>>>
>>>> _______________________________________________
>>>> 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
>>>> asteriskbrasil-unsubscribe em 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
>>> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>>>
>>>
>>> --
>>> Wagner Mazuchi de Lima Junior
>>> 11 3323-5550
>>> wagner em sincronismotelecom.com
>>> www.sincronismo.com.br
>>> Rua Tácito de Almeida, nº 196
>>> 01251-010 - Pacaembu - São Paulo - SP
>>>
>>>
>>> _______________________________________________
>>> 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
>>> asteriskbrasil-unsubscribe em 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 asteriskbrasil-unsubscribe em 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 asteriskbrasil-unsubscribe em listas.asteriskbrasil.org


Mais detalhes sobre a lista de discussão AsteriskBrasil