/**
  * Segunda etapa, envio dos dados.
  *
  * @param \MrPrompt\Portabilidade\Telefone $telefone
  * @param \MrPrompt\Portabilidade\Captcha $captcha
  * @return mixed
  */
 public function consulta(Telefone $telefone, Captcha $captcha)
 {
     $campos = array('nmTelefone' => $telefone->getNumero(), 'j_captcha_response' => $captcha->getTexto(), 'jcid' => $this->jcid, 'method:consultar' => 'Consultar');
     $url = $this->url . '/consulta/executaConsultaSituacaoAtual';
     $retorno = $this->getCurl()->post($url, $campos);
     $doc = new \DOMDocument();
     $doc->loadHTML($retorno->body);
     $path = new \DOMXPath($doc);
     $grids = $path->query('//tbody')->item(0)->childNodes;
     // se não for encontrado conteúdo no tbody, é pq não achou o telefone.
     if ($grids->length == 0) {
         throw new \Exception('Telefone não identificado.', 500);
     }
     return $grids->item(1)->nodeValue;
 }
#!/usr/bin/env php -q
<?php 
$load = (require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php');
$load->add('MrPrompt', __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'src');
use MrPrompt\Portabilidade\Telefone;
use MrPrompt\Portabilidade\Captcha;
use MrPrompt\Portabilidade\Consulta;
try {
    echo "Informe o telefone que deseja consultar: ";
    $telefone = new Telefone();
    $telefone->setNumero(chop(fgets(STDIN)));
    echo "Baixando captcha...", PHP_EOL;
    $portabilidade = new Consulta();
    $captcha = $portabilidade->baixaCaptcha();
    if ($captcha instanceof Captcha) {
        echo "Captcha baixado, tentando abrir...", PHP_EOL;
        passthru("open {$captcha->getImagem()}");
        echo "Entre com o texto da imagem: ";
        $captcha->setTexto(chop(fgets(STDIN)));
    }
    echo "Enviando chamada...", PHP_EOL;
    $retorno = $portabilidade->consulta($telefone, $captcha);
    printf("Operadora: %s\n", $retorno);
} catch (\Exception $e) {
    printf("Erro inesperado: %s - #%d\n", $e->getMessage(), $e->getCode());
}