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 mhter...@gmail.com http://mundoopensource.blogspot.com http://biertasters.blogspot.com http://twitter.com/mhterres 2013/8/2 Wagner <wag...@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...@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-unsubscr...@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-unsubscr...@listas.asteriskbrasil.org > > > -- > Wagner Mazuchi de Lima Junior > 11 3323-5550 > wag...@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-unsubscr...@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-unsubscr...@listas.asteriskbrasil.org