[AsteriskBrasil] Gerar Numero de Protocolo
Wagner
wagner em sincronismotelecom.com
Sexta Agosto 2 16:26:41 BRT 2013
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
> <mailto: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 <http://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
> <http://www.aligera.com.br>.
> _______________________________________________
> Para remover seu email desta lista, basta enviar um email em
> branco para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
> <mailto: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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20130802/c76d6306/attachment-0001.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil