O termo descreve de onde a resposta vem, não o que você recebe. Uma rede móvel mantém um registro dos próprios assinantes. Um lookup é uma pergunta feita a esse registro, por meio de um serviço com acesso a ele. O que o registro responde varia de rede para rede.
O que é o HLR em si?
O registro de assinantes dentro de uma rede móvel.
GSM é o padrão móvel sobre o qual a maioria das redes foi construída antes dos núcleos baseados em pacotes. Nele, o Home Location Register guarda o registro de cada assinante pertencente àquela rede, incluindo qual elemento da rede o está atendendo. A arquitetura posterior transferiu a mesma função para o Home Subscriber Server. Os dois nomes descrevem o mesmo papel em gerações diferentes de rede.
Nenhum dos dois é um diretório público. Não existe um registro global único para consultar. Nenhum lookup retorna nome ou endereço de um assinante. O que um lookup pode obter são informações de roteamento e status que a rede atendente está disposta a fornecer.
O que um lookup pode realmente dizer a você?
Qual rede detém o número agora, que tipo de linha é e se está ativo.
| O que você consulta | O que volta | O que não é estabelecido |
|---|---|---|
| Lookup base | País, rede atendente e emissora, tipo de linha, se o número foi portado | Se alguém está usando |
presence | Se o número está registrado e pode receber tráfego agora | Quem está com o aparelho |
roaming | Se está em roaming e em qual rede | Onde a pessoa está |
sim_swap | Quando o SIM foi alterado pela última vez | Por que foi alterado |
porting | Quando o número mudou de rede pela última vez e seu registro | Qualquer informação sobre o assinante |
classification | O serviço alocado exato da faixa, onde o lookup base fornece categorias amplas | Por que a faixa foi alocada dessa forma |
score | Uma pontuação de credibilidade de 0 a 100 | Como foi composta, algo que as outras propriedades não informam |
Um lookup base já distingue a rede que atende um número da rede que o emitiu. É assim que um número portado se torna visível: as duas diferem, e um flag ported indica isso.
Uma verificação ao vivo prova alguma coisa?
Prova que a rede respondeu, e nada além disso.
Um resultado de presença reflete uma consulta em tempo real à rede onde o número está registrado. Portanto, reachable: true significa que a rede reportou o número como capaz de receber tráfego naquele momento. Não identifica o titular. Não é consentimento. O FAQ da libphonenumber do Google diz o mesmo sobre estabelecer quem detém um número:
Do not rely on libphonenumber to determine whether numbers are currently assigned to a specific user and reachable.
Um número alcançável também não significa que uma mensagem vai chegar. A entrega depende do remetente, da rota e da filtragem do destino, nada disso é consultado por um lookup.
Como leio uma resposta que ninguém conseguiu dar?
Pelo status da propriedade, que distingue três resultados.
Cada propriedade que você solicita reporta seu próprio status:
ok: a propriedade foi respondida e seu valor está presente.unavailable: nenhuma resposta chegou, então o bloco énull.inconclusive: uma resposta chegou, mas não resolve a propriedade.
Somente ok traz um valor, e somente ok é cobrado. Isso deixa a distinção que importa em um fluxo de cadastro. Um bloco de presença com status: unavailable significa que ninguém conseguiu responder. Um com status: ok e reachable: false significa que a rede disse que o número não pode receber tráfego. Tratar o primeiro como o segundo transforma uma pergunta sem resposta em um cliente rejeitado.
Como faço um lookup no Bird?
Envie o número, indicando as propriedades que você quer.
POST /v1/lookup/phone-number recebe um phone_number e um array opcional type contendo qualquer combinação de classification, porting, presence, roaming, sim_swap e score. Omita type para obter apenas o lookup base. Cada propriedade adicionada é cobrada separadamente e somente quando entregue. Solicite presence quando precisar de uma verificação ao vivo, não por padrão.
Faça branch pelo ok. Trate qualquer outro status como não respondido. O vocabulário de status é um enum aberto, então um valor não reconhecido é um status futuro, não um erro. Fazer branch dessa forma permanece correto conforme o vocabulário cresce. O guia de lookup cobre o fluxo. Quais verificações de validação de número de telefone cobre quais perguntas cada tipo de verificação pode responder.
Em resumo
HLR é um nome da arquitetura de rede, não um banco de dados público.
O Home Location Register é o registro de assinantes nas redes móveis mais antigas, com o Home Subscriber Server desempenhando o mesmo papel nas mais recentes.
Um resultado de alcançável não é uma pessoa.
A rede responder que um número pode receber tráfego não diz nada sobre quem está com o aparelho ou se essa pessoa consentiu em receber suas mensagens.
Cada resposta traz seu próprio status.
Bird reporta cada propriedade solicitada como ok, unavailable ou inconclusive, e somente ok traz um valor.
Unavailable e unreachable são respostas diferentes.
Uma significa que ninguém conseguiu responder. A outra significa que a rede informou que o número não pode receber tráfego agora.