[AsteriskBrasil] googletts.agi

Mazolini, Jose Jose.Mazolini em fisglobal.com
Domingo Setembro 16 00:31:45 BRT 2012


Pessoal,

Consegui resolver o problema.
1) O modo como acessei o proxy esta correto:
$ua->proxy('http','http://dominio\\usuario:senha@ip:80');

2) O Asterisk não conseguia achar o mpg123 em /usr/local/bin não descobri a causa. O usuário asterisk conseguia e executava normal no shell, mas dentro do programa não.
Esse foi um dos maiores problemas. Se alguém souber como corrigir isso bem eu agradeço, uso o elastix como base.
Fiz um link simbólico em /usr/bin:
cd /usr/bin/
ln -s /usr/local/bin/mpg123 mpg123

3) o meu teste não estava correto tinha 2 erros:
a) faltava ": ".
b) o idioma é no formato do google não do Asterisk, portanto "pt-BR" não "pt_BR". 

# ./googletts.agi
agi_request: googletts.agi
agi_arg_1: Teste
agi_arg_2: pt-BR
agi_arg_3: any


4) Existe uma linha no código que penso que foi colocada para testar passar argumentos na linha de comando e isso acaba limpando os args
Comentem com #.
Antes:
($AGI{arg_1}, $AGI{arg_2}, $AGI{arg_3}) = @ARGV;
Depois:
#($AGI{arg_1}, $AGI{arg_2}, $AGI{arg_3}) = @ARGV;


Para fazer o Reconhecimento de voz os mesmos problemas incluindo a instalação do FLAC que é necessário, mas nenhuma dificuldade adicional.
Também fiz 2 alterações.
1) Ele fazia RecVoz só de 2 números. Não era o que eu queria.
Antes:
                # Remove spaces between digits #
               $response{utterance}  =~ s/(\d)\s(\d)/$1$2/g;
Depois:
                # Remove spaces between digits #
               # $response{utterance}  =~ s/(\d)\s(\d)/$1$2/g;

2) Não sendo números existia o problema da codificação em utf-8.
Antes:
                $response{utterance}  = "$1";
                $response{confidence} = "$2";
Depois:
                $response{utterance}  = "$1";
                utf8::decode($response{utterance});
                $response{confidence} = "$2";


Também me ajudou muito na linha de comando executar: 
*CLI> agi set debug on

Nos debugs acabei criando um problema pra mim, que eu colocava pontos com:
        print "NoOp $variavel \n";
        checkresponse();
E me esquecia de colocar em baixo checkresponse();
Quando chegava por exemplo no:
        print "STREAM FILE $file \"$keys\"\n";
        @response = checkresponse(); 
Voltava rápido pro extension e não tocava.
Ai eu colocava um sleep(4) funcionava e eu não entendia o por que. Então a cada NoOp coloque checkresponse(); pois fica a resposta no buffer.
Uma melhoria que caberia no código é a cada warn colocar um NoOp. Afinal no Asterisk não da pra ver o warn. Isso teria me ajudado a saber da dificuldade em achar o mpg123.

Espero ter retribuído a quem procurou me ajudar.

Att,

José Eduardo C. Mazolini
Analista de Telecom



-----Original Message-----
From: asteriskbrasil-bounces em listas.asteriskbrasil.org [mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] On Behalf Of Mazolini, Jose
Sent: quinta-feira, 6 de setembro de 2012 09:10
To: asteriskbrasil em listas.asteriskbrasil.org
Subject: [AsteriskBrasil] googletts.agi

Srs,

Estou tentando rodar o agi indicado por um amigo aqui da lista.


A única alteração que fiz foi próximo a linha 170, abaixo de $ua->timeout(5) coloquei:
$ua->proxy('http','http://dominio\\usuario:senha@ip:80');


Vejam que o sox e mpg123 estão ok.
# /usr/bin/which sox
/usr/bin/sox

# /usr/bin/which mpg123
/usr/local/bin/mpg123

# sox -h
sox: Version 12.18.1

# mpg123 -?
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.14.4; written and copyright by Michael Hipp and others
        free software (LGPL/GPL) without any warranty but with best wishes


Não sou programador em perl não consegui identificar onde exatamente esta o erro.
Se chamar o agi fora do Asterisk, consigo enviar alguma coisa para que ele simule?
O teste que fiz abaixo é correto:
# ./googletts.agi
agi_arg_1 teste
agi_arg_2 en
agi_arg_3 any

Use of uninitialized value in concatenation (.) or string at ./googletts.agi line 108, <STDIN> line 4.
 -- : Found sox in: /usr/bin/sox, mpg123 in: /usr/local/bin/mpg123 Use of uninitialized value in substitution (s///) at ./googletts.agi line 123, <STDIN> line 4.
Use of uninitialized value in substitution (s///) at ./googletts.agi line 124, <STDIN> line 4.
Use of uninitialized value in substitution (s///) at ./googletts.agi line 125, <STDIN> line 4.
Use of uninitialized value in length at ./googletts.agi line 126, <STDIN> line 4.
 -- : No text passed for synthesis.


_____________
A informação contida nesta mensagem é confidencial e proprietária. Se você recebeu este e-mail por engano, por favor: (i) apague a mensagem e todas as suas cópias e anexos; (ii) não revele, distribua ou utilize a mensagem ou seu conteúdo de qualquer maneira; e (iii) notifique o remetente imediatamente. Adicionalmente, por favor esteja informado de que qualquer mensagem endereçada ao nosso domínio está sujeita ao arquivamento e leitura por outros membros da companhia, além do próprio destinatário da mensagem. Obrigado.

The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.
_______________________________________________
KHOMP Inovação: External Board Series
Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e FreeSWITCH.
Tenha a External Series Experience na sua aplicação. Visite www.khomp.com _______________________________________________
DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM Centro Treinamento - Curso de PABX IP -  Asterisk  - Site  www.digivoice.com.br ________
YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do mercado.
email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 ______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org

_____________
A informação contida nesta mensagem é confidencial e proprietária. Se você recebeu este e-mail por engano, por favor: (i) apague a mensagem e todas as suas cópias e anexos; (ii) não revele, distribua ou utilize a mensagem ou seu conteúdo de qualquer maneira; e (iii) notifique o remetente imediatamente. Adicionalmente, por favor esteja informado de que qualquer mensagem endereçada ao nosso domínio está sujeita ao arquivamento e leitura por outros membros da companhia, além do próprio destinatário da mensagem. Obrigado.

The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.


Mais detalhes sobre a lista de discussão AsteriskBrasil