फ़ोन नंबर कैसे चिह्नित करें?


471

मैं एक HTML दस्तावेज़ में एक फोन नंबर को कॉल करने योग्य लिंक के रूप में चिह्नित करना चाहता हूं। मैंने माइक्रोफ़ॉर्मेट्स दृष्टिकोण को पढ़ा है , और मुझे पता है, कि यह tel:योजना मानक होगी, लेकिन वास्तव में कहीं लागू नहीं है।

स्काइप परिभाषित करता है, जहां तक ​​मुझे पता है, skype:और callto:बाद वाले ने कुछ लोकप्रियता हासिल की है। मुझे लगता है, अन्य कंपनियों की या तो अन्य योजनाएं हैं या callto:ट्रेन में कूदना है ।

फोन नंबर को चिन्हित करने के लिए सबसे अच्छा अभ्यास क्या होगा, ताकि वीओआईपी सॉफ्टवेयर के साथ ज्यादा से ज्यादा लोग सिर्फ कॉल पाने के लिए एक लिंक पर क्लिक कर सकें?

बोनस प्रश्न: क्या किसी को अमेरिका में 911 या जर्मनी में आपातकालीन नंबर जैसे जटिलताओं के बारे में पता है?

चीयर्स,

अद्यतन: Microsoft NetMeeting callto:WinXP के तहत योजनाएँ लेता है । यह प्रश्न बताता है, कि Microsoft Office Communicator tel:योजनाओं को संभाल लेगा, लेकिन callto:लोगों को नहीं । महान, रेडमंड!

अपडेट 2: अब से ढाई साल बाद। यह संख्या के साथ आप जो करना चाहते हैं, उसे उबालने लगता है। मोबाइल के संदर्भ में, tel:जाने का रास्ता है। यदि आप अपने उपयोगकर्ताओं को अधिक Skype लोग ( callto:) या अधिक संभावना है कि Google Voice ( tel:) स्थापित किया है , तो आपको लगता है कि डेस्कटॉप पर लक्ष्यीकरण आपके ऊपर है । मेरी व्यक्तिगत राय है, जब संदेह का उपयोग करें tel:(@Sidnicious 'उत्तर के अनुरूप)।

अपडेट 3: उपयोगकर्ता @ rybo111 ने उल्लेख किया, कि स्काइप इन क्रोम बैंडवगन पर कूद गया है tel:। मैं इसे सत्यापित नहीं कर सकता, क्योंकि हाथ में दोनों के साथ कोई मशीन नहीं है, लेकिन अगर यह सच है, तो इसका मतलब है कि हमारे पास आखिरकार एक विजेता है:tel:


1
दुर्भाग्य से नहीं। यह आपके प्रदाता (VoiP, सेलफोन COMP या जो कुछ भी करता है) को उबालने लगता है। यह 800 नंबर के लिए चार्ज हो सकता है।
बोल्ड्यूविन

1
मैं Chrome में Google Voice का उपयोग कर रहा हूं और यह tel:URI को मान्यता नहीं देता है। मैं स्टिक के साथ चिपके हुए callto:और फोन नंबर का एक प्रदर्शन इस सिद्धांत पर कर रहा हूं कि मोबाइल फोन ब्राउज़रों को वैसे भी संख्या का पता लगाना चाहिए।
ओल्ड प्रो

5
शीर्षक के बावजूद, यह प्रश्न वास्तव में "फ़ोन नंबर के लिए आपको किस URL योजना का उपयोग करना चाहिए", बजाय उन्हें चिह्नित करने के।
राएडवाल्ड

1
@Boldewyn Skype द्वारा Chrome का उपयोग करते समय संकेत दिया जाता है tel:कि शायद आपको Skype का उपयोग करने के बारे में अपनी टिप्पणी समाप्त करनी चाहिए callto:?
rybo111

1
क्या आप कृपया अपने प्रश्नों के अपडेट को उत्तर के अनुसार संपादित करने का प्रयास कर सकते हैं। जैसे यह कोई गड़बड़ है।
१५

जवाबों:


495

इस tel:योजना का उपयोग 1990 के दशक के अंत में किया गया था और 2000 की शुरुआत में RFC 2806 के साथ प्रलेखित किया गया था (जो 2004 में अधिक गहन RFC 3966 द्वारा मान लिया गया था) और इसमें सुधार जारी हैtel:IPhone पर समर्थन करना एक मनमाना निर्णय नहीं था।

callto:, जबकि Skype द्वारा समर्थित, एक मानक नहीं है और इसे तब तक टाला जाना चाहिए जब तक कि विशेष रूप से Skype उपयोगकर्ताओं को लक्षित न किया जाए।

मेरे? मैं tel:आपके पृष्ठों (उपयोगकर्ता एजेंट को सूँघने के बिना) पर उचित रूप से गठित यूआरआई सहित शुरू करूँगा और दुनिया के बाकी फोनों को पकड़ने के लिए प्रतीक्षा करूँगा :)।

