[AsteriskBrasil] Gerar Numero de Protocolo

Eduardo Souza edusouza.ti em gmail.com
Sexta Agosto 2 17:28:28 BRT 2013


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



Mais detalhes sobre a lista de discussão AsteriskBrasil