<div>Bom dia a todos. </div><div>Primeiramente, gostaria de parabenizar aos membros da lista pela educação e respeito com os usuários, independente do nível de conhecimento.  É legal ver que ainda existem listas nacionais que vale a pena frequentar, e esta é uma delas. :D</div>


<div><br></div><div>Recentemente, consegui introduzir o perl no meu ambiente de trabalho, criando algumas ferramentas para manutenção e administração de servidores Asterisk. (PABX IP Open Source.) </div><div>Eu tenho pouca ou quase nenhuma experiência com programação. No máximo, alguns scripts shell que estão sendo devidamente portados/reescritos em Perl. </div>


<div><br></div><div>Eu criei uma rotina para o Asterisk para que, quando um usuário disparar uma ligação, meu script ira consultar o numero digitado pelo usuário com uma base de dados mysql, e então, mediante resultado, ira passar o controle de volta para o asterisk, para que ele complete ou não a ligação. Essa solução será instalada em Callcenters de São Paulo para cumprir esta lei: <a href="http://www.procon.sp.gov.br/noticia.asp?id=934" target="_blank">http://www.procon.sp.gov.br/noticia.asp?id=934</a></div>


<div><br></div><div><br></div><div>O meu problema é, que independente do numero passado pelo asterisk, meu script sempre retorna 0 para a função &amp;consulta_banco, e acaba bloqueando a ligação. </div><div>Eu acredito que poderia resolver isso comparando o valor de $var em um if, mas eu gostaria de entender como resolver isso apenas usando o retorno da função, se este for o modo correto de fazer isso. </div>


<div><br></div><div>Abaixo, o código:</div><div><br></div><div>++ Begin Code ++</div><div>#!/usr/bin/perl -w</div><div><br></div><div>use DBI();</div><div>use Asterisk::AGI;</div><div>$AGI = new Asterisk::AGI;</div><div>

<br></div><div>($database, $host, $user, $pw) = qw( procon 127.0.0.1 usuario senha );</div>
<div>#Obter numero discado  via AGI. Deve retornar algo como (01112345678) ;</div><div>$EXTEN = $AGI-&gt;get_variable(&#39;EXTEN&#39;) ;</div><div><br></div><div><br></div><div>if ( &amp;consulta_banco($EXTEN) )  {</div>

<div><span style="white-space:pre">        #Colocando o valor &quot;1&quot; na variavel FORBIDEN, que será tratada pelo asterisk, e imprimindo na  tela.</span></div><div><span style="white-space:pre"></span>        $AGI-&gt;set_variable(&quot;FORBIDEN&quot;, &quot;1&quot;);</div>


<div><span style="white-space:pre">        </span>$AGI-&gt;verbose(&quot;Numero consta na lista do Procon-SP&quot;) ; </div><div>}  </div><div>else {</div><div><span style="white-space:pre">        </span>$AGI-&gt;set_variable(&quot;FORBIDEN&quot;, &quot;0&quot;) ;</div>


<div><span style="white-space:pre">        </span>$AGI-&gt;verbose(&quot;Executando ligacao para $EXTEN&quot;) ; </div><div>}</div><div><br></div><div>#Consultando banco de dados.</div><div>sub consulta_banco { </div><div><span style="white-space:pre">        </span> $dbh = DBI-&gt;connect(&quot;DBI:mysql:database=$database;host=$host&quot;, $user, $pw )  || die print $DBI::errstr; </div>


<div>         $dbh-&gt;{RaiseError} = 1;</div><div><span style="white-space:pre">        </span> $sth = $dbh-&gt;prepare(&quot; SELECT numero FROM numeros WHERE numero LIKE \&quot;%$_[0]%\&quot; &quot;);</div>
<div>         $sth-&gt;execute() ;</div><div>}<span style="white-space:pre">        </span></div>
<div><span style="white-space:pre"><br></span></div><div><span style="white-space:pre">++ End Code ++</span></div><div><span style="white-space:pre">Obrigado, </span></div>