Drie verschillende vragen zitten verborgen in het woord validatie. Eén vraagt of het nummer de vorm heeft van een echt nummer. Eén vraagt of een netwerk er überhaupt voor antwoordt. Eén vraagt of de persoon met wie je praat het nummer bezit. Elk vergt een andere controle. Elk laat iets onbekend.
Wat kan een formaatcontrole je vertellen?
Dat het nummer tot een bereik behoort dat een operator mag toewijzen.
Googles libphonenumber beschouwt een bereik als geldig wanneer operators vrij zijn om nummers aan abonnees toe te wijzen. De FAQ:
A valid number range is one from which numbers can be freely assigned by carriers to users.
Geldigheid zegt niets over of een specifiek nummer is uitgegeven of antwoordt. Dezelfde pagina:
Do not rely on libphonenumber to determine whether numbers are currently assigned to a specific user and reachable.
Een formaatcontrole beantwoordt dus een vraag over het nummerplan. Het zegt niets over of het bereik aan iemand is toegewezen, en niets over of er een telefoon overgaat.
Bellen is ook geen vervangende test. De FAQ geeft twee redenen waarom een oproep kan verbinden met een nummer dat niet geldig is. Sommige landen negeren extra cijfers aan het einde, waardoor 1800 MICROSOFT een korter nummer bereikt. Tijdens een hernummering houden sommige operators oude nummers werkend nadat ze in het algemeen niet meer werken.
Wat voegt een netwerkopzoeking toe?
De delen van het antwoord die alleen een netwerk kent.
Een opzoeking bevraagt operator- en nummerinformatiebronnen over een specifiek nummer in plaats van over het bereik. Dat verschuift meerdere vragen van onbekend naar beantwoord:
| Controle | Wat het oplevert | Wat het nog openlaat |
|---|---|---|
| Formaat | Het nummer is parseerbaar en valt in een toewijsbaar bereik | Of het bereik aan iemand is toegewezen |
| Lijntype | Of het nummer mobiel, vast, VoIP, gratis of machine-to-machine is | Welke dienst op fijnere precisie aan het bereik is toegewezen |
| Bedienend netwerk | Het netwerk dat nu voor het nummer antwoordt, en het netwerk dat het heeft uitgegeven | Of een toestel is ingeschakeld |
| Portingstatus | Wanneer het nummer voor het laatst van netwerk is gewisseld | Niets over de abonnee |
| Aanwezigheid | Of het nummer geregistreerd is en op dit moment verkeer kan ontvangen | Wie het toestel vasthoudt |
| Bezit | Niets. Een opzoeking bevraagt nooit de persoon | Of jouw gebruiker het nummer beheert |
De laatste rij is de rij die ertoe doet bij een aanmeldflow. Geen enkele opzoeking stelt bezit vast, omdat een opzoeking nooit de persoon betrekt.
Wat kan alleen een verificatiechallenge bewijzen?
Dat degene in jouw flow verkeer op dat nummer kan ontvangen.
De libphonenumber-FAQ beschouwt een challenge als het enige werkbare antwoord, omdat nummeringspraktijken te veel verschillen tussen landen om het anders op te lossen:
This is not technically feasible without such a verification step given the complicated international world we live in, with varying standardization practices in different regions.
Een code versturen en terugkrijgen is daarom een ander soort controle dan de twee hierboven. Het kost een bericht en een ronde trip. Het is ook de enige controle die het nummer koppelt aan de persoon tegenover je. Wat betekent OTP behandelt de code zelf, en de Verify-gids behandelt het uitvoeren van de challenge.
Hoe lees ik een controle die niemand kon beantwoorden?
Als onbekend, wat niet hetzelfde is als nee.
Een nummer waarvan de aanwezigheid niet kon worden vastgesteld is geen onbereikbaar nummer. De twee gelijk behandelen blokkeert klanten wier netwerken simpelweg niet hebben geantwoord.
Bird houdt ze apart in het antwoord. Elke eigenschap die je opvraagt rapporteert een eigen status:
ok: de eigenschap is beantwoord en de waarde is aanwezig.unavailable: er is geen antwoord binnengekomen, dus het blok isnull.inconclusive: er is een antwoord binnengekomen dat de eigenschap niet oplost.
Alleen ok bevat een waarde. Een aanwezigheidsblok met status: ok en reachable: false is een echt negatief resultaat, omdat het netwerk heeft geantwoord en het nummer als onbereikbaar heeft gemeld.
Branch dus eerst op ok. Behandel al het andere als niet beantwoord. Het statuswoordenschat is een open enum, dus een onherkende waarde is een toekomstige status en geen fout. Branchen op ok blijft daardoor correct naarmate het vocabulaire groeit.
Hoe kies ik een aanbieder voor telefoonnummeropzoekingen?
Kies de aanbieder wiens velden, marktdekking en factureringsregels passen bij de beslissing die je moet nemen.
| Beslispunt | Bird Lookup | Vragen om aan een andere aanbieder te stellen |
|---|---|---|
| Syntax en geldigheid | Vereist een internationaal nummer en rapporteert of het past in het nummerplan. | Normaliseert het de invoer en weigert het misvormde nummers zonder te raden? |
| Lijntype en operator | Retourneert lijntype, bedienend netwerk en uitgevend netwerk in het basisresultaat. | Welke operator- en lijntypevelden zijn opgenomen, en zijn ze actueel of toegewezen? |
| Portering | Rapporteert de portingstatus in het basisresultaat en kan aanvullende porteringsgegevens retourneren. | Toont het de huidige operator, oorspronkelijke operator of wisselgeschiedenis? |
| Versheid | Aanwezigheid en roaming bevragen actuele netwerkcondities; andere velden beschrijven nummering en toewijzing. | Welke velden zijn live, gecacht of voorzien van tijdstempel? |
| Onbekende resultaten | Elke gevraagde eigenschap heeft de status ok, unavailable of inconclusive. | Kun je een onbeantwoorde eigenschap onderscheiden van een negatief resultaat? |
| Marktdekking | Een eigenschap kan niet beschikbaar zijn voor een nummer of operator, ook als de opzoeking slaagt. | Welke landen en operators ondersteunen elke eigenschap? |
| Facturering | De basisopzoeking wordt één keer gefactureerd. Optionele eigenschappen worden alleen gefactureerd wanneer ze geleverd zijn, en mislukte eigenschappen worden niet gefactureerd. | Wat kost een onbeantwoorde eigenschap, en welke add-ons veranderen de factuur? |
De gerangschikte alternatieven documenteren verschillende afwegingen. Twilio Lookup biedt basisformattering en validatie. Optionele pakketten dekken lijntype, lijnstatus, SIM-swap, identiteit, bellernaam, opnieuw toegewezen nummers en risicosignalen. Dekking en goedkeuringsvoorwaarden variëren per pakket en markt.
De telefoonvalidatiedocumentatie van Abstract API beschrijft geldigheid, land, operator en lijntypevelden. De validatie- en operatoropzoekingspagina van Veriphone beschrijft geldigheid, land, operator, lijntype en huidige-operatorresultaten. Beide publiceren aparte dekkings- en creditregels. De gedocumenteerde dekking, het gedrag bij onbekende resultaten en de facturering van elke aanbieder bepalen of deze past bij een aanmeld- of routeringsbeslissing.
Hoe zoek ik er een op via Bird?
Stuur het nummer naar het opzoekendpoint. Lees de blokken die je hebt aangevraagd.
POST /v1/lookup/phone-number accepteert een phone_number en een optionele type-array. Elke opzoeking retourneert het bedienende en uitgevende netwerk, de portingstatus, het land en het lijntype. De type-array voegt classification, porting, presence, roaming, sim_swap of score toe, elk apart gefactureerd en alleen wanneer het geleverd is. De opzoeking neemt geen contact op met het nummer.
Een Idempotency-Key hergebruiken retourneert het opgeslagen resultaat in plaats van een tweede opzoeking uit te voeren en te factureren. De opzoekgids behandelt de flow en de API-referentie behandelt de velden.
Kort gezegd
Geldig betekent dat het bereik bestaat, niet dat het nummer in gebruik is.
Googles telefoonnummerbibliotheek definieert een geldig bereik als een bereik waaruit operators vrij nummers aan gebruikers mogen toewijzen.
Een verbonden gesprek bewijst niet dat een nummer geldig is.
Sommige landen negeren extra cijfers aan het einde, en sommige operators houden oude nummers werkend tijdens een hernummering, lang nadat ze elders niet meer werken.
Alleen een challenge bewijst bezit.
Een code versturen en terugkrijgen is de enige controle die vaststelt wie het nummer bezit. Daarom bestaat verificatie als aparte stap.
Een onbeantwoorde controle is geen negatief antwoord.
Bird rapporteert elke gevraagde eigenschap met een eigen status, zodat een eigenschap die niemand kon beantwoorden te onderscheiden blijft van een eigenschap die met nee is beantwoord.