उदाहरण :

<a href="tel:+18475555555">1-847-555-5555</a>


विस्तृत उत्तर के लिए धन्यवाद! चूँकि मैंने प्रश्न पूछा था, इसलिए मुझे इस दृष्टिकोण का अनुसरण करने का प्रलोभन दिया गया। मानक का उपयोग करें और शिकायत करने वाले लोगों को बताएं, कि वे खराब ऐप / टूल का उपयोग करते हैं। यद्यपि यह कठिन हो जाता है, यदि यह आपका ग्राहक है, तो मुझे लगता है, आप सही हैं। अगर फिर भी मुझे Skype उपयोगकर्ताओं पर विचार करना है, तो मैं अपने जावास्क्रिप्ट समाधान के साथ दूसरे रास्ते पर जाऊंगा।
Boldewyn

1
यह 2014 और तेल है: अब स्काइप के लिए काम करता है। लेकिन अगर आप Skype Echo / Sound Test Service को कॉल करना चाहते हैं, तो लिंक msdn.microsoft से <a href="skype:echo123?call"> Skype Echo / साउंड टेस्ट सर्विस </a> कॉल करेगा। com / en-us / पुस्तकालय / कार्यालय /…
ओजबोक

4
किसी ने href="tel://1-555-555-5555"प्रारूप की कोशिश की ? Tutsplus से लोग सलाह देते हैं यह code.tutsplus.com/tutorials/...
एड्रियन बनें

2
टेल के साथ मेरे अनुभव में: टैग स्काइप को नंबर को ठीक से पार्स करने के लिए नंबर (जैसे "यूके नंबर के लिए" +44 ") पर होने के लिए देश कोड की आवश्यकता होती है। अन्यथा यह सिर्फ स्काइप खोलता है लेकिन डायल करने की कोशिश नहीं करता है।
शौनक

3
उदाहरण नहीं होना चाहिए: <a href="tel:+18475555555">? प्रारंभिक 1 से पहले + नोट करें)
स्टीफन

73

मेरे परीक्षा परिणाम:

कॉल करने के लिए:

  • नोकिया ब्राउज़र: कुछ नहीं होता है
  • Google Chrome: नंबर पर कॉल करने के लिए स्काइप चलाने के लिए कहता है
  • फ़ायरफ़ॉक्स: नंबर को कॉल करने के लिए एक प्रोग्राम चुनने के लिए कहता है
  • IE: संख्या को कॉल करने के लिए स्काइप चलाने के लिए कहता है

टेलीफोन:

  • नोकिया ब्राउज़र: काम कर रहा है
  • Google Chrome: कुछ नहीं होता है
  • फ़ायरफ़ॉक्स: "फ़ायरफ़ॉक्स पता नहीं कैसे इस यूआरएल को खोलने के लिए"
  • IE: यूआरएल नहीं मिल सका

2
इसे जोड़ने के लिए, Android 4.2.2 (Nexus 4) पर Google Chrome के लिए व्यवहार समान है। बैकग्राउंड में चलने वाले स्काइप के एंड्रॉइड वर्जन के होने पर भी कॉलआउट नहीं होता: लिंक काम करता है। संक्षेप में, यदि आप मिनट में मोबाइल को लक्षित करना चाहते हैं, तो आप वास्तव में कॉलआउट का उपयोग नहीं कर सकते हैं।
aendrew

