[AsteriskBrasil] Asterisk chamando webservice

Mike Tesliuk mike em tesliuk.com
Quarta Outubro 10 17:31:44 BRT 2012


Este é um script em perl que chama o webservice para checar os numeros 
portados.

#!/usr/bin/perl

use DBI;
use Asterisk::AGI;
use Switch;
use SOAP::Lite;

$AGI = new Asterisk::AGI;
%input = $AGI->ReadParse();

$tn = $AGI->get_variable('DESTINO');


if(length($tn) == "12"){
         $ddd = substr($tn, 2, 2);
}elsif(length($tn) == "10"){
         $ddd = substr($tn, 0, 2);

}


$soap = SOAP::Lite
         -> uri("http://mlm")
         -> proxy("http://meu/web/service/consulta_portabilidade.cfc?wsdl");

$usuario = 'MEU_USUAARIO';
$senha = 'MINHA_SENHA';
$querytype = 'RN1';

*$xml = '<?xml version="1.0" encoding="UTF-8"?>
<MessageContent xmlns="urn:brazil:lnp:1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<yquery>
<querytype xsi:type="xsd:string">' . $querytype . '</querytype>
<tn xsi:type="xsd:string">' . $tn . '</tn>
<usuario xsi:type="xsd:string">' . $usuario . '</usuario>
<senha xsi:type="xsd:string">'. $senha . '</senha>
</yquery>
</MessageContent>';

*

my $body = SOAP::Data->name("arg0")->value("$xml");

$status = $soap->Process($body);

$operadora = $status->result;

$AGI->exec("NoOp", "OPERADORA: $operadora DDD $ddd");

switch($operadora){
         case "55341" {
                 $AGI->exec("NoOp", "CASE 55341 TIM");
                 $AGI->set_variable("TIM","1");
         }
         case "55321" {
                 $AGI->exec("NoOp", "CASE 55321 CLARO - OTHER");
                 $AGI->set_variable("OTHER","1");
         }
         case "55320" {
                 $AGI->exec("NoOp","CASE 55320 VIVO");
                 $AGI->set_variable("VIVO","1");

         } else {

                 $AGI->exec("NoOp", "CASE $operadora - OTHER");
                 $AGI->set_variable("OTHER","1");

         }
}




Para maiores informações procure sobre asterisk+agi+perl ou asterisk+agi+php



No meu asterisk eu chamo da seguinte forma.

exten => _55XX[6-9]XXXXXXX,1,NoOp(SAIDA PARA CELULAR ${EXTEN})
exten => _55XX[6-9]XXXXXXX,n,Set(TIM="0")
exten => _55XX[6-9]XXXXXXX,n,Set(VIVO="0")
exten => _55XX[6-9]XXXXXXX,n,Set(OTHER="0")
*exten => _55XX[6-9]XXXXXXX,n,Set(DESTINO=${EXTEN:2})*
exten => _55XX[6-9]XXXXXXX,n,Authenticate(/etc/asterisk/senhas,a)
*exten => _55XX[6-9]XXXXXXX,n,Agi(verifica-operadora.agi)*
exten => _55XX[6-9]XXXXXXX,n,Macro(records,${CALLERID(num)},${DESTINO})
exten => _55XX[6-9]XXXXXXX,n,NoOp(TIM = ${TIM} - VIVO = ${VIVO} - OTHER 
= ${OTHER})
exten => _55XX[6-9]XXXXXXX,n,GotoIf($[${TIM} = 1]?disca-tim,${EXTEN},1)
exten => _55XX[6-9]XXXXXXX,n,GotoIf($[${VIVO} = 1]?disca-vivo,${EXTEN},1)
exten => _55XX[6-9]XXXXXXX,n,GotoIf($[${OTHER} = 1]?disca-vivo,${EXTEN},1)
exten => _55XX[6-9]XXXXXXX,n,NoOp(Nao foi possivel determinar o numero)
exten => _55XX[6-9]XXXXXXX,n,Hangup()



Em 10-10-2012 17:16, Alessandro Luís Daudt escreveu:
> Amigo, tu tem como me escrever um exemplo de codigo que faça isso para 
> q eu possa me basear?
>
> sou iniciante nessa parte de usar o agi no asterisk....
>
> Em 10 de outubro de 2012 17:13, Mike Tesliuk <mike em tesliuk.com 
> <mailto:mike em tesliuk.com>> escreveu:
>
>     Faça um AGI, você consegue fazer o post usando perl, php ou sei la
>     oque, e inclusive tratar os resultados se for necessário.
>
>     Em 10-10-2012 17:06, Alessandro Luís Daudt escreveu:
>>     Boa tarde!
>>
>>     Alguem sabe me dizer se eu consigo fazer com que o asterisk chame
>>     um webservice e faça um post nele?
>>
>>     -- 
>>
>>     Atenciosamente,
>>     Alessandro Luis Daudt
>>
>>
>>     _______________________________________________
>>     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. Visitewww.khomp.com  <http://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  - Sitewww.digivoice.com.br  <http://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  <mailto:yealink em commlogik.com.br>  |www.commlogik.com.br  <http://www.commlogik.com.br>  |(11) 5503-1011  <tel:%2811%29%205503-1011>
>>     ______________________________________________
>>     Para remover seu email desta lista, basta enviar um email em branco paraasteriskbrasil-unsubscribe em listas.asteriskbrasil.org  <mailto:asteriskbrasil-unsubscribe em listas.asteriskbrasil.org>
>
>
>     _______________________________________________
>     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 <http://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 <http://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 <mailto:yealink em commlogik.com.br>
>     | www.commlogik.com.br <http://www.commlogik.com.br> | (11)
>     5503-1011 <tel:%2811%29%205503-1011>
>     ______________________________________________
>     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>
>
>
>
>
> -- 
>
> Atenciosamente,
> Alessandro Luis Daudt
>
>
> _______________________________________________
> 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

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20121010/9f1b5557/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil