Como validar números de telefone em PHP com a API Twilio Lookup

March 16, 2016
Escrito por
Sam Agnew
Twilion

Como validar números de telefone em PHP com a API Twilio Lookup

Twilio Lookup é uma API REST de agenda telefônica que você pode usar para verificar se um número existe, formatar números internacionais de acordo com os padrões locais, determinar se um telefone pode receber mensagens de texto e até mesmo descobrir informações sobre a operadora associada a esse número de telefone.

Neste post, vamos aprender a lidar com números válidos e inválidos usando a Biblioteca PHP da Twilio. Se você precisa procurar números de clientes no app de produção do Laravel ou apenas ter um script básico que deseja executar para verificar números de um banco de dados local, esse código ajuda você a começar a validar os números de telefone.

Primeiros passos

Precisaremos de alguns itens antes de começarmos a criar:

  • PHP — estou usando a versão 5.5 para este post
  • Composer — ele vai nos ajudar a gerenciar nossas dependências
  • Biblioteca PHP da Twilio — Abra o terminal, navegue até a pasta em que deseja que o código fique ativo e digite o seguinte comando para instalá-la com o Composer:
composer require twilio/sdk:4.*

Conferindo as credenciais da Twilio

Procurar números de telefone válidos

Confira a página Lookup (Pesquisa) caso queira testar a API e ver que tipo de dados uma solicitação retorna. Tente inserir um número de telefone e dê uma olhada no objeto de resposta JSON.

Resultado da chamada da API Lookup

Aqui está um exemplo rápido de código para fazer uma pesquisa básica de números de telefone. Crie um arquivo chamado lookup.php e adicione esse código a ele:

<?php
// Get the PHP helper library from twilio.com/docs/php/install
// Loads the library
require "vendor/autoload.php";

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "{{account_sid}}";
$token = "{{ auth_token }}";
$client = new Lookups_Services_Twilio($sid, $token);

// Make a call to the Lookup API
$number = $client->phone_numbers->get("15108675309");

// Print the nationally formatted phone number
echo $number->national_format . "\r\n"; // => (510) 867-5309

Abra o terminal, navegue até o diretório que contém o arquivo lookup.php e execute este comando:

php lookup.php

Essa funcionalidade básica é gratuita, mas você pode obter mais informações por meio de uma pesquisa de operadora. As pesquisas de operadora são comumente usadas para determinar se um número pode receber mensagens SMS/MMS. Isso custa US$ 0,005, mas uma conta de avaliação gratuita tem US$ 20 em crédito para teste.

As pesquisas de operadora exigem um parâmetro extra.

<?php
// Get the PHP helper library from twilio.com/docs/php/install
// Loads the library
require "vendor/autoload.php";

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "{{account_sid}}";
$token = "{{ auth_token }}";
$client = new Lookups_Services_Twilio($sid, $token);

// Perform a carrier Lookup using a US country code
$number = $client->phone_numbers->get("(510) 867-5309", array("CountryCode" => "US", "Type" => "carrier"));

// Log the carrier type and name
echo $number->carrier->type . "\r\n"; // => mobile
echo $number->carrier->name; // => Sprint Spectrum, L.P.

Procurar números de telefone inválidos

Nesta "agenda online", os números de telefone atuam como uma ID única. Ao tentar procurar um número de telefone que não existe, você receberá uma resposta 404.

Vá para a página inicial Lookup (Pesquisa) novamente para ver isso em ação ao verificar um número que não existe:

Resultado de um número inválido

Vamos criar uma função que usa um número de telefone e retorna verdadeiro quando o número existe e falso quando não existe. Vamos tentar isso realizando uma pesquisa de operadora e verificando se uma exceção foi gerada com um código de erro 404.

Substitua o código no arquivo lookup.php pelo seguinte:

<?php // Get the PHP helper library from twilio.com/docs/php/install // Loads the library require "vendor/autoload.php"; // A function that takes a phone number and // returns true if the number is valid and false otherwise. function isValidNumber($number) { // Your Account Sid and Auth Token from twilio.com/user/account $sid = "{{account_sid}}"; $token = "{{ auth_token }}"; $client = new Lookups_Services_Twilio($sid, $token); // Try performing a carrier lookup and return true if successful. try { $number = $client->phone_numbers->get($number, array("CountryCode" => "US", "Type" => "carrier"));
        $number->carrier->type; // Should throw an exception if the number doesn't exist.
        return true;
    } catch (Exception $e) {
        // If a 404 exception was encountered return false.
        if($e->getStatus() == 404) {
            return false;
        } else {
            throw $e;
        }
    }
}

if (isValidNumber("19999999999")) {
    echo "Phone number is valid";
} else {
    echo "Phone number is not valid";
}

Tente executar esse código usando o seguinte comando no terminal e não se esqueça de inserir o Account SID (SID da conta) e o Auth Token (token de autenticação):

php lookup.php

Agora, você tem uma função que pode ser usada em qualquer lugar do código para verificação de números de telefone.

De olho no futuro

Agora, você sabe usar a agenda telefônica da API REST Twilio Lookup. Você também pode consultar outros recursos para saber como usar a Lookup (Pesquisa) em outros idiomas:

Este artigo foi traduzido do original "How to Validate Phone Numbers in PHP with the Twilio Lookup API". Enquanto melhoramos nossos processos de tradução, adoraríamos receber seus comentários em help@twilio.com - contribuições valiosas podem render brindes da Twilio.