अब क्रोम 35 पर आप इस मिल पॉपअप
पीईसी

क्रोम और फ़ायरफ़ॉक्स (शायद IE के साथ-साथ) में, आप के लिए अपनी एक वेब सेवा रजिस्टर कर सकते हैं tel:के साथ उपसर्ग registerProtocolHandler
रॉस रोजर्स

U को क्रोम पर काम करने वाले + देशकोड फोन नंबर का उपयोग करना होगा। टेल: लिंक क्रोम w / o + पर w स्काइप काम करने के लिए नहीं लगता
Stas Svishov

OSX और Chrome पर अपडेट: यह फेसटाइम लॉन्च करने के लिए कहता है।
जूल्स

45

सबसे अच्छा शर्त टेल से शुरू करना है: जो सभी मोबाइलों पर काम करता है

फिर इस कोड में डालें, जो केवल डेस्कटॉप पर चलने पर और लिंक पर क्लिक करने पर ही चलेगा।

मैं मोबाइल ब्राउज़रों का पता लगाने के लिए http://detectmobilebrowsers.com/ का उपयोग कर रहा हूं , आप जो भी विधि पसंद करते हैं उसका उपयोग कर सकते हैं

if (!jQuery.browser.mobile) {
    jQuery('body').on('click', 'a[href^="tel:"]', function() {
            jQuery(this).attr('href', 
                jQuery(this).attr('href').replace(/^tel:/, 'callto:'));
    });
}

तो मूल रूप से आप अपने सभी ठिकानों को कवर करते हैं।

tel: डायलर को नंबर के साथ खोलने के लिए सभी फोन पर काम करता है

callto: फ़ायरफ़ॉक्स, क्रोम से स्काइप से कनेक्ट करने के लिए आपके कंप्यूटर पर काम करता है


हां, यह - callto: Android पर बिल्कुल भी काम नहीं करता है (मूरत के जवाब पर मेरी टिप्पणी देखें), और tel: वास्तव में डेस्कटॉप पर काम नहीं करता है। यह दुर्भाग्यपूर्ण है, वास्तव में।
aendrew

1
हम्म, दुख की बात है कि एक त्वरित jsfiddle इस काम को या तो करने नहीं लगता ... jsfiddle.net/tchalvakspam/gVZYt/3
Kzqai

मैक 10.8 पर सीमोनकी 2.20 पर काम करना <body <?php body_class(); ?>>एक वर्डप्रेस थीम के हेडर .php फ़ाइल पर कोड के नीचे रखा गया है ।
om01

callto: didnot chrome for mac और वर्जन अप-टू-डेट है
उज्जवल

दुःख की बात यह है कि इसे JQuery 1.9 jquery.com/upgrad-guide/1.9/#jquery-browser-removed
Casebash

21

जैसा कि एक की उम्मीद है, WebKit का समर्थन tel:Android मोबाइल ब्राउज़र के साथ-साथ FYI तक बढ़ाता है


15
टिप्पणी के रूप में बेहतर होता, लेकिन फिर भी जानना ठीक है।
ओ ० '।

10

मैं इस जवाब को "ऐतिहासिक" उद्देश्य के लिए रखता हूं लेकिन अब इसकी सिफारिश नहीं करता। ऊपर @Sidnicious 'उत्तर देखें और मेरा अपडेट 2।

चूंकि यह कॉल्टो और टेली लोगों के बीच एक ड्रा की तरह दिखता है, मैं इस उम्मीद में एक संभावित समाधान में फेंकना चाहता हूं, कि आपकी टिप्पणी मुझे प्रकाश के रास्ते पर वापस लाएगी; ;-)

callto:अधिकांश डेस्कटॉप क्लाइंट इसे संभाल लेंगे, इसलिए उपयोग करना :

<a href="callto:0123456789">call me</a>

फिर, यदि ग्राहक एक iPhone है, तो लिंक बदलें:

