Integrar portabilidade via AGI e PHP
Este AGI esta desenvolvido para enviar o número no formato ( 0 DDD número, Ex: 011 99999 9999) , caso for usar outro formato tem que fazer as modificações.
Este script AGI precisa do framework PHPAGI, baixe aqui phpagi-2.20.tar.gz
Descompacte o PhpAgi no diretório /var/lib/asterisk/agi-bin
cd /var/lib/asterisk/agi-bin
wget https://www.portabilidadecelular.com/download/phpagi.tar.gz
tar xzvf phpagi.tar.gz
Execute este comando para criar o arquivo que conterá o AGI da consulta
touch /var/lib/asterisk/agi-bin/portabilidadecelular
Coloque no arquivo /var/lib/asterisk/agi-bin/portabilidadecelular o conteúdo abaixo
#!/usr/bin/php -q
<?php
if (function_exists('pcntl_signal'))
{
pcntl_signal(SIGHUP, SIG_IGN);
}
require_once ('phpagi.php');
$agi = new AGI();
$destination = $argv[1];
$usuario = "SEU USUARIO AQUI";
$senha = "SUA SENHA AQUI";
//numero enviado para o webservidor no formato 55 ddd nº
$url = "http://consultas.portabilidadecelular.com/painel/consulta_numero.php?user=".$usuario."&pass=".$senha."&seache_number=".$destination;
$operadora = file_get_contents($url);
$agi->verbose("Operadora " . $operadora);
$agi->set_variable("OPERADORA", $operadora);
?>
Agora de as permissões neste diretório
chmod +x /var/lib/asterisk/agi-bin/*
Agora é so criar seu contexto
Este contexto so vai enviar para a consulta os Celulares, se quiser consultar qualquer numero, altere na linha abaixo de _0ZX[6-9] para _X.
[default]
exten => _0ZX[6-9]X.,1,NoOp(######CONSULTA DA PORTABILIDADE######)
same => n,Agi(portabilidadecelular,${EXTEN});REALIZA CONSULTA
same => n,Goto(redirect,${OPERADORA}${EXTEN},1)
[redirect]
exten => _55314.,1,Dial(SIP/TRONCO_OI/${EXTEN:5})
same => n,Hangup()
exten => _55341.,1,Dial(SIP/TRONCO_TIM/${EXTEN:5})
same => n,Hangup()
exten => _5532[0,3].,1,Dial(SIP/TRONCO_VIVO/${EXTEN:5})
same => n,Hangup()
exten => _55321.,1,Dial(SIP/TRONCO_CLARO/${EXTEN:5})
same => n,Hangup()
//esta regra envia para um tronco, todas as ligações que vc não tiver tronco.
exten => _55.,1,Dial(SIP/TRONCO_PARA_OUTRAS_OPERADORAs/${EXTEN:5})
same => n,Hangup()
Consulte o menu Códigos para verificar os códigos de retorno.