वैलिडेशन शब्द के भीतर तीन अलग सवाल छिपे हैं। पहला सवाल यह है कि क्या नंबर की बनावट किसी असली नंबर जैसी है। दूसरा यह कि क्या कोई नेटवर्क उस नंबर के लिए जवाब देता है। तीसरा यह कि जिस व्यक्ति से आप बात कर रहे हैं, क्या नंबर उसी के पास है। हर सवाल के लिए अलग जाँच चाहिए। हर जाँच के बाद कुछ न कुछ अज्ञात रह जाता है।
फ़ॉर्मेट जाँच आपको क्या बता सकती है?
यह कि नंबर ऐसी रेंज में आता है जिसे कोई कैरियर आवंटित कर सकता है।
Google की libphonenumber किसी रेंज को तब वैध मानती है जब कैरियर उसके नंबर सब्सक्राइबरों को देने के लिए स्वतंत्र हों। इसके FAQ में:
A valid number range is one from which numbers can be freely assigned by carriers to users.
वैधता से यह पता नहीं चलता कि कोई खास नंबर किसी को दिया गया है या उस पर जवाब मिलता है। उसी पेज पर:
Do not rely on libphonenumber to determine whether numbers are currently assigned to a specific user and reachable.
इसलिए फ़ॉर्मेट जाँच नंबरिंग प्लान से जुड़े सवाल का जवाब देती है। इससे यह पता नहीं चलता कि रेंज किसी को आवंटित हुई है या नहीं, और यह भी नहीं कि कोई फ़ोन बजेगा या नहीं।
डायल करके देखना भी इसका विकल्प नहीं है। FAQ दो कारण बताता है जिनसे किसी अवैध नंबर पर भी कॉल जुड़ सकती है। कुछ देश अंत में जुड़े अतिरिक्त अंकों को अनदेखा करते हैं, इसलिए 1800 MICROSOFT किसी छोटे नंबर तक पहुँच जाता है। नंबर बदलने की प्रक्रिया के दौरान कुछ ऑपरेटर पुराने नंबरों को तब भी चालू रखते हैं जब वे बाकी जगह काम करना बंद कर चुके होते हैं।
नेटवर्क लुकअप से और क्या पता चलता है?
जवाब के वे हिस्से जो केवल नेटवर्क के पास होते हैं।
लुकअप कैरियर और नंबर-इंटेलिजेंस स्रोतों से नंबर की रेंज के बजाय उस खास नंबर के बारे में पूछता है। इससे कई सवालों के जवाब मिल जाते हैं जो पहले अज्ञात थे:
| जाँच | यह क्या बताती है | क्या अब भी अज्ञात रहता है |
|---|---|---|
| फ़ॉर्मेट | नंबर पार्स होता है और ऐसी रेंज में आता है जिसे असाइन किया जा सकता है | रेंज किसी को असाइन की गई है या नहीं |
| लाइन का प्रकार | नंबर मोबाइल, फ़िक्स्ड लाइन, VoIP, टोल-फ़्री या मशीन-टू-मशीन है या नहीं | रेंज अधिक बारीकी से किस सेवा के लिए आवंटित है |
| सेवा देने वाला नेटवर्क | वह नेटवर्क जो अभी इस नंबर के लिए जवाब देता है, और वह जिसने इसे जारी किया था | हैंडसेट चालू है या नहीं |
| पोर्टिंग की स्थिति | नंबर ने पिछली बार नेटवर्क कब बदला | सब्सक्राइबर के बारे में कुछ नहीं |
| उपस्थिति | क्या नंबर इस समय नेटवर्क पर पंजीकृत है और ट्रैफ़िक प्राप्त कर सकता है | हैंडसेट किसके हाथ में है |
| स्वामित्व | कुछ नहीं। लुकअप कभी व्यक्ति से नहीं पूछता | क्या नंबर आपके उपयोगकर्ता के नियंत्रण में है |
साइनअप फ़्लो के लिए आख़िरी पंक्ति ही अहम है। कोई भी लुकअप स्वामित्व साबित नहीं करता, क्योंकि लुकअप में व्यक्ति कभी शामिल नहीं होता।
केवल सत्यापन चुनौती क्या साबित कर सकती है?
यह कि आपके फ़्लो में मौजूद व्यक्ति उस नंबर पर ट्रैफ़िक प्राप्त कर सकता है।
libphonenumber का FAQ चुनौती को ही एकमात्र व्यावहारिक उपाय मानता है, क्योंकि देशों के बीच नंबरिंग के तौर-तरीके इतने अलग हैं कि कोई और तरीका यह तय नहीं कर सकता:
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.
इसलिए कोड भेजना और उसे वापस स्वीकार करना ऊपर की दोनों जाँचों से अलग तरह की जाँच है। इसमें एक संदेश और एक राउंड ट्रिप लगती है। साथ ही यही एकमात्र जाँच है जो नंबर को आपके सामने मौजूद व्यक्ति से जोड़ती है। OTP का क्या अर्थ है कोड के बारे में बताता है, और Verify गाइड चुनौती चलाने के बारे में बताती है।
जिस जाँच का जवाब कोई नहीं दे सका, उसे मैं कैसे समझूँ?
अज्ञात के रूप में, जो "नहीं" के समान नहीं है।
जिस नंबर की उपस्थिति तय नहीं हो सकी, वह पहुँच से बाहर नंबर नहीं है। दोनों को एक जैसा मानने से वे ग्राहक ब्लॉक हो जाते हैं जिनके नेटवर्क ने बस जवाब नहीं दिया।
Bird प्रतिक्रिया में इन दोनों को अलग रखता है। आपके द्वारा अनुरोध की गई हर प्रॉपर्टी अपना status बताती है:
ok: प्रॉपर्टी का जवाब मिला और उसका मान मौजूद है।unavailable: कोई जवाब नहीं आया, इसलिए ब्लॉकnullहै।inconclusive: एक जवाब आया, लेकिन उससे प्रॉपर्टी तय नहीं होती।
केवल ok में मान होता है। status: ok और reachable: false वाला उपस्थिति ब्लॉक वास्तविक नकारात्मक जवाब है, क्योंकि नेटवर्क ने जवाब दिया और नंबर को पहुँच से बाहर बताया।
इसलिए पहले ok के आधार पर ब्रांच करें। बाकी सब को अनुत्तरित मानें। स्टेटस की शब्दावली एक खुला enum है, इसलिए अपरिचित मान त्रुटि नहीं, बल्कि भविष्य का कोई स्टेटस है। इस कारण शब्दावली बढ़ने पर भी ok पर ब्रांच करना सही रहता है।
मुझे फ़ोन लुकअप प्रदाता कैसे चुनना चाहिए?
वह प्रदाता चुनें जिसके फ़ील्ड, बाज़ार कवरेज और बिलिंग नियम आपके द्वारा लिए जाने वाले निर्णय से मेल खाते हों।
| निर्णय बिंदु | Bird लुकअप | किसी दूसरे प्रदाता से पूछे जाने वाले सवाल |
|---|---|---|
| सिंटैक्स और वैधता | अंतरराष्ट्रीय फ़ॉर्मैट वाला नंबर माँगता है और बताता है कि वह नंबरिंग योजना में फ़िट होता है या नहीं। | क्या यह इनपुट को सामान्य रूप में बदलता है और गलत बने नंबरों को बिना अनुमान लगाए अस्वीकार करता है? |
| लाइन प्रकार और कैरियर | मूल परिणाम में लाइन प्रकार, सेवा देने वाला नेटवर्क और नंबर जारी करने वाला नेटवर्क लौटाता है। | कौन-से कैरियर और लाइन प्रकार फ़ील्ड शामिल हैं, और वे मौजूदा स्थिति बताते हैं या मूल आवंटन? |
| पोर्टिंग | मूल परिणाम में पोर्टिंग की स्थिति बताता है और पोर्टिंग का अतिरिक्त डेटा भी लौटा सकता है। | क्या यह मौजूदा कैरियर, मूल कैरियर या नेटवर्क बदलने का इतिहास दिखाता है? |
| डेटा कितना ताज़ा है | उपस्थिति और रोमिंग नेटवर्क की मौजूदा स्थिति के बारे में पूछते हैं; बाकी फ़ील्ड नंबरिंग और आवंटन बताते हैं। | कौन-से फ़ील्ड लाइव, कैश किए गए या टाइमस्टैम्प वाले हैं? |
| अज्ञात परिणाम | हर अनुरोधित प्रॉपर्टी की स्थिति ok, unavailable या inconclusive होती है। | क्या आप बिना उत्तर वाली प्रॉपर्टी को नकारात्मक परिणाम से अलग पहचान सकते हैं? |
| बाज़ार कवरेज | लुकअप सफल होने पर भी कोई प्रॉपर्टी किसी नंबर या ऑपरेटर के लिए उपलब्ध न हो, ऐसा हो सकता है। | कौन-से देश और ऑपरेटर हर प्रॉपर्टी का समर्थन करते हैं? |
| बिलिंग | बेस लुकअप का बिल एक बार लगता है। वैकल्पिक प्रॉपर्टी का बिल केवल डिलीवर होने पर लगता है, और विफल प्रॉपर्टी का बिल नहीं लगता। | बिना उत्तर वाली प्रॉपर्टी की लागत क्या है, और कौन-से ऐड-ऑन बिल बदलते हैं? |
रैंक किए गए विकल्प अलग-अलग ट्रेड-ऑफ़ दर्ज करते हैं। Twilio Lookup बुनियादी फ़ॉर्मैटिंग और वैलिडेशन देता है। वैकल्पिक पैकेज लाइन टाइप, लाइन स्थिति, SIM स्वैप, पहचान, कॉलर का नाम, दोबारा आवंटित नंबर और जोखिम संकेत कवर करते हैं। कवरेज और अनुमोदन की शर्तें पैकेज और बाज़ार के अनुसार बदलती हैं।
Abstract API का फ़ोन वैलिडेशन दस्तावेज़ वैधता, देश, कैरियर और लाइन टाइप फ़ील्ड बताता है। Veriphone का वैलिडेशन और कैरियर लुकअप पेज वैधता, देश, कैरियर, लाइन टाइप और मौजूदा कैरियर के परिणाम बताता है। दोनों अलग से कवरेज और क्रेडिट नियम प्रकाशित करते हैं। हर प्रोवाइडर का दस्तावेज़ित कवरेज, अज्ञात परिणामों पर उसका व्यवहार और बिलिंग तय करते हैं कि वह साइनअप या रूटिंग के निर्णय के लिए उपयुक्त है या नहीं।
Bird पर किसी नंबर का लुकअप कैसे करें?
नंबर को लुकअप एंडपॉइंट पर भेजें। फिर उन ब्लॉक को पढ़ें जिनका आपने अनुरोध किया था।
POST /v1/lookup/phone-number एक phone_number और एक वैकल्पिक type ऐरे लेता है। हर लुकअप सेवा देने वाला नेटवर्क और नंबर जारी करने वाला नेटवर्क, पोर्टिंग की स्थिति, देश और लाइन का प्रकार लौटाता है। type ऐरे से classification, porting, presence, roaming, sim_swap या score जोड़े जा सकते हैं। इनमें से हर एक का बिल अलग से बनता है, और केवल तभी जब वह डिलीवर हो। लुकअप नंबर से संपर्क नहीं करता।
किसी Idempotency-Key का दोबारा उपयोग करने पर संग्रहीत परिणाम लौटता है, दूसरा लुकअप नहीं चलता और उसका बिल भी नहीं बनता। लुकअप गाइड में पूरी प्रक्रिया दी गई है और API संदर्भ में फ़ील्ड का विवरण है।
संक्षेप में
वैध होने का मतलब है कि रेंज मौजूद है, यह नहीं कि नंबर इस्तेमाल में है।
Google की फ़ोन नंबर लाइब्रेरी वैध रेंज उसे मानती है जिससे कैरियर उपयोगकर्ताओं को स्वतंत्र रूप से नंबर दे सकते हैं।
कॉल कनेक्ट हो जाने से यह साबित नहीं होता कि नंबर वैध है।
कुछ देश नंबर के अंत में जुड़े अतिरिक्त अंकों को अनदेखा कर देते हैं। कुछ ऑपरेटर रीनंबरिंग के दौरान पुराने नंबरों को बाकी जगहों पर बंद होने के बहुत बाद तक चालू रखते हैं।
केवल चैलेंज से ही यह साबित होता है कि नंबर किसके पास है।
कोड भेजना और उसे वापस पाना ही वह एकमात्र जाँच है जिससे पता चलता है कि नंबर किसके पास है। इसी कारण सत्यापन एक अलग चरण के रूप में मौजूद है।
जिस जाँच का जवाब नहीं मिला, वह नकारात्मक जवाब नहीं है।
Bird हर अनुरोधित प्रॉपर्टी को उसके अपने स्टेटस के साथ रिपोर्ट करता है, इसलिए जिस प्रॉपर्टी का जवाब कोई नहीं दे सका, उसे उस प्रॉपर्टी से अलग पहचाना जा सकता है जिसका जवाब "नहीं" था।