Cercare un numero di telefono
Una sola chiamata risponde a cos'è un numero. Tutto qui richiede una chiave API con lo scope lookup.
Eseguire una ricerca base
Invia il numero e nient'altro. La ricerca base viene addebitata una sola volta e risponde sempre con il paese, la rete servente, la rete emittente e un tipo di linea generico.
const answer = await bird.lookup.phoneNumber({
phone_number: "+31612345678",
type: ["classification", "score"],
});
console.log(answer.country_code, answer.line_type);
// Only a block whose status is ok carries a value, and only that one is billed.
if (answer.score?.status === "ok") console.log(answer.score.value);answer = client.lookup.phone_number(
phone_number="+31612345678", type=["classification", "score"]
)
print(answer.country_code, answer.line_type)
# Only a block whose status is ok carries a value, and only that one is billed.
if answer.score is not None and answer.score.status == "ok":
print(answer.score.value)answer, err := client.Lookup.PhoneNumber(context.Background(), bird.LookupPhoneNumberParams{
PhoneNumber: "+31612345678",
Type: []bird.LookupProperty{"classification", "score"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(*answer.CountryCode, *answer.LineType)
// Only a block whose status is ok carries a value, and only that one is billed.
if answer.Score != nil && *answer.Score.Status == "ok" {
fmt.Println(*answer.Score.Value)
}$answer = $bird->lookup->phoneNumber(
(new PhoneNumberLookupRequest())
->setPhoneNumber('+31612345678')
->setType(['classification', 'score']),
);
echo $answer->getCountryCode(), ' ', $answer->getLineType();
// Only a block whose status is ok carries a value, and only that one is billed.
if ($answer->getScore()?->getStatus() === 'ok') {
echo $answer->getScore()->getValue();
}bird lookup phone-number \
--phone-number +31612345678 \
--type classification \
--type presencecurl -X POST "https://us1.platform.bird.com/v1/lookup/phone-number" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+31612345678",
"type": [
"classification",
"presence"
]
}'Come scrivere il numero
Invia il prefisso internazionale seguito dal numero nazionale. Il + iniziale è facoltativo e 00 funziona al suo posto, quindi +31612345678, 31612345678 e 0031612345678 sono tutti lo stesso numero.
Un numero scritto per la composizione nazionale, senza prefisso internazionale, viene rifiutato anziché interpretato. 0612345678 restituisce E22000, perché anteporre un prefisso internazionale identificherebbe un numero reale altrove e ti verrebbe addebitata la ricerca.
Cosa risponde la ricerca base
country_code è il paese del numero, assente quando il numero non appartiene a un singolo paese, come nel caso di una numerazione non geografica.
network_info è la rete che serve il numero oggi, e original_network_info è la rete che ha assegnato la numerazione. I due valori differiscono quando il numero è stato portato, e in quel caso flags contiene ported.
line_type indica il tipo di linea del numero: mobile, fixed_line, voip, toll_free, premium_rate, satellite, pager, payphone, m2m, service, other o unknown. unknown significa che la piattaforma dell'operatore non ha una classificazione per la numerazione; other significa che ne ha una senza equivalente qui. Per il servizio allocato con maggiore precisione, richiedi la proprietà classification. Risponde da una fonte diversa con un vocabolario più ampio, ed è riportata separatamente così puoi sempre distinguere le due informazioni.
Aggiungere proprietà
Indica le proprietà desiderate in type. Ciascuna viene fatturata separatamente e solo quando viene consegnata.
| Proprietà | Cosa risponde |
|---|---|
classification | Il servizio allocato preciso della numerazione: premium rate, satellite, M2M, telefono pubblico. |
porting | Quando il numero ha cambiato rete l'ultima volta, e ogni spostamento registrato. |
presence | Se il numero è attualmente attivo sulla rete. |
roaming | Se è in roaming, e su quale rete. |
sim_swap | Quando la SIM è stata cambiata l'ultima volta. |
score | Un punteggio di credibilità da 0 a 100. |
classification, porting e score leggono dati archiviati e rispondono rapidamente. presence, roaming e sim_swap interrogano la rete in tempo reale, quindi sono più lente e la loro copertura varia per operatore. Per queste ultime, aspettati unavailable o inconclusive più spesso che per quelle archiviate.
Due proprietà rispondono a domande che la ricerca base già tocca, con una risoluzione maggiore. porting fornisce la data e lo storico completo, mentre il flag ported della ricerca base indica solo se uno spostamento è mai avvenuto. classification risolve line_type nel servizio allocato esatto.
Leggi lo stato prima del valore
Ogni blocco proprietà contiene uno status, e solo ok contiene un valore.
{
"phone_number": "+441904123456",
"country_code": "GB",
"line_type": "service",
"classification": {
"status": "ok",
"value": "premium_rate"
},
"score": {
"status": "unavailable"
}
}In quella risposta ti è stata addebitata la ricerca base e classification. Non ti è stato addebitato score.
Leggi status per primo e tratta qualsiasi valore diverso da ok come "not answered". È un vocabolario aperto, quindi un valore che non riconosci è uno stato futuro, non un errore.
Due blocchi riportano un intervallo anziché un valore esatto quando la rete non lo rilascia. sim_swap restituisce min_days e max_days al posto di last_swapped_at quando è noto solo un intervallo di recenza. porting imposta last_ported_at_is_approximate quando un registro riporta il periodo di uno spostamento ma non il giorno.
Un campo si legge come un risultato negativo ma è in realtà un risultato positivo: porting.ported impostato a false significa che il registro è stato consultato e non contiene spostamenti per questo numero, non che non è stato possibile verificare. Questa distinzione è il ruolo di status.
Riprovare senza pagare due volte
Una ricerca viene fatturata, quindi una richiesta ripetuta non deve acquistare una seconda risposta. Invia un Idempotency-Key e la stessa richiesta riprodurrà la risposta archiviata anziché eseguire una nuova ricerca. Vedi Idempotency.
La forma GET di questa operazione, che inserisce il numero nell'URL, non può includere una chiave di idempotenza. Usa la forma POST per tutto ciò che è automatizzato.
Errori
| Codice | Cosa è successo |
|---|---|
E22000 | Il numero non è un numero di telefono valido in formato internazionale. Non è stato addebitato nulla. |
E22001 | Il wallet dell'organizzazione non può coprire la ricerca. Ricaricalo e riprova. Non è stato addebitato nulla. |
E22002 | La ricerca è temporaneamente non disponibile. Riprova con backoff. Non è stato addebitato nulla. |
Una proprietà che fallisce non è un errore. Viene restituita come stato nel suo blocco, con la ricerca base servita insieme.
Prossimi passi
- Cerca un indirizzo email è l'altra metà di Lookup.
- Riferimento API di Lookup documenta ogni campo e ogni blocco proprietà.
- Limiti di frequenza tratta il bucket
lookupda cui attingono queste chiamate. - Verifica numero di telefono: controlla un numero prima di inviare è un video che esegue una ricerca e aggiunge i controlli sulla rete in tempo reale.
Risorse correlate
Continua con la documentazione, le guide e gli esempi per questo argomento.