Asterisk – Text to Speech
Configuração de URA integrado com TTS e MYSQL
Esta demonstração foi criada em ambiente virtual, utilizando a versão 4 do Issabel (CentOS 7 64bits).
Apresenta como integrar em uma URA simples, a utilização do Google TTS juntamente com uma consulta a uma base de dados MYSQL (MariaDB) através de AGI escrito em PHP.
TTS (Text to Speech) é a tecnologia que permite sintetizar a fala humana, convertendo texto em linguagem normal.
Instalando pacotes necessários
Instalação dos pacotes necessários e dependências da API “googletts”.
# yum install perl-libwww-perl perl-IO-Socket-SSL perl-LWP-Protocol-https mpg123 git -y
Baixando a API “googletts”
Pagina da Api: http://zaf.github.io/asterisk-googletts/
cd /root
git clone git://github.com/zaf/asterisk-googletts
cp asterisk-googletts/googletts.agi /var/lib/asterisk/agi-bin/
cd /var/lib/asterisk/agi-bin/
chmod 700 googletts.agi
chown asterisk:asterisk googletts.agi
Criando a Base de Teste no MYSQL
mysql -u root -pSENHADOMYSQL
mysql>CREATE DATABASE tts;
mysql>CREATE TABLE cliente( id INT(11) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, cpf VARCHAR(11) NOT NULL, nome VARCHAR(100) NOT NULL);
mysql>CREATE INDEX idx_cpf ON cliente(cpf);
mysql>INSERT INTO cliente (cpf,nome) VALUES (‘11111111111′,’João Roberto da Silva’),(‘22222222222′,’Paulo Ricardo dos Santos’),(‘33333333333′,’Maria Luiza Fernandes’);
Criando AGI para consulta ao MYSQL
Criar arquivo “/var/lib/asterisk/agi-bin/checkcpf.agi” com o seguinte conteúdo:
#!/usr/bin/php -q <?php include('phpagi.php'); $cpf = $argv[1]; $agi = new AGI(); $db = mysqli_connect("127.0.0.1","root","102030405060","tts"); if( ! $db ){ $agi->verbose("Erro ao tentar conectar no MYSQL " . mysqli_connect_error()); exit(0); } $res = $db->query("SELECT * FROM cliente WHERE cpf = '$cpf';"); if( $res->num_rows == 0 ){ $agi->set_variable("CPFSTATUS",0); $agi->set_variable("CPFMESSAGE","CPF NAO ENCONTRADO. DIGITE NOVAMENTE"); }else{ $row = $res->fetch_object(); $agi->set_variable("CPFSTATUS",1); $agi->set_variable("CPFMESSAGE",$row->nome); } $res->close(); $db->close(); exit(0); ?>
Alterar permissões do arquivo
chmod 700 /var/lib/asterisk/agi-bin/checkcpf.agi
chown asterisk:asterisk /var/lib/asterisk/agi-bin/checkcpf.agi
Exten para testar incluída no from-internal
(em extensions_custom.conf )
exten => 5000,1,Verbose(Testando Google TTS);
same => n,Answer();
same => n,Agi(googletts.agi,”Seja bem vindo à empresa XYZ”,pt-BR);
same => n(ini),Agi(googletts.agi,”Por favor, digite o seu CPF”,pt-BR);
same => n,Read(CPF,”silence/1″,11,,,5);
same => n,Agi(checkcpf.agi,${CPF});
same => n,GotoIf($[ “${CPFSTATUS}” = “1” ]?ok:err);
same => n,Hangup();
same => n(ok),Agi(googletts.agi,”Olá, ${CPFMESSAGE}, escolha uma das opções a seguir.”,pt-BR);
same => n,MusicOnHold();
same => n,Hangup();
same => n(err),Agi(googletts.agi,”${CPFMESSAGE}”,pt-BR);
same => n,Goto(ini);