Sign inGet Started

किसी फ़ोन नंबर की जानकारी देखें

एक ही कॉल से पता चलता है कि कोई नंबर किस तरह का है। यहाँ की हर चीज़ के लिए lookup स्कोप वाली API कुंजी चाहिए।

बेस लुकअप चलाएँ

सिर्फ़ नंबर भेजें, और कुछ नहीं। बेस लुकअप का शुल्क हमेशा एक बार लगता है, और यह हमेशा देश, सेवा देने वाला नेटवर्क, नंबर जारी करने वाला नेटवर्क और लाइन का मोटा-मोटा प्रकार बताता है।

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);

नंबर कैसे लिखें

पहले देश का कॉलिंग कोड भेजें, फिर राष्ट्रीय नंबर। शुरुआती + वैकल्पिक है और उसकी जगह 00 भी चलता है, इसलिए +31612345678, 31612345678 और 0031612345678 तीनों एक ही नंबर हैं।

किसी एक देश के भीतर डायल करने के लिए लिखा गया नंबर, जिसमें देश का कोड न हो, अनुमान लगाने के बजाय अस्वीकार कर दिया जाता है। 0612345678 E22000 लौटाता है, क्योंकि देश का कोड जोड़ने से वह कहीं और का कोई असली नंबर बन जाता और उसे देखने का शुल्क आपसे लिया जाता।

बेस लुकअप क्या बताता है

country_code नंबर का देश है। जब नंबर किसी एक देश का नहीं होता, जैसे गैर-भौगोलिक रेंज का नंबर, तब यह मौजूद नहीं होता।

network_info वह नेटवर्क है जो अभी इस नंबर को सेवा दे रहा है, और original_network_info वह नेटवर्क है जिसने इसकी रेंज जारी की थी। नंबर पोर्ट होने पर ये दोनों अलग होते हैं, और उस स्थिति में flags में ported होता है।

line_type बताता है कि नंबर किस प्रकार की लाइन है: mobile, fixed_line, voip, toll_free, premium_rate, satellite, pager, payphone, m2m, service, other या unknown। unknown का अर्थ है कि कैरियर प्लेटफ़ॉर्म के पास इस रेंज का कोई वर्गीकरण नहीं है; other का अर्थ है कि उसके पास एक वर्गीकरण है, लेकिन यहाँ उसका कोई समकक्ष नहीं है। आवंटित सेवा को अधिक सटीकता से जानने के लिए classification प्रॉपर्टी का अनुरोध करें। यह एक अलग स्रोत से, अधिक व्यापक शब्दावली के साथ जवाब देती है और अलग से रिपोर्ट की जाती है, ताकि आप दोनों में हमेशा अंतर कर सकें।

प्रॉपर्टी जोड़ें

आपको जो प्रॉपर्टी चाहिए, उनके नाम type में दें। हर प्रॉपर्टी का बिल अलग से बनता है, और केवल तभी जब वह डिलीवर हो।

प्रॉपर्टीयह क्या बताती है
classificationरेंज की सटीक आवंटित सेवा: प्रीमियम रेट, सैटेलाइट, M2M, पेफ़ोन।
portingनंबर ने आख़िरी बार नेटवर्क कब बदला, और रिकॉर्ड में दर्ज हर बदलाव।
presenceक्या नंबर इस समय नेटवर्क पर सक्रिय है।
roamingक्या नंबर रोमिंग में है, और किस नेटवर्क पर।
sim_swapउसका SIM आखिरी बार कब बदला गया।
score0 से 100 तक का विश्वसनीयता स्कोर।

classification, porting और score संग्रहीत डेटा पढ़ते हैं और जल्दी जवाब देते हैं। presence, roaming और sim_swap लाइव नेटवर्क तक पहुँचते हैं, इसलिए वे धीमे होते हैं और उनकी कवरेज ऑपरेटर के अनुसार बदलती है। संग्रहीत प्रॉपर्टी की तुलना में इनके लिए unavailable या inconclusive अधिक बार मिलने की अपेक्षा रखें।

दो प्रॉपर्टी उन सवालों का अधिक विस्तार से जवाब देती हैं जिन्हें बेस लुकअप पहले से छूता है। बेस लुकअप का ported फ़्लैग केवल यह बताता है कि नंबर कभी पोर्ट हुआ या नहीं, जबकि porting आपको तारीख और पूरा इतिहास देता है। classification, line_type को सटीक आवंटित सेवा तक स्पष्ट करता है।

मान से पहले स्थिति पढ़ें

हर प्रॉपर्टी ब्लॉक में एक status होता है, और केवल ok में ही मान होता है।

कोड उदाहरण
{
  "phone_number": "+441904123456",
  "country_code": "GB",
  "line_type": "service",
  "classification": {
    "status": "ok",
    "value": "premium_rate"
  },
  "score": {
    "status": "unavailable"
  }
}

इस जवाब में आपसे बेस लुकअप और classification के लिए शुल्क लिया गया। score के लिए आपसे शुल्क नहीं लिया गया।

पहले status पढ़ें, और ok के अलावा किसी भी मान को "not answered" मानें। यह एक खुली शब्दावली है, इसलिए जिस मान को आप नहीं पहचानते, वह त्रुटि नहीं बल्कि भविष्य की कोई स्थिति है।

जब नेटवर्क सटीक आँकड़ा जारी नहीं करता, तो दो ब्लॉक उसकी जगह एक सीमा बताते हैं। जब केवल हालिया समय की एक सीमा पता हो, तो sim_swap, last_swapped_at की जगह min_days और max_days लौटाता है। जब किसी रजिस्ट्री में पोर्टिंग की अवधि दर्ज हो लेकिन दिन दर्ज न हो, तो porting, last_ported_at_is_approximate सेट करता है।

एक फ़ील्ड नकारात्मक लगता है, पर असल में यह एक सकारात्मक निष्कर्ष है: porting.ported का false होने का अर्थ है कि रजिस्ट्री से जाँच की गई और उसमें इस नंबर का कोई स्थानांतरण दर्ज नहीं है। इसका अर्थ यह नहीं कि कुछ भी जाँचा नहीं जा सका। यही अंतर बताने के लिए status मौजूद है।

दो बार भुगतान किए बिना फिर से प्रयास करें

हर लुकअप का शुल्क लगता है, इसलिए फिर से भेजे गए अनुरोध से दूसरा उत्तर नहीं खरीदा जाना चाहिए। Idempotency-Key भेजें, तो उसी अनुरोध को दोहराने पर नया लुकअप चलाने के बजाय संग्रहीत उत्तर लौटाया जाता है। Idempotency देखें।

इस ऑपरेशन का GET रूप नंबर को URL में रखता है, इसलिए उसमें idempotency कुंजी नहीं भेजी जा सकती। किसी भी स्वचालित काम के लिए POST रूप का उपयोग करें।

त्रुटियाँ

कोडक्या हुआ
E22000यह नंबर अंतरराष्ट्रीय प्रारूप में मान्य फ़ोन नंबर नहीं है। कोई शुल्क नहीं लिया गया।
E22001संगठन के वॉलेट में लुकअप के लिए पर्याप्त राशि नहीं है। वॉलेट में राशि जोड़ें और फिर से प्रयास करें। कोई शुल्क नहीं लिया गया।
E22002लुकअप अस्थायी रूप से उपलब्ध नहीं है। बैकऑफ़ के साथ फिर से प्रयास करें। कोई शुल्क नहीं लिया गया।

किसी प्रॉपर्टी का विफल होना त्रुटि नहीं है। वह अपने ब्लॉक पर एक स्टेटस के रूप में लौटती है, और उसके साथ बेस लुकअप भी दिया जाता है।

अगले कदम

इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।