如何在tel: URI中包含扩展名?

55

我目前有一个网页提供电话号码,其中一些电话号码有分机号码,因此我已将HTML编写如下:

<a href="tel:+44-1234-567;ext=88">+44-1234-56788</a> / <a href="tel:+44-1234-567;ext=99">+44-1234-56799</a

当我在我的安卓浏览器中打开此页面并点击其中一个电话号码时,它会在我的手机拨号器(英国三星Galaxy S2原装)中加载如下:

+44-1234-567;ext=88

我认为这不正确。毋庸置疑,应该省略;ext=这个单词。

我是否误读了实现tel的RFC?


12
仅仅因为你正确地阅读了规格并不意味着电话拨号器已经正确实现了它。☹ - J. C. Salomon
有人在iPhone和Android上测试过这些答案吗?我猜90%以上的点击呼叫电话都来自最近的iOS和Android设备。当然,你的网站可能有50%以上的桌面访问者,但这些人可能是手动拨号。 - squarecandy
8个回答

41

似乎正确的方法是使用逗号:

<a href="tel:441234567,88">+44-1234-567 分机88</a>

我刚在iPhone和Android OS 2.1上进行了测试。使用;ext=88ext部分转换为带有扩展号码的数字(因此它会拨打类似于35888而不是88的东西)。


3
这个答案肯定是错的,因为你完全删除了“+”号。我不明白为什么有这么多用户点赞了这个答案,看看我的答案下面才是正确的版本。 - Alex T

20

如何在tel:URI中包含扩展名?的评论

截至2021年6月,Android仍未实现RFC3966的;ext= 语法,并且iOS的实现也不太优雅。

;ext=123为例:

  • Android:通话连接后会出现一个模态窗口,询问“发送以下音调?396123”,并带有“否”和“是”按钮。“发送以下音调?”是对用户点击“是”时将发生的事情的精确技术描述,但这可能不是最适合普通用户的措辞。
  • Android将;ext=123转换为396123,因为它将字母处理方式与拨打1-800-FLOWERS之类的内容相同,这是该语法的错误实现。
  • iOS提供了一个选项,位于Disconnect按钮左侧,上面写着“拨打“ext=…””。当你点击这个“按钮”时,它会拨打扩展号码。这种方法不够优雅,可用性不佳,因为“按钮”看起来不像按钮--只是普通文本--而且你看不到扩展号码。
  • 此外,当您在iOS中首次点击电话链接时,屏幕底部会出现一个按钮,部分将电话号码转换为本地格式,并保留大部分的;ext=语法,例如Call +1 (555) 555-5555;ext123。这也不太优雅,而且很丑。
  • 如果您使用只有一个“等待”意思的分号;, 而不是使用以上提到的带有按钮的方式:

    • iOS:点击链接后会显示一个按钮,上面写着Call +1 (555) 555-5555;123,看起来比上面描述的按钮好看一点。
    • iOS提供了相同的扩展拨号“按钮”,除了扩展号码是可见的,例如Dial "123"。它仍然存在其他可用性问题。
    • iOS不会在消息结束后自动拨打分机号码。
    • Android:通话连接后会出现一个模态窗口,询问是否发送以下音调:123,并显示NoYes按钮。
    • Android不会在消息结束后自动拨打分机号码。

    因此,截至2021年6月,目前似乎唯一的方法是在tel:链接中包括实际起作用的扩展名,是使用分号;或逗号,

    • <a href="tel:+1-555-555-5555;123">555-555-5555 分机号码 123</a> - 这将提供一个用户可以调用以拨打分机号码的界面组件。 UI组件的可用性取决于操作系统; 两者都不是很好,但Android的可能更好一些。
    • <a href="tel:+1-555-555-5555,123">555-555-5555 分机号码 123</a> - 这将在通话连接后几秒钟自动拨打分机号码。注意: 这种机制无法与不接受用户输入直到自动助理消息结束的语音邮件系统配合使用。

    12

    根据文档,你可以像这样添加你想要的内容 12345678;ext=123

    请参阅RFC 3966


    3
    为什么该评论被踩了?虽然它是2012年的,但却是一个可靠的来源。 - systemaddict
    1
    W3.Org 将上述 RFC 3966 视为最广泛支持的方案 https://www.w3.org/TR/mwabp/#bp-interaction-uri-schemes。 - systemaddict

    5
    对于仍然对此问题感到困惑的人:我发现最好使用这种格式:
    <a href="tel:+13235798328;22">
    

    10
    我喜欢这个问题的每一个答案都完全不同,哈哈。 - Keith Pickering

    5

    在我看到的所有示例中,ext的值都包含在完整的数字中。因此,请尝试在 href 值中包含 88:

    <a href="tel:+44-1234-56788;ext=88">+44-1234-56788</a>
    

    它仍然会告诉您整个数字的哪一部分对应于扩展。不过我不知道浏览器会如何处理。我得检查一下RFC。 - dario_ramos

    4

    苹果开发者网站似乎也没有针对URI扩展的标准。apple dev - systemaddict
    1
    很好的补充@systemaddict。不幸的是,在我在美国使用三星手机上的Android v7上,“p”自动转换为数字。 - Damian

    3
    我感觉这是一种逃避回答的方式,但如果在各个设备之间没有一致实现,最好不要包含扩展名,让人们手动拨号:

    <a href="tel:+441234567">+44-1234-567 ext. 88</a>

    或者

    <a href="tel:+441234567">+44-1234-567</a> ext. 88

    让用户做更多的工作总比让1/2的用户拨打错误的分机号码好。


    3

    我不理解这个问题的答案 - 我认为它们是错误的。正确的链接应该像这样:

    <a href="tel:+441234567,88">+44-1234-567 ext. 88</a>
    

    它是唯一在Android和iOS上都能运行的格式。 - Macbric

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接