window.onload = function () {
  if (navigator.userAgent.match (/iPhone/i)) {
    var a = document.getElementsByTagName ("a");
    for (var i = 0; i < a.length; i++) {
      if (a[i].getAttribute ('href').search (/callto:/i) === 0) {
        a[i].setAttribute ('href', a[i].getAttribute ('href').replace (/^callto:/, "tel:"));
      }
    }
  }
};

इस समाधान के खिलाफ कोई आपत्ति? क्या मुझे अधिमानतः से शुरू करना चाहिए tel:?


यह हो सकता है कि iPhone कॉलआउट योजना का भी समर्थन करता है, लेकिन यह कि Apple टेल को प्राथमिकता देता है, इसलिए यह प्रलेखन में उल्लिखित है।
Jan Aagard

5
मेरा जवाब देखिए। callto:एक मालिकाना यूआरआई योजना है, इसलिए मैं वहां शुरू नहीं करूंगा।
s4y

callto: didnot क्रोम में क्रोम के लिए काम किया है और संस्करण अप-टू-डेट है।
उज्जवल

यह मुझे आश्चर्य नहीं करता है। 2009 में, जब उत्तर दिया गया था, तो परिदृश्य मौलिक रूप से अलग था। इसके अलावा, आपको एक तृतीय-पक्ष कार्यक्रम की आवश्यकता है, जो callto:स्कीम के लिए रजिस्टर करता है, जैसे स्काइप। Chrome को स्वयं पता नहीं है कि उसे क्या करना चाहिए।
बोल्डवेन

9

मोबाइल सफारी (iPhone और iPod Touch) tel:योजना का उपयोग करते हैं ।

मैं iPhone पर एक वेबपेज से फोन नंबर कैसे डायल कर सकता हूं?


2
इसलिए यदि मुख्य लक्षित उपयोगकर्ता iPhone या iPod Tough हैं (और शायद अन्य मोबाइल डिवाइस, मुझे नहीं पता ...), आपको टेली का उपयोग करना चाहिए: यदि मुख्य उपयोगकर्ता सामान्य वेब क्लाइंट हैं, (IE, फ़ायरफ़ॉक्स आदि)। स्काइप या कुछ अन्य वीओआईपी सॉफ्टवेयर का उपयोग करना, मुझे लगता है कि कॉलआउट: सबसे अच्छा होगा।
विस्मय

3

RFC3966 टेलीफोन नंबरों के लिए IETF मानक URI को परिभाषित करता है, जो कि 'tel:' URI है। वह मानक है। कोई समान मानक नहीं है जो 'कॉलआउट:' को निर्दिष्ट करता है, यह उन प्लेटफार्मों पर स्काइप के लिए एक विशेष सम्मेलन है जहां इसे समर्थन करने के लिए एक यूआरआई हैंडलर को पंजीकृत करने की अनुमति मिलती है।


यही सिद्दीकी ने कहा, हां।
बोल्ड्यूवेन

3

यह मेरे लिए काम किया:

1. मानकों के अनुरूप कड़ी बनाएं:

        <a href="tel:1500100900">

2. स्काइप के लिए मोबाइल ब्राउज़र का पता नहीं लगने पर इसे हटा दें:

$("a.phone")
    .each(function()
{ 
  this.href = this.href.replace(/^tel/, 
     "callto");
});

कक्षा के माध्यम से बदलने के लिए लिंक का चयन करना अधिक कुशल लगता है। बेशक यह केवल .phoneक्लास वाले एंकरों पर काम करता है ।

