[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