quinta-feira, 7 de março de 2013

Script php+agi Portabilidade celular


Bom galera, algum tempo atrás postei um script de portabilidade de operadoras de celular na lista asteriskBrasil usando a classe agiphp, esse script é bem simples, porém, com um pouco de imaginação da pra ir além.

Utilizo como servidor de consulta a DRA Telecom, basta contratar um dos planos para ter acesso a URL de consulta, o usuário neste exemplo é demo e permite somente 20 consultas diária.

Utilizei algumas informações de alguns posts encontrados na lista.

Extensions .conf

exten => _0XX[6-9]XXXXXXX,1,NoOp(---> DE ${CALLERID(num)} PARA ${EXTEN} <--)
exten => _0XX[6-9]XXXXXXX,n,AGI(portabilidade.php,${EXTEN:1})
exten => _0XX[6-9]XXXXXXX,n,NoOp(---> A OPERADORA DISCADA E: ${OPERADORA} <---)
exten => _0XX[6-9]XXXXXXX,n,Hangup()

portabilidade.php

#!/usr/bin/php -q
<?php
include("phpagi.php");
//version: Danilo Almeida
//package: AGI Portabilidade PHP
//copyright: Copyright (C) Open Source.
//license: GNU/GPL, see LICENSE.php
//Agi para consulta de operadora para celulares portados
//Acesso ao banco de dados fornecido por http://dratelecom.com.br
//Contato: daniloricalmeida@gmail.com

$agi = new AGI(); //instanciando objeto
$numero = $argv[1]; //pegando numero discado no extensions.conf
$numero = $numero; //DDD+NUMERO
$url="http://portabilidade.dratelecom.com.br/consulta.php?number=$numero&user=demo&pass=demo";
$chave = file_get_contents($url);

switch($chave){
    case 5312 :
        $operadora = 'CTBC CELULAR S.A' ;
        break;
        case 55314 :
        $operadora = 'BRASIL TELECOM CELULAR' ;
        break;
        case 55320 :
        $operadora = 'VIVO' ;
        break;
        case 55321 :
        $operadora = 'AMERICEL' ;
        break;
        case 55323 :
        $operadora = 'TELEMIG CELULAR' ;
        break;
        case 55324 :
        $operadora = 'AMERICEL' ;
       break;
        case 55331 :
        $operadora = 'TNL PCS' ;
        break;
        case 55337 :
        $operadora = 'UNICEL DO BRASIL' ;
        break;
        case 55341 :
        $operadora = 'TIM CELULAR' ;
        break;
        case 55343 :
        $operadora = 'SERCOMTEL CELULAR' ;
        break;
        case 55349 :
        $operadora = 'OPTIONS COMP' ;
        break;
        case 55377 :
        $operadora = 'MCS (Nextel)' ;
        break;
        case 55390 :
        $operadora = 'TELCOM TELECOMUNICACOES DO BRASIL' ;
        break;
        case 55391 :
        $operadora = 'FALKLAND TECNOLOGIA' ;
        break;
        case 55392 :
        $operadora = 'IRIDIUM' ;
        break;
        case 55393 :
        $operadora = 'GLOBALSTAR DO BRASIL' ;
        break;
}

$agi->set_variable("OPERADORA", $operadora);
exit();
?>

Retorno CLI

-- Executing [91538563@contexto-ramais-voip:1] NoOp("SIP/5001-0000011d", "---> DE 5001 PARA 91538563 <--") in new stack
    -- Executing [91538563@contexto-ramais-voip:2] AGI("SIP/5001-0000011d", "portabilidade.php,4391538563") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/portabilidade.php
    -- <SIP/5001-0000011d>AGI Script portabilidade.php completed, returning 0
    -- Executing [91538563@contexto-ramais-voip:3] NoOp("SIP/5001-0000011d", "---> A OPERADORA DISCADA E: VIVO <---") in new stack

Lembrando que estou utilizando a classe agiphp, a mesma deve estar no diretório /var/lib/asterisk/agi-bin/ juntamente com o arquivo portabilidade.php.
Deve-se também dar permissão de execução nos arquivos para que o asterisk possa executar o mesmo.

qualquer dúvida estou a disposição, devida a correria acabo fazendo os tutoriais correndo e pode ser que fique alguma coisa para trás..rsrs

abraço galera e até a próxima.

Danilo Almeida

5 comentários:

  1. E a questão das rotas?

    Você já fez?

    ResponderExcluir
    Respostas
    1. depende do que estiver usando (gateway e placa).
      tenho rodando em um EBS da khomp, funciona legal.

      Excluir
  2. Amigo.. sou novato em asterisk.. estou criando um server elastix.. me interessei em colocar para funcionar esta AGI.. preciso de uma ajuda.. poderia adicionar vc no msn.?...

    ResponderExcluir
    Respostas
    1. opa, pode sim... msn ta morrendo, me add no skype: danilo.almeida33

      Excluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir