एक POST, एक जवाब, कोई रिसोर्स बनाने या पोल करने की ज़रूरत नहीं। बेस lookup नंबर का देश, आज उसे सर्व करने वाला नेटवर्क, उसकी रेंज जारी करने वाला नेटवर्क, दोनों के बीच मूव हुआ है या नहीं यह बताने वाला फ़्लैग, और लाइन का प्रकार लौटाता है। पाँच और प्रॉपर्टीज़ उनका नाम देकर आपकी हैं।
const answer = await bird.lookup.phoneNumber({
phone_number: "+31612345678",
type: ["classification", "porting"],
});
console.log(answer.country_code, answer.line_type);
// → "NL" "mobile"
console.log(answer.network_info?.carrier_name);
// → "KPN"
console.log(answer.original_network_info?.carrier_name);
// → "Vodafone"
console.log(answer.flags);
// → ["ported"]
if (answer.porting?.status === "ok") {
console.log(answer.porting.ported, answer.porting.last_ported_at);
// → true "2021-04-18T00:00:00Z"
}
दो नेटवर्क, और उनके बीच का अंतर।
यही अंतर रिस्पॉन्स में पोर्टिंग जैसा दिखता है।
Phone number lookup, Bird Lookup API के दो ऑपरेशनों में से एक है। इंटरनेशनल फ़ॉर्मेट में नंबर भेजें, शुरुआत में प्लस के साथ या बिना, और आपको country_code, आज नंबर सर्व करने वाले कैरियर के लिए एक network_info ब्लॉक, और उसकी रेंज आवंटित करने वाले कैरियर के लिए एक original_network_info ब्लॉक मिलता है। जब ये दोनों अलग-अलग हों तो नंबर पोर्ट हो चुका है, और flags यही बताता है। केवल राष्ट्रीय नंबर अनुमान लगाने के बजाय अस्वीकार कर दिए जाते हैं, ताकि ग़लत इनपुट चुपचाप ग़लत देश का जवाब देने के बजाय स्पष्ट रूप से विफल हो।
क्या लौटता है, और कब।
पहले तीन हर lookup के साथ आते हैं। बाकी तब आते हैं जब आप उन्हें type में नाम देते हैं।
- 01
देश और दोनों कैरियर।
country_code रेंज का ISO देश कोड है, और नॉन-जियोग्राफ़िक नंबरों के लिए अनुमान लगाने के बजाय अनुपस्थित रहता है। network_info और original_network_info दोनों में कैरियर का नाम और मोबाइल कंट्री व नेटवर्क कोड होते हैं, जो तब काम आते हैं जब आप नाम के बजाय MCC और MNC पर रूटिंग करते हैं।
- 02
लाइन टाइप, एक बंद सूची से।
mobile, fixed_line, voip, toll_free, premium_rate, satellite, pager, payphone, m2m, service, other, या unknown। सूची बंद है, इसलिए इस पर switch संपूर्ण बना रहता है, और यह वह फ़ील्ड है जिसे SMS संभव है या नहीं यह तय करने से पहले जाँचना चाहिए।
- 03
पोर्टेड फ़्लैग, बिना अतिरिक्त शुल्क के।
flags में ported तब आता है जब नंबर ने किसी भी समय नेटवर्क बदला हो। यह बेस जवाब के साथ आता है, इसलिए नंबर कभी पोर्ट हुआ है या नहीं यह सस्ता सवाल किसी प्रॉपर्टी की ज़रूरत ही नहीं रखता।
- 04
classification, लाइन पर एक दूसरी राय।
एक अलग स्रोत से बारीक रीडिंग, जिसमें line_type में न मिलने वाली वैल्यूज़ हैं: fixed_line_or_mobile, shared_cost, national_rate, personal_number, isp, voice_mail, short_codes, और अन्य। यह रिस्पॉन्स में line_type को रिप्लेस करने के बजाय उसके बगल में बैठती है, ताकि जब कोई नंबर असामान्य लगे तो आप दोनों की तुलना कर सकें।
- 05
porting, तारीखों और इतिहास के साथ।
ported एक boolean के रूप में, last_ported_at एक timestamp के रूप में, last_ported_at_is_approximate जब रजिस्ट्री को केवल महीना पता हो, और history पोर्टिंग इवेंट्स की सूची पुराने से नए क्रम में। हर इवेंट में एक रजिस्ट्री-विशिष्ट ऐक्शन कोड होता है, जिसे दिखाना उपयोगी है लेकिन उस पर ब्रांचिंग नहीं करनी चाहिए।
- 06
presence और roaming, लाइव नेटवर्क से।
presence नेटवर्क से क्वेरी करके reachable रिपोर्ट करता है, जो यह पूछने के सबसे क़रीब है कि लाइन चालू है या नहीं। roaming, is_roaming के साथ विज़िटेड नेटवर्क का MCC और MNC रिपोर्ट करता है, ताकि विदेशी नेटवर्क पर बैठे नंबर से साइनअप को अनुमान लगाने के बजाय सीधे देखा जा सके।
- 07
score, 0 से 100 तक एक संख्या।
एक समग्र क्रेडिबिलिटी स्कोर। यह अन्य प्रॉपर्टीज़ से निकाला नहीं जा सकता, इसे माँगने का यही मतलब है: एक पूर्णांक जिस पर आप साइनअप फ़्लो में थ्रेशोल्ड लगा सकते हैं, बिना ख़ुद कैरियर नामों और लाइन टाइप पर नियम लिखे।
हर प्रॉपर्टी बताती है कि उसने जवाब दिया या नहीं।
हर ब्लॉक अपना status रखता है: ok, unavailable, या inconclusive। केवल ok में वैल्यू होती है, इसलिए आपको रिस्पॉन्स की जाँच करके यह पता लगाने की ज़रूरत नहीं कि वह खाली है, और बिना वैल्यू वाली फ़ील्ड null सेट करने के बजाय हटा दी जाती है। बिलिंग भी इसी तर्ज़ पर चलती है। बेस lookup एक बार बिल होता है, प्रॉपर्टी केवल तब बिल होती है जब उसका status ok हो, और विफल lookup का कोई बिल नहीं आता।
const answer = await bird.lookup.phoneNumber({
phone_number: "+31612345678",
type: ["presence", "roaming", "score"],
});
// Only a block whose status is ok carries a value.
if (answer.presence?.status === "ok") {
console.log(answer.presence.reachable);
}
if (answer.roaming?.status === "ok") {
console.log(answer.roaming.is_roaming, answer.roaming.mcc, answer.roaming.mnc);
}
// unavailable and inconclusive both mean no value, and no charge.
if (answer.score?.status !== "ok") {
console.log("no credibility score on this answer");
}
प्रति अनुरोध एक नंबर।
कोई बैच फ़ॉर्म नहीं है, जानबूझकर: lookup कैरियर डेटा पर लाइव क्वेरी है, और बैच यह छिपा देता कि हज़ार में से किस पंक्ति का जवाब मिला और किसका नहीं। अनुरोध दर सीमा प्रति ऐक्टिंग क्रेडेंशियल 10 अनुरोध प्रति मिनट से शुरू होती है और Lookup का अपना बजट है, इसलिए नंबर स्क्रीनिंग आपकी सेंडिंग सीमा नहीं खाती। Idempotency-Key भेजें और फिर से प्रयास करने पर दूसरा ख़रीदने के बजाय पहले से चुकाए गए जवाब को दोहराया जाता है।
डॉक्स में और गहराई से जानें।
Phone number लुकअप करें अनुरोध और उसके हर संभव फ़ील्ड की व्याख्या करता है। Lookup ओवरव्यू दोनों ऑपरेशन और प्रॉपर्टी स्टेटस एक पेज में कवर करता है, अनुरोध दर सीमाएँ lookup ग्रुप का दस्तावेज़ देता है, और idempotency बताता है कि दोहराए गए जवाब की क्या लागत है।
Phone number lookup के सवाल, उत्तर सहित।
फ़ॉर्मेटिंग, लाइन टाइप, पोर्टिंग, और lookup क्या नहीं करता।
फ़ोन नंबर लुकअप क्या बताता है?
नंबर कैसे लिखना चाहिए?
मेरा नंबर क्यों अस्वीकार हुआ?
यह कौन-कौन से लाइन टाइप लौटा सकता है?
मुझे कैसे पता चलेगा कि कोई नंबर पोर्ट हुआ है?
मेरे उत्तर में country_code क्यों नहीं है?
क्या लुकअप नंबर पर कॉल या मैसेज करता है?
व्यवहार में लाएँ।
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।
Lookup का बाकी हिस्सा
एक API key, एक त्रुटि प्रतिक्रिया। दूसरी क्षमता देखें।
किसी जाने-पहचाने नंबर पर अपना पहला lookup चलाएँ।
डैशबोर्ड एक बार में एक नंबर पर वही ऑपरेशन चलाता है — कोई भी कोड लिखने से पहले जवाब देखने का यह सबसे तेज़ तरीका है।