मैंने इसे फंक्शन में रखा है if( !isMobile() ) { ...इसलिए यह केवल तब ही ट्रिगर होता है जब डेस्कटॉप ब्राउज़र का पता लगाता है। लेकिन यह एक संभावना अप्रचलित है ...

function isMobile() {
    return (
        ( navigator.userAgent.indexOf( "iPhone" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "iPod" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "iPad" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "Android" ) > -1 ) ||
        ( navigator.userAgent.indexOf( "webOS" ) > -1 )
    );
}

मोबाइल ब्राउज़रों का पता लगाने का "उचित" तरीका असंवेदनशील स्ट्रिंग "मोबाइल" की जांच करना है।
केविन कॉक्स

2

मैंने tel:अपने प्रोजेक्ट के लिए इस्तेमाल किया ।

इसने मेरे सोनी एरिक्सन स्मार्टफोन पर क्रोम, फायरफॉक्स, IE9 & 8, क्रोम मोबाइल और मोबाइल ब्राउजर में काम किया।

लेकिन callto:मोबाइल ब्राउजर में काम नहीं किया।


2

मैं tel:(अनुशंसित के रूप में) का उपयोग करेगा । लेकिन एक बेहतर कमबैक / प्रदर्शन त्रुटि पृष्ठ न होने के लिए मैं इस तरह से (jquery का उपयोग करके) कुछ का उपयोग करूंगा:

// enhance tel-links
$("a[href^='tel:']").each(function() {
    var target = "call-" + this.href.replace(/[^a-z0-9]*/gi, "");
    var link = this;

    // load in iframe to supress potential errors when protocol is not available
    $("body").append("<iframe name=\"" + target + "\" style=\"display: none\"></iframe>");
    link.target = target;

    // replace tel with callto on desktop browsers for skype fallback
    if (!navigator.userAgent.match(/(mobile)/gi)) {
        link.href = link.href.replace(/^tel:/, "callto:");
    }
});

धारणा यह है, कि जिन मोबाइल ब्राउज़रों के पास यूजरएन्ज-स्ट्रिंग में मोबाइल स्टैम्प है, उनके पास tel:प्रोटोकॉल के लिए समर्थन है। बाकी के लिए हम callto:प्रोटोकॉल के साथ लिंक को प्रतिस्थापित करते हैं जहां Skype उपलब्ध है।

असमर्थित प्रोटोकॉल (एस) के लिए त्रुटि-पृष्ठों को दबाने के लिए, लिंक को एक नए छिपे हुए iframe को लक्षित किया गया है।

दुर्भाग्य से यह जांचना संभव नहीं लगता है, अगर url को iframe में सफलतापूर्वक लोड किया गया है। ऐसा लगता है कि कोई त्रुटि घटनाओं को निकाल नहीं दिया गया है।


छिपे हुए iframes का अच्छा उपयोग!
बोल्डवेन

1

चूंकि callto:स्काइप (स्काइप सेटिंग्स में सेट) द्वारा समर्थित डिफ़ॉल्ट रूप से है, और अन्य भी इसका समर्थन करते हैं, मैं इसके callto:बजाय उपयोग करने की सलाह दूंगा skype:


3
यहां मैं सहमत हूं। लेकिन यह सब मिलकर टेली: बनाम कॉल्टो: और यह एक आसान नहीं है।
Boldewyn

1

हालाँकि Apple tel:मोबाइल सफारी के लिए अपने डॉक्स में सिफारिश करता है, वर्तमान में (iOS 4.3) यह callto:केवल उसी को स्वीकार करता है । इसलिए मैं callto:एक सामान्य वेब साइट पर उपयोग करने की सलाह देता हूं क्योंकि यह Skype और iPhone दोनों के साथ काम करता है और मुझे उम्मीद है कि यह एंड्रॉइड फोन पर भी काम करेगा।

अपडेट (जून 2013)

यह अभी भी तय करने का विषय है कि आप अपना वेब पेज क्या चाहते हैं। मेरी वेबसाइट पर मैं दोनों tel:और callto:लिंक प्रदान करता हूं (बाद वाले को स्काइप के रूप में लेबल किया गया है) क्योंकि मैक पर डेस्कटॉप ब्राउज़र tel:लिंक के साथ कुछ भी नहीं करते हैं जबकि मोबाइल एंड्रॉइड callto:लिंक के साथ कुछ भी नहीं करता है । यहां तक ​​कि Google टॉक प्लगइन के साथ Google क्रोम भी tel:लिंक का जवाब नहीं देता है । फिर भी, मैं डेस्कटॉप पर दोनों लिंक पेश करना पसंद करता हूं जब कोई व्यक्ति tel:अपने कंप्यूटर पर काम करने के लिए लिंक प्राप्त करने की परेशानी में चला गया हो ।

यदि साइट डिज़ाइन ने तय किया है कि मैं केवल एक लिंक प्रदान करता हूं, तो मैं एक tel:लिंक का उपयोग करूंगा जिसे मैं callto:डेस्कटॉप ब्राउज़र पर बदलने की कोशिश करूंगा ।


1
एंड्रॉइड के नवीनतम ओपन-सोर्स बिल्ड "आइस क्रीम सैंडविच" में स्टॉक ब्राउज़र अभी भी केवल समर्थन करने के लिए प्रकट होता है tel:; callto:"वेब पेज उपलब्ध नहीं है" पर एक लिंक के परिणाम पर क्लिक करें
राइमो

0

JQuery का उपयोग करते हुए, पृष्ठ पर सभी अमेरिकी टेलीफोन नंबरों को उचित callto:या tel:योजनाओं के साथ बदलें ।

// create a hidden iframe to receive failed schemes
$('body').append('<iframe name="blackhole" style="display:none"></iframe>');

// decide which scheme to use
var scheme = (navigator.userAgent.match(/mobile/gi) ? 'tel:' : 'callto:');

// replace all on the page
$('article').each(function (i, article) {
    findAndReplaceDOMText(article, {
        find:/\b(\d\d\d-\d\d\d-\d\d\d\d)\b/g,
        replace:function (portion) {
            var a = document.createElement('a');
            a.className = 'telephone';
            a.href = scheme + portion.text.replace(/\D/g, '');
            a.textContent = portion.text;
            a.target = 'blackhole';
            return a;
        }
    });
});

विचार के लिए @jonas_jonas को धन्यवाद। उत्कृष्ट findAndReplaceDOMText फ़ंक्शन की आवश्यकता है


1
यह समाधान आदर्श नहीं है, क्योंकि उपयोगकर्ता एजेंट स्ट्रिंग का विश्लेषण करना बुरा व्यवहार माना जाता है। एक ऐसे डिवाइस पर विचार करें जो telURI को सपोर्ट करता है लेकिन खुद को मोबाइल के रूप में रिपोर्ट नहीं करता है।
आर्टुरो टॉरेस सेंचेज

-1

मैं सामान्य <a href="tel:+123456">12 34 56</a>मार्कअप का उपयोग करता हूं और उन लिंक को डेस्कटॉप उपयोगकर्ताओं के लिए गैर-क्लिक करने योग्य बनाता हूंpointer-events: none;

a[href^="tel:"] {
    text-decoration: none;
}
.no-touch a[href^="tel:"] {
    pointer-events: none;
    cursor: text;
}

उन ब्राउज़रों के लिए जो पॉइंटर-ईवेंट (IE <11) का समर्थन नहीं करते हैं, क्लिक को जावास्क्रिप्ट के साथ रोका जा सकता है (उदाहरण Modernizr और jQuery पर निर्भर करता है):

if(!Modernizr.touch) {
    $(document).on('click', '[href^="tel:"]', function(e) {
        e.preventDefault();
        return false;
    });
}

1
Modernizr.touchजिसका उपयोग टच इवेंट सपोर्ट के लिए समर्थन के लिए tel:है, अविश्वसनीय है। आसान अपवाद मामले: iPad, विंडोज टैबलेट, आदि
zachleat

यहां तक ​​कि विंडोज डेस्कटॉप पर चलने वाला क्रोम भी टच डिवाइस के रूप में रिपोर्ट करता है।
आर्टुरो टॉरेस सेंचेज

कुछ डेस्कटॉप-क्लास मशीनें टेली का समर्थन करती हैं: यूआरएल। एक मैक-विशिष्ट उदाहरण के लिए, मैक पर फेसटाइम मानक है और टेली के साथ काम करता है :, अब तक उपयोगकर्ता के आईफोन को हैंडऑफ / निरंतरता के साथ उपयोग करने के लिए जा रहा है, इसलिए सूचक-घटनाओं का उपयोग करना: कोई भी डेस्कटॉप को लक्षित करने के लिए बुद्धिमान नहीं हो सकता है ।
19 नवंबर को OxC0FFEE
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.