首页> 中国专利> 在客户计算设备之间建立在线通信会话

在客户计算设备之间建立在线通信会话

摘要

本发明涉及一种用于在客户计算设备之间帮助建立在线通信会话的方法和装置。在线通信会话邀请请求消息从发起客户计算设备被接收到,消息包括发起计算设备的连接数据和用于预期接收者的在线通信会话端点标识符。与标识符相关的一组一个或多个推送标记被确定,其中每个推送标记识别一个客户计算设备。包括发起客户计算设备的连接数据的在线通信会话邀请消息被传输给与该组推送标记相对应的一组预期接收者客户计算设备。邀请已接受消息从包括该计算设备的连接数据的该组预期接收者客户计算设备的至少其中一个被接收到。邀请已接受消息被传输给包括每个接受计算设备的连接数据的发起计算设备,以允许发起计算设备和每个接受计算设备建立直接对等在线通信会话。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-05-25

    授权

    授权

  • 2013-02-20

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20100923

    实质审查的生效

  • 2013-01-02

    公开

    公开

说明书

对相关申请的交叉引用

本申请要求2010年9月20日提交的美国专利申请No.12/886,485 的优先权,并且还要求2010年9月13日提交的美国临时申请No. 61/382,479、2010年8月31日提交的美国临时申请No.61/378,924和 61/378,926、2010年6月4日提交的美国临时申请No.61/351,814、和 2010年4月7日提交的美国临时申请No.61/321,865和61/321,866的 权益,由此这些申请的每个都通过引用被并入。

本申请可以包括与2010年4月7日提交的、标题为“Apparatus and Method For Inviting Users to Online Sessions(用于邀请用户至在 线会话的装置和方法)”的共同未决、共同指定(co-assigned)的美 国临时申请No.61/321,832有关的主题,该申请通过引用被并入本文。

在苹果的iPhone 4的样机显然在2010年3月25日从苹果工程师 处被偷窃之时,要公开并在本申请中要求权利的本发明的时机尚未成 熟并且没有苹果公司的对公众公开的授权。本申请所基于的美国优先 权申请在明显的偷窃之前尚未提交。

技术领域

本发明的实施例涉及计算机联网的领域;并且尤其用于为在客户 计算设备之间建立在线通信会话。

背景技术

用于提供在线通信会话(例如即时消息、视频会议等)的许多实 施方式都需要计算设备的用户安装软件和/或注册服务。因此作为用户 建立与另一个用户的在线通信会话的先决条件,两个用户都必须进行 注册和/或安装相同的软件。许多实施方式还维持存在者(presence) (例如朋友列表),其使用户能够确定其他用户的状态(例如在线、 离线、离开等)。

诸如因特网的大型公共网络,频繁具有至更小的私人网络的连 接,诸如由公司、因特网服务提供商、或者甚至是个人家庭维持的私 人网络。由于它们非常特别(nature),因此公共网络必须对网络地 址,即公共地址的分配意见一致。出于多种原因,私人网络的维护者 经常为私人网络选择使用私人网络地址,这些地址不是对分配意见一 致的一部分。因此,为了来自私人网络的网络流量能够穿过公共网络, 就需要某些形式的私人/公共网络地址翻译(“NAT”)。

执行NAT操作的设备改变被发送到私人网络之外的数据包以遵 守公共网络的寻址方案。尤其是,网络地址翻译器用它自己的公共地 址和被分配的端口数(port number)来替换最初的私人地址和包的端 口数。网络地址翻译器还改变接收到的数据包,以便私人网络上的计 算机用预期接收者(intended recipient)的正确的私人地址和端口数 来替换目的地公共地址和端口数。正如在本文中使用的那样,如果在 上下文中适用,则术语地址应该被解释为包括地址和端口数两者,正 如本领域普通技术人员会理解的那样。

NAT在现代网络计算中已经变得越来越常见。NAT的一个优点 在于它使公共网络地址空间的消耗变慢。例如,在因特网上使用的 TCP/IP寻址,包含四个字符串,每个字符串三个数字,因此提供有限 的地址空间。此外,这个地址空间的某些部分被保留用于特殊的使用 或用户,进一步消耗了可用地址的实际数量。然而,如果使用NAT, 则私人网络或子网络可以使用任意数量的地址,但仍旧只给外部世界 呈现一个标准化的公共地址。这使可用地址的数量实际上无限制,因 为每个私人网络理论上都能够使用准确来说是同一个私人地址。

NAT提供的一个优点是增加的安全性,这源自公共网络上的那 些计算机不能确定私人网络上计算机的实际的(即私人的)网络地址 的事实。这是因为通过网络地址翻译器在公共网络上只提供公共地址。 此外,这个公共地址可以相应于私人网络上任何数量的计算机。

不同NAT类型采用不同的安全性级别。例如,采用“完全锥形 NAT”,一旦一个内部地址(iAddr:iPort)被映射到一个外部地址 (eAddr:ePort),则任何外部主机都可以通过将包发送给eAddr:ePort 而将包发送给iAddr:iPort。利用“受限锥形NAT”,地址为hAddr 的外部主机只有在iAddr:iPort已经事先将包发送给hAddr之后,才 可以通过将包发送给eAddr:ePort而将包发送给iAddr:iPort。外部主 机的端口是不相关的。利用“端口受限锥形NAT”,地址/端口为 hAddr:hPort的外部主机只有在iAddr:iPort事先将包发送给 hAddr:hPort的条件下,才能够通过将包发送给eAddr:ePort而将包 发送给iAddr:iPort。最后,利用对称NAT,从同一个iAddr:iPort到 具体目的地IP地址和端口的每个请求都被映射到唯一的 eAddr:ePort。如果同一个内部主机将包发送给不同目的地,则使用不 同的外部地址和端口映射。只有从内部主机接收包的外部主机才能够 将包发送回内部主机。

对等(“P2P”)计算指的是由计算节点组成的分布式网络结构, 这些计算节点使一部分它们的资源直接提供给其他网络参与者。与传 统的客户-服务器模型相比,P2P网络中的同位体(peer)彼此之间建 立直接通信信道并且既用作客户又用作服务器,在传统的客户-服务器 模型中服务器供应资源而客户消耗资源。

上述的NAT操作造成P2P连接的许多问题。例如,如果同位体之 中的一个或两个位于一个或多个上述的NAT类型后面,则在两个同位 体之间建立直接连接变得愈加困难。这个问题由于下列事实被加重: 诸如Apple iPodAppleApple和各种其他 设备(例如RIM设备、Palm设备等)的客户设备在 具有不同NAT实施方式的网络之间频繁移动。例如,能够在Wi-Fi网络 (例如802.11b,g,n网络);3G网络(例如通用移动通信系统(“UMTS”) 网络、高速上行链路分组接入(“HSUPA”)网络等);和蓝牙网络 (被称为个人局域网(“PAN”))上通信。未来的客户设备将能够 在诸如WiMAX、先进的国际移动电信(“IMT”)、和先进的长期演 进(“LTE”)(仅列出几个)的其他通信信道上通信。

免提(hands-free)单元(例如头戴式耳机、汽车工具箱)通常 用于与用于免提服务的计算设备同位(peer)。例如,对于包括蜂窝 电话功能的计算设备而言,包括与用作免提单元和计算设备之间的听 觉中继的免提单元同位的能力是常见的。

发明内容

描述一种用于在客户计算设备之间帮助建立在线通信会话的方 法和装置。在线通信会话邀请请求消息从发起客户计算设备被接收 到,消息包括发起计算设备的连接数据和用于预期接收者的在线通信 会话端点标识符。与标识符相关的一组一个或多个推送标记被确定, 其中每个推送标记识别一个客户计算设备。包括发起客户计算设备的 连接数据的在线通信会话邀请消息被传输给与该组推送标记相对应的 一组预期接收者客户计算设备。邀请已接受消息从包括该计算设备的 连接数据的该组预期接收者客户计算设备的至少其中一个被接收到。 邀请已接受消息被传输给包括每个接受计算设备的连接数据的发起计 算设备,以允许发起计算设备和每个接受计算设备建立直接对等在线 通信会话。

附图说明

通过参考下面的描述和用于示出本发明实施例的附图可以更好 地理解本发明。在附图中:

图1示出根据一个实施例,为在线通信会话注册客户设备的数据 流图;

图2详细示出根据一个实施例的图1的客户设备的框图;

图3详细示出根据一个实施例的图1的注册服务器的框图;

图4示出根据一个实施例,用于为在线通信会话注册客户设备的 示例性操作的流程图;

图5示出根据一个实施例的示例性注册数据存储器;

图6示一个实施例的常规网络拓扑;

图7示出根据一个实施例,在客户设备之间建立在线通信会话的 数据流图;

图8示出根据一个实施例的示例性中继服务的框图;

图9示出根据一个实施例的应用程序接口(API)结构的一个实 施例;

图10示出根据一个实施例的示例性注册数据存储器;

图11示出根据一个实施例的示例性NAT兼容性表;

图12示出依据一些实施例的示例性客户设备和用于在电路交换 (切换,switch)式呼叫和视频呼叫之间转接的图形用户界面;

图13示出根据一个实施例,显示视频预览的图12的客户设备;

图14示出根据一个实施例的示例性客户设备和用于接收或回绝 视频呼叫邀请的图形用户界面;

图15和16示出根据一个实施例,转接到视频呼叫之后的客户设 备;

图17和18示出根据一个实施例,用于在仅音频的电路交换式电 话呼叫与视频呼叫之间转接的示例性操作的流程图;

图19示出根据一个实施例,在已经接收到视频呼叫拒绝消息的 客户设备上执行的示例性操作的流程图;

图20示出根据一个实施例,在用于从视频呼叫转接到电路交换 式呼叫的客户设备上执行的示例性操作的流程图;

图21示出根据一个实施例,用于使用电子邮件地址作为在线通 信会话端点标识符,为在线通信会话注册客户设备的常规网络拓扑;

图22A-B示出根据一个实施例,用于将电子邮件地址注册为在线 通信会话端点标识符的示例性操作的流程图;

图23示出根据一个实施例,用户为了将电子邮件地址注册为在 线通信会话端点标识符而提供初始化信息的示例性操作的流程图;

图24示出根据一个实施例,用于验证电子邮件地址的示例性操 作;

图25示出根据一个实施例,当电子邮件地址已经得到验证时在 注册服务上执行的示例性操作的流程图;

图26示出根据一个实施例,当用户具有与同一个在线通信会话 端点标识符相关的多个客户设备时,用于管理邀请的示例性操作的数 据流图;

图27示出根据一个实施例,当直接P2P连接可行时执行的示例 性操作的数据流图;

图28示出根据一个实施例,当直接P2P连接不可行时执行的示 例性操作的数据流图;

图29示出根据一个实施例,当在线通信会话结束时执行的示例 性操作的数据流图;

图30示出根据一个实施例,执行将在线通信会话从一个客户设 备转移到另一个客户设备的示例性操作的流程图;

图31示出根据一个实施例,用于发起和建立与多个用户的在线 通信会话的示例性操作的流程图;

图32示出依据一个实施例,与免提单元接口的客户计算设备的 框图;

图33示出依据一个实施例,客户计算设备接收对视频呼叫的邀 请、使免提设备鸣响、接收来自免提设备的回答指示、建立视频呼叫、 并且将音频路由(route)至免提设备;

图34示出依据一个实施例,客户计算设备通过免提设备为已建 立的视频呼叫发起视频呼叫和路由音频;

图35示出依据一个实施例,客户计算设备响应于接收到来自免 提设备的呼叫请求而发起视频呼叫;

图36示出依据一个实施例,客户计算设备将已建立的视频呼叫 的音频路由至免提设备;

图37示出依据一个实施例,客户计算设备响应于接收到来自免 提设备的结束呼叫请求而终止视频呼叫;

图38示出可以在一些实施例中使用的示例性计算机系统的框图; 和

图39示出可以在一些实施例中使用的示例性数据处理系统的框 图。

具体实施方式

在下面的描述中,阐明了许多特定细节。然而,要理解地是,可 以不用这些具体细节而实践本发明的实施例。在其他实例中,为了不 妨碍对本描述的理解,众所周知的电路、结构和技术未被详细示出。 本领域普通技术人员利用描述所包括的内容,将能够实施适当的功能 而不用过分实验。

在说明书中对“一个实施例”、“实施例”、“示例实施例”等 的引用指出所描述的实施例可以包括特殊的特征、结构或特性,但是 每个实施例都可以不必包括该特殊的特征、结构或特性。此外,这种 短语不必指同一个实施例。此外,当结合一个实施例描述特殊的特征、 结构或特性时,要主张它是在本领域技术人员的知识范围内,以便达 到使这种特征、结构或特性与其他实施例相结合的目的,无论是否明 确地描述过。

在下面的描述和权利要求中,可以使用术语“耦接”和“连接” 以及它们的派生词。应该理解的是,这些术语不旨在作为对于彼此的 同义词。“耦接”用于指出相互之间可以或可以不直接物理或电接触、 相互之间合作或交互的两个或更多个元件。“连接”用于指出在相互 耦接的两个或更多个元件之间建立通信。

为在线通信会话自动注册

描述一种用于为在线通信会话(例如P2P视频会议、P2P即时消 息等)自动注册客户计算设备(“客户设备”)(例如工作站、膝上 型电脑、掌上型电脑、移动电话、智能电话、多媒体电话、平板电脑、 便携式媒体播放器、GPS单元、游戏系统等)的方法和装置。在一个 实施例中,在计算设备的事件(例如计算设备接通电源)之后,客户 设备自动开始用于在线通信会话的注册过程。自动注册过程包括将带 有识别标记(例如SMS消息的推送标记)和客户设备标识符的SMS (短消息服务)消息传输给SMS转接设备(例如SMS网关或SMS 聚合器)。识别标记为在线通信会话消息(例如邀请请求和接受邀请 消息)唯一识别一个客户设备,并且在一个实施例中,识别标记是推 送标记,推送标记能够含有允许推送通知服务定位客户设备的信息。 推送通知服务实施例中的识别标记还被用作一种建立信任的途径,即, 特殊通知是合法的。在其他实施例中,给客户设备注册唯一标记或将 客户设备映射到唯一标记可以用于使识别标记与客户设备相关,并且 用于提供一种使客户设备的身份与唯一的已识别标记相关的可信方 法。设备标识符唯一识别客户设备并且通常是基于一个或多个硬件标 识符(例如设备的序列号,SIM(订户身份模块)卡的ICC-ID(集成 电路卡ID)等)。

SMS转接设备确定客户设备的电话号码(例如通过检查SMS消 息的报头)并且将带有识别标记、设备标识符和电话号码的IP(因特 网协议)消息传输给注册服务器。注册服务器基于识别标记、设备标 识符和电话号码产生签名,并且将这些传输给SMS转接设备以便传送 给客户设备。SMS转接设备将包括签名和电话号码的SMS消息传输 给客户设备。客户设备接着将带有签名、设备标识符、识别标记和电 话号码的IP消息传输给注册服务器。

注册服务器验证来自客户设备的消息并且将识别标记与电话号 码之间的关联存储于在线通信会话注册数据存储器中。识别标记和电 话号码的相关对合在一起唯一识别在线通信会话网络中的设备。在客 户设备已经注册过后,客户设备的用户可以发起和/或接收对在线通信 会话(例如视频聊天/会议会话、即时消息会话等)的邀请。在一个实 施例中,客户设备的电话号码被用作在线通信会话的在线通信会话端 点标识符。通过示例,客户设备的用户可以邀请另一个客户设备(另 一些客户设备)的其他用户(多个其他用户)使用他们的电话号码(多 个电话号码)参与到在线通信会话中。在一些实施例中,客户设备原 本不知道它自己的电话号码。

图1示出根据一个实施例,为在线通信会话注册客户设备的数据 流图。图1包括客户设备110、SMS网络120、注册服务器140和IP 消息数据存储器150。客户设备110(例如工作站、膝上型电脑、掌上 型电脑、计算电话、智能电话、多媒体电话、平板电脑、便携式媒体 播放器、GPS单元、游戏系统等)包括识别标记115(在一个实施例 中识别标记115可以是推送标记)。识别标记115唯一识别客户设备 110以便接收邀请请求和邀请接受(或回绝)消息,在本文后面将更 详细地描述此事。设备标识符117唯一识别客户设备并且通常是基于 一个或多个硬件标识符(例如设备的序列号、SIM(订户身份模块) 卡的ICC-ID(集成电路卡ID)等)。客户设备110包括传输和接收 SMS消息的能力以及连接和发送/接收IP消息的能力。

注册过在线通信会话后,客户设备110可以发起和/或接受对在线 通信会话的邀请。在在线通信会话中通过在线通信会话端点标识符来 识别客户设备110。虽然在一个实施例中在线通信会话端点标识符是 客户设备110的电话号码,但是在其他实施例中在线通信会话端点标 识符是不同的标识符(例如用户名(例如Apple ID)、电子邮件地址、 邮寄地址、MAC地址、或其他标识符)。

SMS网络120包括载体SMSC(短消息服务中心)125和SMS 转接设备130(例如SMS网关或SMS聚合器)。载体SMSC 125是 专用的计算载体并且接收和传送SMS消息。例如,载体SMSC 125 传送从客户设备110发送到SMS转接设备130的SMS消息,还传送 从SMS转接设备130发送到客户设备110的SMS消息。SMS转接设 备130使移动网络与IP网络分开。

注册服务器140为在线通信会话注册诸如客户设备110的客户设 备。为在线通信会话注册客户设备包括使设备的识别标记与设备的电 话号码(或者其他在线通信会话端点标识符)相关。识别标记与在线 通信会话端点标识符之间的关联被存储于在线通信会话注册数据存储 器150中。

在客户设备110处事件发生(例如客户设备接通电源、在线通信 会话应用(例如P2P视频会议应用、P2P即时消息应用等)启动等) 后,客户设备110开始用于在线通信会话的注册过程。在一个实施例 中注册过程自动开始(无用户交互),而在其他实施例中注册过程在 用户选择为在线通信会话注册客户设备之后开始。

在客户设备110的电话号码被用作在线通信会话端点标识符,并 因此在注册数据存储器150中与客户设备110的识别标记115相关的 实施例中,客户设备110的电话号码必须被确定。由于客户设备110 原本不知道它自己的电话号码,因此在一些实施例中,客户设备110 的电话号码通过客户设备110传输SMS消息来确定。例如,在操作1 处,客户设备110将带有其识别标记115和设备标识符117的SMS消 息通过载体SMSC 125传输给SMS转接设备130。在一些实施例中, SMS消息用电话号码寻址,这个电话号码可以是标准长度号码或者短 代码(一种通常显著短于完整电话号码的电话号码类型),这个电话 号码为在线通信会话注册而专门建立。SMS被寻址的电话号码被存储 在客户设备中(例如在载体束(carrier bundle)中)。

载体SMSC 125接收SMS消息并将它传送给SMS转接设备130。 在操作2处,SMS转接设备130确定客户设备的电话号码。例如,SMS 转接设备130检查SMS消息的报头以确定客户设备110的电话号码。 在确定电话号码后,SMS转接设备130将带有客户设备110的电话号 码、识别标记115和设备标识符117的IP消息传输给注册服务器140。 有时将这称为注册请求消息。

注册服务器140接收来自SMS转接设备的包括客户设备110的 电话号码、识别标记115和设备标识符117的IP消息,并产生签名。 签名可以是基于客户设备110的电话号码、识别标记115和/或设备标 识符117,并用于验证目的(本文后面将更详细介绍此事)。在一些 实施例中,当产生签名以说明多个客户设备具有相同电话号码之处的 情形时还使用随机数。在操作5处,注册服务器140将签名、电话号 码、设备标识符和标记传输回到SMS转接设备130(例如在IP消息 中)。有时将这称为注册响应消息。

SMS转接设备130从注册服务器140接收签名、电话号码、设备 标识符和标记,并且产生用于客户设备110的带有签名和电话号码的 SMS消息。在操作6处,SMS转接设备130将带有签名和电话号码的 SMS消息(通过载体SMSC 125)传输给客户设备110。

客户设备110接收和处理包括存储它的电话号码的SMS消息。 在操作7处,客户设备110将带有它的识别标记115、设备标识符117、 它的电话号码和由注册服务器产生的签名的IP消息传输给注册服务 器140。有时将这称为注册验证请求消息。

注册服务器140使用签名来验证通过客户设备110发送的数据。 例如,注册服务器140对通过客户设备110发送的签名与在操作4期 间产生的签名进行比较。如果它们匹配,则数据得到验证。假定数据 是有效的,则注册服务器140将识别标记115与客户设备110的电话 号码之间的关联存储于在线通信会话注册数据存储器150中。

在可选实施例中,设备的用户被提示输入客户设备110的电话号 码,而非通过传输的SMS消息确定客户设备110的电话号码。在这些 实施例中,客户设备110将其电话号码(正如通过用户输入的那样) 及它的识别标记115直接传输给注册服务器140,注册服务器140可 以在在线通信会话注册数据存储器150中使它们相关。

图5示出根据一个实施例的示例性注册数据存储器150。如图5 所示,每个在线通信会话标识符记录510都包括识别标记域520和电 话号码域525。在一些情形下,一个电话号码与多个识别标记相关是 可能的。例如,不同的客户设备可以具有相同的电话号码。在这些情 况下,这些不同的客户设备会具有不同的识别标记。因此,当为与多 个识别标记相关的电话号码发送在线通信会话邀请时,与识别标记相 关的每个设备都将被传输邀请。

图2详细示出根据一个实施例的客户设备110的框图。将参考图 4的示例性实施例描述图2,图4示出用于为在线通信会话注册客户设 备的示例性操作的流程图。然而,应该理解的是,图4的操作能够通 过不同于参考图2讨论的那些实施例的实施例执行,并且参考图2讨 论的实施例能够执行不同于参考图4讨论的那些操作的操作。

如图2所示,客户设备110包括客户在线通信会话注册模块(“客 户注册模块”)210、载体束(多个载体束)215、识别标记115、设 备标识符117、SMS模块220和客户在线通信会话注册数据存储器(“客 户注册数据存储器”)230。客户注册模块210对客户设备110为了在 线通信会话的注册进行控制。载体束(多个载体束)215包括专用于 载体的设置(settings),包括SMS转接设备用于注册的电话号码(例 如用于SMS转接设备130的号码)和其他设置(例如接入点名称(APN) 设置,多媒体消息服务(MMS)设置等)。SMS模块220传输和接 收SMS消息。客户注册数据存储器230存储与在线通信会话注册有关 的数据(例如一旦被确定的客户设备110的电话号码)。

参考图4,在块410处,客户注册模块210检测或接收触发在线 通信会话注册的事件。这种事件的示例包括客户设备110接通电源、 用户打开在线通信应用(例如P2P视频会议应用、P2P即时消息应用 等)等。在一些实施例中,每次客户设备410接通电源时都执行注册 过程,虽然在其他实施例中,客户设备110第一次接通电源时执行注 册过程。流程从块410移动到块415。

在块415处,客户注册模块210确定是否有用于客户设备110的 有效识别标记。如果没有识别标记,或者识别标记已过期,则流程移 动到块425,在块425处采取可选的动作。例如,在使用推送标记的 实施例中,客户设备110能够通过请求由推送通知服务(其通常远离 客户设备110)产生推送标记而发起标记产生程序。推送通知服务产 生专用于客户设备110的推送标记并且将它返回给客户设备110。如 果存在有效的识别标记,则流程移动到块420,在块420处客户注册 模块210存取识别标记115。流程从块420移动到块428。

在块428处,客户注册模块210存取设备标识符117。然后流程 移动到块430,在块430处客户注册模块210确定用于在注册过程中 使用的SMS转接设备的电话号码。例如,客户注册模块210存取载体 束(多个载体束)215以确定SMS转接设备的电话号码。电话号码可 以是短号码或可以是标准长度号码。在这个示例中,用于注册过程的 SMS转接设备是SMS转接设备130。流程从块430移动到块435。

在块435处,具有识别标记115和设备标识符117的SMS消息 被传输给已确定的号码(SMS转接设备130)。例如,客户注册模块 210请求SMS模块220将带有识别标记115和设备标识符117的SMS 消息传输给已确定的号码。SMS模块220将带有识别标记的SMS消 息传输给已确定的号码。流程从块435移动到块440。SMS消息将被 载体SMSC 125接收,载体SMSC 125将它传送给SMS转接设备130。

在块440处,SMS转接设备130基于已接收的SMS消息确定客 户设备110的电话号码。例如,SMS转接设备检查SMS消息的报头, SMS消息的报头将包括发送者的电话号码,在这个情况下发送者是客 户设备110。流程随后移动到块445,在块445处SMS转接设备130 将客户设备110的电话号码、识别标记115和设备标识符117传输给 注册服务器140(例如在安全的IP消息中)。流程从块445移动到块 450。

图3详细示出根据一个实施例的注册服务器140的框图。将参考 图4的示例性实施例描述图3。然而,应该理解的是,能够通过不同 于参考图3讨论的那些实施例的实施例执行图4的操作,并且参考图 3讨论的实施例能够执行不同于参考图4讨论的那些操作的操作。如 图3所示,注册服务器140包括服务器在线通信会话注册模块305, 服务器在线通信会话注册模块305包括SMS转接接口310、签名产生 器315、客户设备接口325、验证模块330、验证数据存储器335和关 联模块340。SMS转接接口310从SMS转接设备130接收消息并且将 消息发送给SMS转接设备130。例如,SMS转接接口310从SMS转 接设备130接收电话号码、识别标记和设备标识符数组(tuple),并 且将电话号码、识别标记、设备标识符和签名数组(有时被称为“验 证数组”)传输给SMS转接接口310。客户设备接口325接收消息并 且可以将消息传输给客户设备。例如,客户设备接口325从客户设备 接收验证数组。

参考返回到图4,在块450处,签名产生器315为它从SMS转接 设备130接收到的电话号码、识别标记和设备标识符数组产生签名。 签名将用于验证电话号码和识别标记的配对,之后将配对存储在注册 数据存储器150中。在一些实施例中,签名是基于电话号码、识别标 记和/或设备标识符(例如,密码无用信息(hash)被应用于电话号码、 识别标记和/或设备标识符、或其某些部分,以产生签名)。在一些实 施例中,签名还基于随机数,以解决多个客户设备具有相同电话号码 的情形。签名产生器315将签名和可选的电话号码、识别标记和/或设 备标识符存储在验证数据存储器335中。流程接着移动到块455,在 块455处SMS转接接口310将签名、电话号码、设备标识符和识别标 记传输给SMS转接设备130。流程从块455移动到块460。

SMS转接设备130从注册服务器140接收签名、电话号码和识别 标记。在块460处,SMS转接设备为客户设备110传输带有签名和电 话号码的SMS消息(通过载体SMSC 125)。流程接着移动到块465。

在块465处,SMS模块220接收带有签名和电话号码的SMS消 息并将签名和电话号码存储在客户注册数据存储器230中。之后流程 移动到块470,在块470处客户注册模块210将带有它的电话号码、 识别标记115、设备标识符117和签名的IP消息传输给注册服务器。 之后流程移动到块475。

客户设备接口325从客户设备接收电话号码、识别标记、设备标 识符和签名。在块475处,该信息被传递给确定数据是否有效的验证 模块330。例如,与产生签名时所应用的相同的无用信息函数(hash function)被用在从客户设备接收的电话号码、识别标记和/或设备标 识符上,并且验证模块330对结果与之前产生的(存储在验证数据存 储器335中的)签名进行比较。如果签名匹配,则数据是有效的,并 且流程移动到块480。

在块480处,注册服务器140的关联模块340将客户设备的电话 号码与客户设备的识别标记之间的关联存储在注册数据存储器150 中。在一些实施例中,注册服务器140可以将注册状态消息传输给客 户设备110,提醒客户设备110注册是否成功。

客户设备已经注册过之后,客户设备的用户可以发起和/或接受对 在线通信会话的邀请(例如视频聊天/会议会话、即时消息会话等)。 通过示例,客户设备的用户可以邀请其他客户设备(多个其他客户设 备)的其他用户(多个其他用户)使用他们的电话号码(多个电话号 码)参与到在线通信会话中。在一些实施例中,客户设备原本不知道 它自己的电话号码。虽然实施例已经描述了注册期间SMS消息的使 用,但是在其他实施例中,也可以使用其他类型的文本消息(例如 MMS(多媒体消息业务))。

为在线通信会话注册电子邮件地址

虽然关于将电话号码注册为在线通信会话端点标识符描述了图 1,但是在其他实施例中,将电子邮件地址用作在线通信会话端点标识 符。图21示出使用电子邮件地址作为在线通信会话端点标识符、为了 在线通信会话而用于注册客户设备的常规网络拓扑。客户设备 2110A-N为了在线通信会话而使用注册服务2130来注册。例如,在一 个实施例中,客户设备2110A的用户使用在线通信会话客户2115来 注册电子邮件地址,以便为了在网络2180(例如因特网)上在线通信 而用作在线通信会话标识符。

图22A-B示出根据一个实施例,用于将电子邮件地址注册为在线 通信会话端点标识符的示例性操作的流程图。将参考图21中示出的示 例性实施例描述图22A-B。然而,应该理解的是,可以通过不同于参 考图21讨论的那些实施例的实施例来执行图22A-B的操作,并且参 考图21讨论的实施例能够执行不同于参考图22A-B讨论的那些操作 的操作。

在操作2210处,注册服务2130接收来自客户设备2110A的认证 请求。例如,参考描述用于用户提供初始化信息的示例性操作的图23, 在操作2310处,在线通信会话应用2115在客户设备2110A上被起动 (启动,start)。流程接着移动到操作2315并且客户设备2110A接 收来自用户的输入,包括用于注册的用户ID和口令和一个或多个电子 邮件地址,以便用作在线通信会话端点标识符(多个在线通信会话端 点标识符)。流程接着移动到操作2320并且客户设备2110A将用户 ID和口令传输给注册服务2130。

虽然客户设备2110A正在将电子邮件地址注册为在线通信会话 端点标识符并且可以不包括电话功能,但是它可以使用电话号码而不 是电子邮件地址发送在线通信会话邀请。除了接收用于注册的用户 ID、口令和一个或多个电子邮件地址之外,在一些实施例中,用户还 能够提供关于他们当前位于什么国家和/或区域的信息,从而如果用户 对不包括国家代码和/或区域代码的电话号码发起在线通信会话,则可 以使用相应的国家代码和/或区域代码。例如,在美国,可以使用7位 数设置本地电话呼叫(因此不需要国家代码和区域代码)。潜在的电 话系统自动确定国家和区域代码并且完成呼叫。然而,在客户设备 2110A不包括电话功能的情况下,当使用不包括国家代码和/或区域代 码的电话号码邀请用户至在线通信会话时,客户设备2110A不能依赖 潜在的电话系统来自动包括国家代码和/或区域代码。

在操作2320处,客户设备2110A接收来自用户的关于他们位于 什么国家和/或区域(例如地区代码、州、省、市等)的输入。之后流 程移动到操作2320,在操作2320处客户设备2110A使相应的国家和/ 或区域电话代码与在线通信会话应用(应用程序,application)2115 相关,以便如果用户对不包括国家代码和/或区域代码的电话号码发起 在线通信会话时使用。例如,如果用户指出他们位于美国并且用户使 用不包括国家代码的10位数电话号码来邀请用户至在线通信会话,则 客户设备2110A自动给电话号码添加用于美国的国家代码。

参考回到图22A,在接受到来自客户设备2110A的认证请求后, 使用所提供的用户名和口令来执行认证过程。在一个实施例中,注册 服务2130执行认证过程,而在另一个实施例中,用户号码薄服务2160 执行认证过程。用户号码薄服务2160是提供用户记账、认证和其他服 务的集中式服务。用户号码薄服务2160对用户记录2165进行管理。 在一个实施例中,每个被认证的用户都与包括不同信息(例如,一个 或多个用户ID、口令、邮寄地址、电话号码、名字、生日、国家、与 用户相关的电子邮件的列表(其还可以指出电子邮件地址是否得到验 证))在内的用户记录相关。如果认证成功,则流程移动到操作2216。 如果认证失败,则流程移动到操作2214并且采取可选的动作(例如注 册服务2130将指出用户名和/或口令不正确的错误消息传输给客户设 备2110A)。

在操作2216处,注册服务2130产生和/或存取与用户ID相关的 在线通信会话简档(profile)。例如,注册服务2130可以包括对在线 通信会话简档记录2150进行管理的在线通信会话记账服务器2140。 在一个实施例中,为了在线通信会话而正在注册或注册过的每个用户 都具有相应的在线通信会话简档记录。每个在线通信会话简档记录都 可以包括与简档相关的、包括它们的验证状态的一组一个或多个电子 邮件地址。每个在线通信会话简档记录还可以包括分别相应于为了在 线通信会话而注册的一个或多个客户设备的一个或多个推送标记。每 个简档记录还可以包括用于验证来自客户设备的某些通信的简档证书 (credential)。每个简档记录还可以指出哪个客户设备(如推送标记 指出的)已经注册过或者正在试图注册哪个电子邮件地址。

流程从操作2216移动到操作2218并且注册服务2130将包括简 档ID(例如识别与所提供的用户ID相关的简档的字符串)和简档证 书的认证答复传输给客户设备2110A。认证答复还可以指出认证是成 功的。之后流程移动到操作2220并且注册服务2130接收来自客户设 备2110A的电子邮件验证请求,该请求包括用于验证的一个或多个电 子邮件地址、简档ID、简档证书和客户设备2110A的推送标记。电子 邮件验证请求消息还可以包括客户设备2110A的设备ID。注册服务 2130随后在操作2222处确定用于简档ID的简档证书是否有效。如果 它们是无效的,则流程移动到操作2224并且采取可选的动作(例如注 册服务2130将错误消息传输给客户设备2110A)。如果它们的简档证 书有效,则流程移动到操作2223。在操作2223处,注册服务2130使 推送标记与简档相关。例如,在线通信会话记账服务器2140将推送标 记存储在用于用户的简档记录中。

流程之后移动到操作2226并且注册服务2130确定电子邮件地址 是否得到验证。被验证的电子邮件地址是已经被验证为属于用户请求 的电子邮件地址,该用户请求将该电子邮件地址注册成用作在线通信 会话端点标识符。在线通信会话记账服务器2140存取用户的简档记录 2150以确定电子邮件地址是否得到验证。如果简档记录未指出电子邮 件地址得到验证,则在一些实施例中,注册服务2130将电子邮件地址 验证请求传输给用户号码薄服务2160,以确定用于用户的用户记录 2165是否指出电子邮件地址得到验证。如果电子邮件地址未得到验证, 则流程移动到操作2227并且注册服务2130使验证电子邮件消息被发 送至包括一个链接的电子邮件地址,当该链接被选择时(或者当被输 入到因特网浏览器中时)会使电子邮件地址被验证。例如,选择链接 使包括电子邮件地址和用于验证电子邮件地址的验证标记的电子邮件 地址验证消息被发送。注册服务2130还可以将电子邮件地址需要验证 消息传输给客户设备,该消息指出电子邮件地址未得到验证(并因此 需要被验证)并且还可以指出验证电子邮件消息被发送给待查的电子 邮件地址。流程随后移动到操作2410,将参考图24描述操作2410。 然而,如果电子邮件地址得到验证,则流程移动到操作2228。

在操作2228处,注册服务2130将指出出电子邮件地址已经得到 验证的电子邮件地址验证成功消息传输给客户设备2110A。之后流程 移动到操作2230并且注册服务2130接收来自客户设备2110A的激活 电子邮件请求,该请求包括电子邮件地址、简档ID和简档证书。注册 服务2130随后在操作2232处确定简档证书对于简档ID是否有效。如 果它们不是有效的,则流程移动到操作2224并且采取可选的动作(例 如注册服务2130将错误消息传输给客户设备2110A)。如果它们的简 档证书有效,则流程移动到操作2240。

在操作2240处,注册服务2130产生或存取用于电子邮件地址的 电子邮件证书。例如,在一个实施例中,在线通信会话记账服务器2140 将用于用户的每个已验证的电子邮件地址的电子邮件证书存储在该用 户的简档记录2150中。流程接着移动到操作2242并且注册服务2130 将包括电子邮件地址和电子邮件证书的激活成功消息传输给客户设备 2110A。

流程从操作2242移动到操作2244并且注册服务2130接收注册 请求消息,该消息包括电子邮件地址、电子邮件证书、简档ID、简档 证书、客户设备2110A的推送标记和客户设备2110A的设备ID。在 一个实施例中,于在线通信会话注册服务器2145处接收请求消息。在 线通信会话注册服务器对在线通信会话注册数据存储器2155进行管 理。在线通信会话注册数据存储器2155使推送标记(和可选的设备 ID)与简档相关,该简档具有一组一个或多个电子邮件地址作为在线 通信会话端点标识符(多个在线通信会话端点标识符)。因此,在线 通信会话注册数据存储器2155中的每个记录都代表带有特殊推送标 记的特殊设备正在使用具有一个或多个电子邮件地址的在线通信会话 简档,这些电子邮件地址能够用于邀请该设备的用户至在线通信会话。 流程从操作2244移动到操作2246。

在操作2246处,注册服务2130(例如在线通信会话注册服务器 2145)确定简档证书是否有效。如果它们不是有效的,则流程移动到 操作2250并且采取可选的动作(例如注册服务2130将错误消息传输 给客户设备2110A)。如果它们是有效的,则流程移动到操作2248并 且注册服务2130(例如在线通信会话注册服务器2145)确定电子邮件 地址是否有效。如果它们不是有效的,则流程移动到操作2250。如果 它们是有效的,则流程移动到操作2252。

在操作2252处,注册服务2130(例如在线通信会话注册服务器 2145)使带有其推送标记的客户设备2110A与具有电子邮件地址的简 档相关并且将关联存储在注册数据存储器2155中。流程随后移动到操 作2254,并且注册服务2130产生在线通信会话记账标识符和在线通 信会话证书并在操作2256处将它们传输给客户设备2110A。

在不同实施例中有用于验证电子邮件地址的不同方式。参考图 24,图24示出用于验证电子邮件地址的示例性操作的流程图,在操作 2410处客户设备2110A确定它是否包括电子邮件客户,该电子邮件客 户包括用于已经试图注册并且尚未接收到肯定的验证电子邮件消息的 电子邮件地址的账户。如果它不包括这种电子邮件客户,则流程移动 到操作2440,否则流程移动到操作2415。

在操作2415处,为验证电子邮件消息(例如在操作2227中传输 的验证电子邮件消息)自动定期核查电子邮件账户。在一个实施例中, 在线通信会话应用2115定期请求电子邮件客户2120核查验证电子邮 件(电子邮件客户2120可以投票(poll)电子邮件服务器2170来核查 验证电子邮件而核查)。通过一组一个或多个标准来识别验证电子邮 件消息,这些标准包括From:field、To:field和用于验证电子邮件地址 的验证标记(对于每个被验证的电子邮件地址而言验证标记可以是唯 一的)。验证标记可以位于验证电子邮件消息的报头或正文中。如果 接收到验证电子邮件消息,则流程从操作2420移动到操作2425,否 则流程移动到操作2435。

在操作2425处,验证电子邮件消息被返回给在线通信会话应用 2115并且它分析消息以便定位验证标记。定位验证标记后,在线通信 会话应用2115将带有验证标记、电子邮件地址、简档ID和简档证书 的电子邮件地址验证消息传输给注册服务2130。因此在这个实施例中, 电子邮件地址被自动验证而不要求用户点击链接或者验证电子邮件地 址。在一个实施例中,在接收到消息并且确定简档证书有效之后,注 册服务2130将指出已经成功验证了电子邮件地址的电子邮件验证推 送消息(经由推送通知服务640)传输给设备。因此,流程从操作2425 移动到操作2430并且客户设备2110A等待接收电子邮件地址验证推 送消息。

如果验证电子邮件消息尚未接收到,则流程移动到操作2435,客 户设备在操作2435处确定是否已经接收到指出正在试图注册的电子 邮件地址已经得到验证的电子邮件验证推送消息。如果接收到这种消 息,则流程移动到操作2445,否则流程移动回到操作2415。

在操作2440处(客户设备2110A不包括电子邮件客户,该电子 邮件客户包括用于正在被注册的电子邮件地址的账户),客户设备 2110A等待接收已经接收到的电子邮件验证推送消息,该消息指出正 在试图注册的电子邮件地址已经得到验证。如果接收到这种消息,则 流程移动到操作2445,否则流程留在操作2440处。

在操作2445处,客户设备2110A显示电子邮件地址已经得到验 证,并且询问用户利用该电子邮件地址继续注册过程。如果客户设备 2110A接收到指出继续注册过程的输入,则流程移动到操作2455并且 客户设备2110A将包括电子邮件地址、简档ID和简档证书的激活电 子邮件请求传输给注册服务器。然后执行在图22的操作2230处开始 描述的操作。如果客户设备2110A接收到指出用户不想继续注册过程 的输入,则流程从操作2450移动到操作2460并且过程退出。

图25示出根据一个实施例,当已经电子邮件地址得到验证时在 注册服务上执行的示例性操作的流程图。在操作2510处,注册服务 2130接收到指出与在线通信会话简档相关的电子邮件地址已经得到验 证的电子邮件地址验证状态消息。电子邮件地址验证状态消息作为操 作2425的结果可能已经被接收到,或者作为电子邮件地址以不同方式 (例如,用户在验证电子邮件消息中的使电子邮件地址被验证的验证 链接上点击,该链接可以在与正在试图注册电子邮件地址以便用于在 线通信会话的设备不同的设备上被发送)被验证的结果已经被接收到。

流程接着移动到操作2515并且注册服务2130对简档记录2150 中用于电子邮件地址的验证状态进行更新。之后流程移动到操作2515 并且注册服务2130确定是否有与已经要求验证电子邮件地址(其尚未 接收到电子邮件地址验证消息)的在线通信会话简档相关的客户设备。 例如,注册服务2130为了在线通信会话简档而存取简档记录2150以 确定哪个客户设备(例如通过惟一的推送标记识别的)已经要求验证 电子邮件地址以及哪个尚未接收到用于该电子邮件地址的电子邮件地 址验证消息。对于每个这种客户设备,注册服务都将包括简档ID、简 档证书和在操作2525处已经得到验证的电子邮件地址的电子邮件验 证推送消息传输给该客户设备。电子邮件验证推送消息还可以包括状 态更新以指出电子邮件地址已经得到验证。如果没有已经要求验证尚 未接收到电子邮件地址验证消息的电子邮件地址的设备,则流程移动 到操作2530并且过程退出。

建立在线通信会话

如图6所示,在一个实施例中实施的常规网络拓扑能够分别包括 相互之间、通过网络660与一个或多个服务610、620、630、640和 650通信的多个客户设备A-N,670A-N。虽然被示出为一个网络云, 但是网络660能够包括许多不同的组件,包括诸如因特网的公共网络 和诸如本地Wi-Fi网络(例如802.11n家庭无线网络或无线热点)、 局域以太网、蜂窝数据网络(例如3G、4G、Edge等)和WiMAX网 络(只列出几个)的私人网络。客户设备670A-N可以通过不同的网 络链接连接到网络660。例如客户设备670A可以被连接到由网络链接 675A代表的家庭Wi-Fi网络,而客户设备670N可以通过网络链接 675N被连接到3G网络(例如通用移动通信系统(“UMTS”),高 速上行链路分组接入(“HSUPA”)等)。客户设备670A-N通过其 被连接的网络链接675A-N的每个都可以通过网关和/或NAT(网络地 址翻译)设备(图6中未示出)被耦接到诸如因特网的公共网络,由 此能够通过公共网络在不同的客户设备670A-N之间通信。然而,如 果两个客户设备处在同一个本地或私人网络(例如同一个Wi-Fi网络) 上,则两个设备可以绕过公共网络在该本地/私人网络上直接通信。当 然,应该理解的是,本发明潜在的原理不限于网络类型或网络拓扑的 特殊集合。

客户设备670A-N的每个都可以与连接数据交换(CDX)服务610、 邀请服务620、注册服务630、推送通知服务640和中继服务650通信。 在一个实施例中,能够将服务610-650实施为在诸如服务器的一个或 多个物理计算设备上执行的软件。

在一个实施例中,CDX服务610操作为用于在两个或更多个客 户设备之间建立在线通信会话所需的连接数据的中心交换点。具体来 说,CDX服务610的一个实施例响应于客户设备请求能够使外部服务 和客户通过每个客户设备的NAT进行通信(即通过NAT“打个孔” 以到达设备)而产生NAT穿越数据(有时被称为“穿孔(Hole Punch)” 数据)。例如,在一个实施例中,CDX服务检测与客户设备通信所需 的外部IP地址和端口,并且将这个信息提供给客户设备。在一个实施 例中,CDX服务还接收和处理由邀请服务620产生的客户设备列表, 并且将连接数据有效安全地分配给列表上包括的每个客户设备(如下 详述)。

客户设备670A-N的用户使用邀请服务620来邀请用户参与到合 作的在线通信会话(例如P2P视频会议、P2P即时消息聊天/会议等) 中。例如,客户设备670A的用户通过将包括每个其他用户的在线通 信会话端点标识符的邀请请求传输给邀请服务620,请求与一个或多 个不同客户设备的一个或多个用户在线通信会话。在线通信会话端点 标识符在不同实施例中可以不同(例如电话号码、用户名(例如Apple ID)、电子邮件地址、邮寄地址、MAC地址、或其他标识符)。邀 请服务620从邀请请求读取在线通信会话端点标识符(多个在线通信 会话端点标识符),并且在注册数据存储器655中执行查找,以定位 与在线通信会话端点标识符(多个在线通信会话端点标识符)相关的 客户设备(多个客户设备)。

客户设备670A-N使用注册服务630来注册在线通信会话。例如, 在一个实施例中,当客户设备670A-N的每个都接通电源并且在网络 上被激活时,它使它的识别标记(例如它的推送标记)与在线通信会 话端点标识符相关。关联被存储在注册数据存储器655中。在一个实 施例中,客户设备670A-N使用关于图4描述的注册服务630进行注 册,以便参与在线通信会话服务,而在其他实施例中,注册过程发生 得不一样(例如通过提供它们的推送标记和它们的在线通信会话端点 标识符两者)。

推送通知服务640使用客户设备670A-N的推送标记将推送通知 传输给客户设备670A-N。在一个实施例中,推送通知用于为在线通信 会话传输邀请。当客户设备的NAT类型不兼容或者客户设备之间的 P2P连接建立失败时,中继服务650在客户设备之间建立在线通信会 话连接。

在一个实施例中,使用诸如用户数据报协议(“UDP”)套接字 (packet)的相对轻量(ligheweight)的网络协议建立客户设备与CDX 设备610之间的通信。正如本领域技术人员所知的那样,UDP套接字 连接不需要用于保证包可靠性、排序、或数据完整性的握手对话,并 因此不消耗象TCP套接字连接那么多的包处理费用(overhead)。从 而,UDP的轻量、无状态本质(stateless nature)对于回答来自巨大 数量客户的小询问的服务器是有用的。此外,与TCP不同,UDP与 包广播(在包广播中包被发送给本地网络上的所有设备)和多点传送 (在多点传送中包被发送给本地网络上设备的子集)兼容。如下所述, 即使可以使用UDP,也能够通过使用会话密钥加密NAT穿越数据而 在CDX服务610上维持安全性。

与CDX服务610使用的低费用、轻量网络协议相对照,在一个 实施例中,利用诸如安全超文本传输协议(“HTTPS”)的本质安全 的网络协议(inherently secure network protocol)建立客户设备 670A-N与邀请服务620、注册服务630、推送通知服务640和/或中继 服务650之间的通信,本质安全网络协议依赖于安全套接层(“SSL”) 或传输层安全(“TLS”)连接。与这些协议相关的细节是本领域技 术人员熟知的。

图7示出根据一个实施例,在客户设备之间建立在线通信会话的 数据流图。在图7的示例中,客户设备A 710的用户邀请客户设备B 720 的用户至在线通信会话(例如P2P视频会议、P2P即时消息系统等)。 在这个示例中,客户设备A 710有时被称为发起客户设备,客户设备 B 720的用户有时被称为预期接收者,并且客户设备B 720有时被称为 预期接收者客户设备。在一些实施例中,在线通信会话邀请是不出现 的盲邀请(blind invitation)。例如,客户设备A 710的用户不知道客 户设备B 720的用户当前是否在线或者有空参与到在线通信会话中。

虽然参考图6和7描述的实施例专用于使用推送标记和推送通 知,但是其他实施例不受到这样的限制。例如,在其他实施例中,客 户设备对唯一标记的任何注册或映射都可以用于使识别标记与客户设 备相关,并且用于提供使客户设备的身份与唯一的已识别标记相关的 可信方法。

在操作1处,客户设备A 710从连接数据交换610要求请求其连 接数据。连接数据包括用于客户设备彼此交换以便建立在线通信会话 (例如P2P会话)的信息。连接数据包括客户设备的IP地址(例如 公共IP地址)、请求的端口数量和其他信息(例如优先权信息等)。 连接数据交换610确定客户设备A 710的连接数据(例如公共/私人IP 地址和端口,客户设备A 710的NAT设备的NAT类型)。在操作2 处,连接数据交换610将连接数据返回给客户设备A 710。

在操作3处,客户设备A 710将在线通信会话邀请请求传输给邀 请服务620以邀请客户设备B 720至在线通信会话(例如P2P视频会 议、P2P即时消息会话等)。在一个实施例中,邀请包括客户设备A 710 的连接数据和在线通信会话端点标识符,客户设备A 710的连接数据 可以包括用于客户设备A 710的公共/私人IP地址和端口和用于客户 设备A的NAT设备的NAT类型,在线通信会话端点标识符与客户设 备B 720的用户相关(例如客户设备B 720的电话号码、用户的用户 名(例如Apple ID)、电子邮件地址、邮寄地址、MAC地址等)。 在线通信会话邀请请求可以采取HTTPS请求的形式并且可以包括由 预先规定的认证机构签发的客户证书。

在操作4处,邀请服务620确定与包括在操作3的请求中的在线 通信会话端点标识符相关的推送标记(多个推送标记)。例如,邀请 服务620存取注册数据存储器655以确定与在线通信会话端点标识符 相关的推送标记(多个推送标记)。如图7所示,推送标记725被分 配给客户设备B 720并因此与它的在线通信会话端点标识符相关。图 10示出根据一个实施例的示例性注册数据存储器655。如图10所示, 每个在线通信会话端点标识符记录1010都包括推送标记域1015和在 线通信会话标识符域1020。如图10所示,同一个在线通信会话标识 符可以与多个推送标记相关。在这种情况下,将传输多个邀请(例如 每个推送标记一个)。

邀请服务620将推送请求消息传输给推送通知服务640。在操作 5处,推送通知服务640以推送通知消息的形式将在线通信会话邀请 请求传输给客户设备B 720。请求包括连接数据、在线通信会话端点 标识符和客户设备A 710的推送标记(推送标记715)。邀请请求还 可以包括专用于在线通信会话的信息,以便给客户设备B 720的用户 提供关于邀请(例如用户名、真实姓名、电话号码、或其一些组合)、 邀请的目的(例如P2P视频会议,P2P即时消息会话等)的信息。

在线通信会话邀请请求将被接收到并显示在客户设备B 720上, 如果它被接通并且正确地操作。邀请请求包括用户接受或拒绝邀请的 机构(例如接受按钮和拒绝按钮)。如果邀请请求被回绝,则客户设 备A 710的用户可以接收通知。假设客户设备B 720的用户接受了邀 请请求,则在操作6处,客户设备B 720从连接数据交换610请求其 连接数据。连接数据交换610确定客户设备B 720的连接数据(例如 公共/私人IP地址和端口、客户设备B的NAT设备的NAT类型), 并且在操作7处,将连接数据返回给客户设备B 720。

客户设备B 720接下来在操作8处将接受消息传输给邀请服务 620。接受消息包括客户设备B 720的连接数据并且还包括客户设备A 710的推送标记。接受消息还可以含有关于它是否是从之前的客户设 备A 710与客户设备B 720之间失败的直接P2P连接尝试的重发的指 示。接受消息能够采取HTTPS消息的形式。

在一些实施例中,邀请服务620确定客户设备A 710与客户设备 B 720之间的P2P连接是否可行。在操作9处,邀请服务620确定客 户设备A和B之间的直接P2P连接是否可行。例如,在一个实施例中, 如果从客户设备B 720接收的接受消息指出它是来自之前失败的直接 连接尝试(或规定次数的之前失败的直接连接尝试)的重发,则邀请 服务620可以推断直接P2P连接是不可行的。为了确定可行性,邀请 服务620可以比较用于客户设备A和B的NAT类型数据,以确定客 户设备A和B的NAT设备是否将支持直接P2P连接。在一个实施例 中,上述接受消息不包括之前失败的尝试的指示。而是,在失败的直 接连接尝试之后,客户设备710-720中的任何一个都可以传输指出需 要中继连接的专门的“中继邀请”请求(例如代替图7中操作3处的 邀请请求)。作为响应,邀请服务可以自动调用本文描述的中继操作 (如下所述)。

已知NAT类型的某些组合对建立P2P连接是不兼容的。例如, 完全锥形NAT可以被除了关闭的(closed)/防火墙的NAT之外的任 何其他NAT类型用来建立直接P2P连接。通过对比,对称的NAT只 能够被完全锥形NAT用来建立直接P2P连接。在一个实施例中组合 不同NAT类型的可行性在图11所示的NAT兼容性表1110中被阐明, 在表1110中列表示一个客户设备(例如客户设备A 710)的NAT类 型,而行表示另一个客户设备(例如客户设备B 720)的NAT类型。 格中的“1.0”指出相关的行和列中的NAT类型是兼容的而“0.0”指 出NAT类型是不兼容的。

如果邀请服务620确定直接P2P连接是可行的,则邀请服务620 将推送请求传输给推送通知服务640,以传输对邀请请求的接受。因 此在操作10B处,推送通知服务640将推送通知形式的在线通信会话 接受消息传输给客户设备A 710。接受消息包括客户设备B 720的连 接数据、在线通信会话端点标识符和推送标记。接受消息将被显示在 客户设备A 710上。由于客户设备A和B具有彼此的连接数据,因此 客户设备A和B具有足够的信息来建立直接P2P连接。因此在操作 11A处,客户设备A和B使用已交换的连接数据建立直接P2P连接。 可以通过已知的机构(例如使用互连式连接建立(ICE)或其他已知 的P2P连接机构)建立直接P2P连接。

然而,如果邀请服务620确定直接P2P连接不可行,则它在操作 10B处将中继查找请求传输给中继服务650,以为客户设备A和B确 定用于连接的一个或多个中继主机。中继查找请求可以含有用于客户 设备A和B的联网信息(例如NAT穿越/连接数据和/或NAT类型数 据),该信息被中继服务650用于为两个客户设备选择适当的中继主 机。

如图8所示,在一个实施例中,中继服务650包括中继查找模块 805、多个中继主机815A-B和含有与每个中继主机815A-B有关的网 络信息的中继主机数据库810。虽然图8示出两个中继主机,但是应 该理解在一些实施例中可以有更多或更少的中继主机。邀请服务620 将中继查找请求传输给中继查找模块805,中继查找模块805使用用 于客户设备A和B的网络信息来询问中继主机数据库810。接收到数 据库结果之后,中继查找模块805在操作11B处将识别选定中继主机 815A-B的响应提供给邀请服务620。

在一个实施例中,中继查找响应含有由中继服务650产生的中继 标记和选定中继主机815A-B的网络地址(IP地址/端口),该网络地 址被客户设备A和B用于中继连接。在一个实施例中,中继标记与中 继会话相关并且被中继主机815A-B用于在连接到中继服务650之后 认证客户设备A和B。标记可以采取各种形式,包括例如:唯一的ID 中继会话ID代码、与中继会话相关的数字证书和/或唯一的加密密钥。

邀请服务620将指出将进行中继连接的中继响应传输给客户设备 A和B。在一个实施例中,对客户设备B的中继响应可以包括用于中 继主机815B的中继标记和网络信息。在一个实施例中,可以直接发 送对客户设备B的响应(绕过推送通知服务640),因为它是响应于 客户设备B的邀请接受消息而被发送的。邀请服务620还传输对客户 设备A的中继响应,该响应可以包括用于中继主机815A的中继标记 和网络信息。在这个实例中,响应经由推送通知服务640被推送给客 户设备A。

在操作12B处,客户设备A 710使用用于中继主机815A的网络 信息来建立与中继服务650的连接。同样,在操作13B处,客户设备 B 720使用用于中继主机815B的网络信息来建立与中继服务650的连 接。在这些业务的每个当中,客户设备A和B的任何NAT防火墙中 都打开新的洞(hole),并且用于客户设备A和B的NAT穿越/连接 数据可以由中继服务650确定并且分别返回给客户设备A和B(例如 通过确定用于设备的公共IP/端口)。在一个实施例中,中继服务650 与客户设备A和B实施利用中继NAT穿越(“TURN”)协议,正 如本领域技术人员理解的那样,该协议允许NAT或防火墙后面的元素 (Element)通过TCP或UDP连接而接收进入数据。

在操作14B处,客户设备A 710将中继更新传输给邀请服务620, 该更新在操作17B处被转送给推送通知服务并且被推送给客户设备B 720。同样,在操作15B处,客户设备B 720将中继更新传输给邀请服 务620,该更新在操作16B处被转送给推送通知服务620并且被推送 给客户设备A 710。通过客户设备A 710传输的中继更新能够包括会 话标记、每个设备的在线通信会话端点标识符和由中继服务650确定 的NAT穿越/连接数据。

在操作18B和19B处,客户设备A和B通过中继服务650分别 建立在线通信会话连接。在一个实施例中,在客户设备A 710将客户 设备B 720的NAT穿越/连接数据发送给中继服务650时能够建立中 继连接,反之亦然,由此允许中继服务确定去每个同位体的中继主机 815A-B的正确路径。

使用上述技术,可以将邀请服务620实施为无状态服务,无状态 服务本质上是可升级(scalable)和能复原的,即使在具有巨大数量客 户设备的大规模系统中也是如此。例如,因为推送通知服务640本质 上能够定位已注册客户设备并且将内容推送给已注册客户设备,所以 不需要邀请服务620跟踪每个设备的当前位置。此外,因为设备能够 传输带有请求和响应的NAT穿越/连接数据,所以不再需要邀请服务 620维持任何在先连接状态信息,由此减少了邀请服务的存储和处理 需求。在大规模系统中这种实施方式是特别有用的。

虽然图7描述了客户设备的用户邀请单个用户至在线通信会话, 但是实施例不受到这样的限制。例如,在一些实施例中,客户设备的 用户可以邀请多个用户至在线通信会话。例如,用户可以将具有多个 在线通信会话端点标识符的一个邀请请求消息传输给邀请服务,以邀 请不同客户设备的多个用户参与到在线通信会话中。

在一些情形下,用户可以具有与同一个在线通信会话端点标识符 相关的多个用户设备。图26示出当用户具有与同一个在线通信会话端 点标识符相关的多个客户设备时,用于管理邀请的示例性操作的数据 流图。

在操作2632处,(通过用户A操作的)客户设备A 2610为其连 接数据从连接数据交换610传输请求。在操作2634处,连接数据交换 610返回客户设备A的连接数据。之后客户设备将与用户ID B的在线 通信会话邀请请求传输给邀请服务620,以邀请用户B至在线通信会 话(例如P2P视频会议、P2P即时消息会话、视频呼叫等)。邀请请 求包括A的连接数据。

在操作2638处,邀请服务基于包括在邀请请求消息中的B的ID 而执行号码簿查找。在这个示例中,号码簿查找操作返回用于客户设 备B1的推送标记和用于客户设备B2的推送标记。因此,客户设备 B1和B2都与B的ID相关。在操作2640处,邀请服务620接下来将 推送请求消息传输给推送通知服务640,以将邀请请求消息推送给客 户设备B1 2615和客户设备B2 2620。推送通知服务640在操作2642 处将推送通知消息形式的在线通信会话邀请请求传输给客户设备B1 2615,在操作2644处将推送通知消息形式的在线通信会话邀请请求传 输给客户设备B2 2620。每个邀请请求消息都包括客户设备A 2610的 连接数据、用户A使用的在线通信会话端点标识符和客户设备A 2610 的推送标记。邀请请求还可以包括专用于在线通信会话的信息(例如 发送邀请者的名字(例如用户名、真实姓名、电话号码、或其一些组 合),邀请的目的(例如P2P视频会议、P2P即时消息会话等)等)。 因此,在线通信会话邀请请求被发送给与包括在原始邀请请求中的在 线通信会话端点标识符相关的每个设备。

在一个实施例中,邀请服务620将状态消息传输给邀请客户设备 以指出邀请被传输给哪个客户设备(哪些客户设备)。因此,在操作 2646处,邀请服务620将邀请状态更新传输给客户设备A 2610,该更 新指出在线通信会话邀请请求被发送给客户设备B1 2615和客户设备 B2 2620。在一个实施例中,客户设备A 2610对哪个客户设备接受邀 请进行跟踪并且告知其他客户设备在线通信会话的状态。

在一个实施例中,客户设备B1 2615和客户设备B2 2620将显示 邀请请求,如果它们接通了电源并且能够接收邀请请求。在图26中示 出的示例中,客户设备B1 2615的用户将接受邀请。因此在操作2648 处,客户设备B1 2615从连接数据交换610请求其连接数据。连接数 据交换610确定客户设备B1 2615的连接数据并且在操作2650处将它 返回给客户设备B1 2615。

之后在操作2652处,客户设备B1 2615将接受消息传输给邀请 服务620。接受消息包括客户设备B1 2615的连接数据和客户设备A 2610的推送标记。接受消息还可以含有关于它是否是从之前客户设备 A 2610与客户设备B1 2615之间失败的直接P2P连接尝试的重发的指 示。另外,接受消息还可以包括A和B的在线通信会话端点标识符和 用于客户设备B1 2615的推送标记。

在一些实施例中,接收到对在线通信会话的接受消息后,邀请服 务620确定直接P2P连接是否可行。因此,在操作2654处,邀请服 务620按照类似于之前描述的方式执行直接P2P兼容性检查以确定客 户设备A 2610和客户设备B1 2615之间的直接P2P连接是否可行。如 果客户设备对于直接P2P连接可兼容,则执行参考图27描述的操作 (开始于操作2710)。如果客户设备对于直接P2P连接不兼容,则执 行参考图28描述的操作(开始于操作2810)。

参考图27,图27示出当直接P2P连接可行时执行的操作,在操 作2710处,邀请服务620将推送请求传输给推送通知服务640以传输 客户设备B1 2615对邀请的接受。在操作2712处,推送通知服务640 将推送通知形式的在线通信会话接受消息传输给客户设备A 2610。这 个接受消息包括客户设备B1 2615的连接数据和推送标记和用户B使 用的在线通信会话端点标识符。

在一个实施例中,在接收到指出客户设备B1 2615已经接受邀请 的接受消息之后的某个时间,客户设备A 2610通知客户设备B2 2620: 客户设备A 2610已经接受邀请。因此,在操作2714处,客户设备A 2610 将包括用户B的在线通信会话端点标识符的邀请更新请求传输给邀请 服务,并且指出客户设备B1 2615已经接受邀请。邀请更新请求还可 以命令邀请服务620或向邀请服务620指出:与用户B的在线通信会 话端点标识符相关的哪个客户设备应该接收邀请更新消息(在这个示 例中,客户设备B2 2620应该接收邀请更新消息)。

邀请服务620基于用户B的在线通信会话端点标识符执行号码簿 查找2716,以确定客户设备B2 2620的推送标记。确定了推送标记后, 在操作2718处,邀请服务将推送请求传输给推送通知服务640,以将 邀请更新消息推送给客户设备B2 2620。在操作2720处,推送通知服 务640将推送通知消息形式的邀请更新消息传输给客户设备B2 2620。 邀请更新消息指出客户设备B1 2615已经接受在线通信会话邀请。客 户设备B2 2620可以显示邀请更新消息并且可以维持客户设备A 2610 与客户设备B1 2615之间的在线通信会话的状态(例如在线通信会话 的持续时间等)。正如将参考图30更详细描述的那样,在一个实施例 中,客户设备B2 2620能够传输转移请求以使在线通信会话从客户设 备B1 2615转移到客户设备B2 2620。

在操作2712中接收到邀请接受消息之后的某个时间,在操作 2722处,客户设备A 2610和客户设备B1 2615使用已交换的连接数 据建立直接P2P连接。可以通过已知的机构建立直接P2P连接(例如 使用互连式连接建立(ICE)或其他已知的P2P连接机构)。应该理 解的是,可以在操作2714-2720之前或期间执行操作2722。

虽然图26描述了仅一个客户设备接受邀请消息的示例,但是在 一些情形下,多个客户设备都可以接受对指向一个用户的在线通信会 话的邀请。例如,在一些情形下客户设备B1 2615和客户设备B2 2620 可以接受邀请。在一个实施例中,客户设备A 2610建立与它从其接收 到接受消息的第一个客户设备的在线通信会话。客户设备A 2610可以 使取消消息被发送给其他客户设备(多个其他客户设备)(例如,取 消消息可以被传输给邀请服务,并且接下来经由推送通知服务被推送 给所述的其他客户设备(多个其他客户设备))。

回到图26的操作2654进行参考,如果在客户设备A 2610与客 户设备B1 2615之间的直接P2P连接不可行,则执行图28中描述的操 作。图28示出当直接P2P连接不可行时执行的示例性操作的数据流 图。在操作2810处,邀请服务620将中继查找请求2810传输给中继 服务650,以确定由客户设备A 2610和客户设备B1 2615使用的中继 主机。中继查找请求可以含有用于客户设备的联网信息(例如NAT穿 越/连接数据和/或NAT类型数据),该信息被中继服务650用于为客 户设备选择适当的中继主机。如图8所示,中继服务650的一个实施 例包括多个中继主机815A-B和含有与每个中继主机相关的网络信息 的中继主机数据库810。例如,邀请服务620将中继查找请求传输给 中继服务650,该请求使用用于客户设备的网络信息来询问中继主机 数据库810。接受到数据库查找结果之后,在操作1210处,中继服务 650提供识别选定中继主机815A-B的中继查找响应。在一个实施例中, 中继查找响应含有由中继服务650产生的中继标记和客户设备为了中 继连接所使用的中继主机815A-B的网络地址(IP地址/端口)。在一 个实施例中,中继标记与中继会话相关、并且被中继主机815A-B用 于在连接到中继服务650之后对客户设备A 2610和客户设备B1 2615 进行认证。标记可以采取不同的形式,包括例如:唯一的ID中继会话 ID代码、与中继会话相关的数字证书和/或唯一的加密密钥。

接着在操作2814处,邀请服务620将中继响应传输给客户设备 B1 2615,该响应含有将进行中继连接的指示。在一个实施例中,中继 响应能够包括用于为客户设备B1 2615选择的中继主机的中继标记和 网络信息。在一个实施例中,可以将中继响应直接发送给客户设备B1 2615(绕过推送通知服务640)。在操作2816处,邀请服务620还将 中继响应传输给客户设备A 2610,该响应包括用于为客户设备A 2610 选择的主机的中继标记和网络信息。在一些实施例中,中继响应经由 推送通知服务640被推送给移动设备A。

在操作2818处,客户设备A 2610接着将包括用户B的在线通信 会话端点标识符的邀请更新请求传输给邀请服务620,并指出客户设 备B1 2615已经接受请求。邀请更新请求还可以命令邀请服务620或 向邀请服务620指出与用户B的在线通信会话端点标识符相关的哪个 客户设备应该接收邀请更新消息(在这个示例中,客户设备B2 2620 应该接收邀请更新消息)。

邀请服务620基于用户B的在线通信会话端点标识符执行号码簿 查找2820,以确定客户设备B2 2620的推送标记。确定了推送标记之 后,在操作2822处,邀请服务将推送请求传输给推送通知服务640, 以将邀请更新消息推送给客户设备B2 2620。在操作2824处,推送通 知服务640将推送通知消息形式的邀请更新消息传输给客户设备B2 2620。邀请更新消息指出客户设备B1 2615已经接受在线通信会话邀 请。客户设备B2 2620可以显示邀请更新消息并且可以维持客户设备 A 2610与客户设备B1 2615之间的在线通信会话的状态(例如在线通 信会话的持续时间等)。在一个实施例中,客户设备B2 2620能够传 输转移请求以使在线通信会话从客户设备B1 2615转移到客户设备B2 2620。

在操作2826处,客户设备A 2610使用用于其选定中继主机的网 络信息来建立与中继服务650的连接。同样,在操作2828处,客户设 备B2 2620使用用于其选定中继主机的网络信息来建立与中继服务 650的连接。在这些操作的每个中,都能够在客户设备的任何NAT防 火墙中打开新的洞(hole),并且用于客户设备的NAT穿越/连接数 据可以由中继服务650确定并且返回给它们(例如通过确定客户设备 的公共IP/端口)。在一个实施例中,中继服务650和客户设备A 2610 以及客户设备B1 2615实施利用中继NAT穿越(“TURN”)协议, 正如本领域技术人员理解的那样,该协议允许NAT或防火墙后面的元 素通过TCP或UDP连接接收进入数据。

在操作2830处,客户设备A 2610将中继更新传输给邀请服务 620,邀请服务620在操作2832处将中继更新转送给推送通知服务并 且在操作2834处将中继更新推送给客户设备B1 2615。同样,在操作 2836处,客户设备B1 2615将中继更新传输给邀请服务620,邀请服 务620在操作2838处将中继更新转送给推送通知服务640并且在操作 2840处将中继更新推送给客户设备A 2610。由客户设备A 2610传输 的中继更新消息能够包括中继标记、每个在线通信会话标识符和由中 继服务650在操作2826和2828处确定的NAT穿越/连接数据。在一 个实施例中,执行中继更新操作,因为一个或多个客户设备的NAT信 息可能已经改变。最后,在操作2842和2844处,客户设备A 2610和 客户设备B1 2615通过中继服务650分别建立P2P连接。在一个实施 例中,能够响应于客户设备A 2610将客户设备B1 2615的NAT穿越/ 连接数据传输给中继服务650而建立中继连接,并且反之亦然,由此 允许中继服务650确定到每个同位体的中继主机的正确路径。

图29示出根据一个实施例,当在线通信会话结束时执行的示例 性操作的数据流图。在操作2910处,客户设备A 2610与客户设备B1 2615之间的在线通信会话已经结束。例如,无论客户设备A 2610还 是客户设备B1 2615都已经终止了在线通信会话(或者已经用别的方 法终止了在线通信会话)。在线通信会话可能已经被通过了直接P2P 连接或通过了中继。

在在线通信会话已经结束之后的某个时间,在操作2912处,客 户设备A 2610将在线通信会话更新请求传输给邀请服务620。发送在 线通信会话更新以便通知并非是在线通信会话的角色(part)的客户 设备B2 2620,在线通信会话的终止。在线通信会话更新请求可以包 括用户B的在线通信会话标识符并且可以命令邀请服务620或向邀请 服务620指出,与用户B(例如客户设备B2 2620)相关的哪个客户设 备要接收更新。

邀请服务620基于用户B的在线通信会话端点标识符而执行号码 簿查找操作2914,以确定客户设备B2 2620的推送标记。确定了推送 标记后,在操作2916处,邀请服务将推送请求传输给推送通知服务 640,以将更新消息推送给客户设备B2 2620。在操作2720处,推送 通知服务640将推送通知消息形式的在线通信会话更新消息传输给客 户设备B2 2620。在线通信会话更新消息指出客户设备A 2610与客户 设备B1 2615之间的在线通信会话已经结束。

图30示出根据一个实施例,执行将在线通信会话从一个客户设 备转移到另一个客户设备的示例性操作的流程图。在图30中示出的示 例中,假设客户设备B1 2615和B2 2620的每个都接收到至由客户设 备A 2610开创的在线通信会话的邀请(它们每个都共享在邀请中使用 的在线通信会话标识符),并且客户设备B1 2615接受并建立与客户 设备A 2610的在线通信会话(如图26和27或28中描述的那样)。 另外,客户设备B2 2620已经接收到指出客户设备B1 2615已经接受 邀请的邀请更新。在图30中示出的示例中,在线通信会话将从客户设 备B1 2615被转移到客户设备B2 2620。例如,客户设备B2 2620的用 户已经指出它想要接管客户设备A 2610与客户设备B1 2615之间的在 线通信会话。在一个实施例中,在线通信会话应用2115显示客户设备 A 2610与客户设备B1 2615之间的在线通信会话的状态,该状态允许 客户设备B2 2620的用户发布转移在线通信会话请求(例如通过点击 或按下客户设备B1 2615的在线通信会话应用2115上提供的链接或虚 拟按钮)。

在操作3010处,客户设备B2 2620从连接数据交换610请求其 连接数据并且在操作3012处接收所请求的连接数据(如果它还不知道 其连接数据)。接着,在操作3014处,客户设备B2 2620将转移请求 消息传输给邀请服务620,该消息包括客户设备A 2610的推送标记和 客户设备B2 2620的连接数据。转移请求消息还可以包括A和/或B的 在线通信会话端点标识符和/或用于客户设备A 2610的推送标记。

然后,在操作3016处,邀请服务620将推送请求传输给推送通 知服务640,以使推送通知服务640将推送通知形式的转移消息传输 给客户设备A 2610。在操作3018处,邀请服务620还执行直接P2P 兼容性核查以确定客户设备A 2610与客户设备B2 2620之间的直接 P2P连接是否可行。出于这个示例的目的,直接连接是可行的,然而 应该理解的是,在线通信会话转移还可以在中继情形中发生。

在操作3020处,推送通知服务将转移请求消息传输给客户设备 A 2610。转移请求消息可以包括B的在线通信会话端点标识符和用于 客户设备B22620的连接数据。转移请求消息还指出哪个设备(例如 客户设备B2 2620)正在请求在线通信会话转移(例如通过客户设备 B2 2620的设备ID和/或推送标记)。转移请求消息可以使客户设备A 2610的在线通信会话应用2115显示转移请求,并且还允许用户接受 或回绝转移请求。假设转移请求被接受,则在操作3022处,客户设备 A 2610使用已交换的连接数据建立与客户设备B2 2620的直接P2P连 接。应该理解的是,在这个点处客户设备A 2610与客户设备B1 2615 之间的在线通信会话是激活的。客户设备A 2610随后将在线通信会话 更新传输给客户设备B1 2615,该更新指出在线通信会话将转移到客 户设备B2 2620。在一个实施例中,这个更新消息在客户设备之间现 有的在线通信会话上被传输。然后,客户设备A 2610在操作3026处 交换到与客户设备B2 2620的在线通信会话,并且在操作3028处拆开 与客户设备B1 2615的在线通信会话。

虽然已经参考邀请一个用户至在线通信会话(其可以与多个客户 设备相关或不相关)描述了实施例,但是在一些实施例中,可以邀请 多个用户至在线通信会话。图31示出用于发起和建立与多个用户的在 线通信会话的示例性操作的流程图。

客户设备3110在操作3132处从连接数据交换610请求其连接数 据,并且在操作3134处所请求的连接数据被返回。在操作3136处, 客户设备A 3110将邀请请求传输给邀请服务620,该请求包括客户设 备A 3110的连接数据、与用户B相关的在线通信会话端点标识符和与 用户C相关的在线通信会话端点标识符。因此,客户设备A 3110的 用户正在邀请多个用户至在线通信会话。

邀请服务620执行号码簿查找操作3138以确定与用户B的在线 通信会话端点标识符和用户C的在线通信会话端点标识符相关的推送 标记。在这个示例中和出于简洁的目的,号码簿查找返回与用户B的 在线通信会话端点标识符相关的客户设备B 3115和与用户C的在线通 信会话端点标识符相关的客户设备C 3120的结果。邀请服务620之后 将推送请求3140传输给推送通知服务640,以请求推送通知服务640 将推送消息形式的邀请传输给客户设备B和C。推送通知服务640接 下来在操作3142处将邀请请求传输给客户设备B 3115,并且在操作 3144处将邀请请求传输给客户设备C 3120。每个邀请请求消息都包括 客户设备A 3110的连接数据、用户A使用的在线通信会话端点标识 符和客户设备A 3110的推送标记。

在一个实施例中,邀请服务620将状态消息传输给邀请客户设备 以指出邀请被传输给哪个客户设备(哪些客户设备)。因此,在操作 3146处,邀请服务620将邀请状态更新传输给客户设备A 3110,该更 新指出在线通信会话邀请请求被发送给客户设备B 3115和客户设备C 3120。在一个实施例中,如果客户设备B 3115和客户设备C 3120接 通电源并且能够接收邀请请求,则它们将显示邀请请求。

在图31中示出的示例中,每个邀请都将被接受。因此在操作3148 处,客户设备B 3115从连接数据交换610请求其连接数据。连接数据 交换610确定客户设备B 3115的连接数据并且在操作3150处将其返 回给客户设备B 3115。同样,客户设备C 3120在操作3152处从连接 数据交换610请求其连接数据。连接数据交换610确定客户设备C 3120 的连接数据并且在操作3154处将其返回给客户设备C 3120。接着, 客户设备B 3115在操作3156处将接受消息传输给邀请服务620,并 且客户设备C 3120在操作3158处将接受消息传输给邀请服务620。 邀请服务620随后执行直接P2P兼容性核查3160以确定直接P2P连 接在客户设备A 3110和客户设备B 3115之间、以及在客户设备A 3110 和客户设备C 3120之间是否可行。出于这个示例的目的,直接P2P 连接在客户设备之间是可行的。因此,使用已交换的连接数据,客户 设备A 3110和客户设备B 3115在操作3162处建立用于在线通信会话 的直接P2P连接,并且客户设备A 3110和客户设备C 3120在操作3164 处建立用于在线通信会话的直接P2P连接。在这个示例中,客户设备 A 3110必须用作在线通信会话的主机。因此,在客户设备B 3115和 客户设备C 3120之间传输的数据通过客户设备A 3110被中继。在其 他实施例中,在参与方之间建立完全的网状连接。在这种实施例中, 在客户设备B 3115和客户设备C 3120之间建立另一个P2P连接。

虽然本文描述的实施例描述了一种为了在线通信会话而注册客 户设备的机构,但是在一些实施例中,注册140可以实施应用程序接 口(API)以允许不同的应用程序来注册在线通信会话端点标识符和 推送标记。在一个实施例中实施的API,是通过软件组件(此后称为 “API实施软件组件”)实施的接口,该接口允许不同的软件组件(此 后称为“API呼叫软件组件”)存取和使用一种或多种函数(function)、 方法、程序、数据结构和/或通过API实施软件组件提供的其他服务。 例如,API允许API呼叫软件组件的开发者(其可以是第三方开发者) 影响由API实施软件组件提供的规定特征。可以有一个API呼叫软件 组件或者可以有多于一个的这种软件组件。API可以是计算机系统或 程序库提供、以便支持对来自软件应用程序的服务的请求的源代码接 口。可以就编程语言对API进行规定,该编程语言当构建应用程序时 是可以解释或编译的,而非是怎样在存储器中铺陈数据的显然是低级 的描述。

API定义当存取和使用API实施软件组件的规定特征时API呼 叫软件组件使用的语言和参数。例如,API呼叫软件组件通过被API 暴露(expose)的一个或多个API呼叫(有时被称为函数或方法呼叫) 而存取API实施软件组件的规定特征。API执行软件组件可以响应于 来自API呼叫软件组件的API呼叫而通过API返回一个值。虽然API 定义API呼叫的句法和结果(例如怎样调用API呼叫和API呼叫做 什么),但是API通常不揭示API呼叫怎样完成由API呼叫规定的 函数。不同的函数呼叫或消息经由呼叫软件(API呼叫软件组件)和 API实施软件组件之间的一个或多个应用程序编程接口被转移。转移 函数呼叫或消息可以包括发布、发起、调用、呼叫、接收函数呼叫或 消息,或对函数呼叫或消息作出响应。因此,API呼叫软件组件可以 转移呼叫而API实施软件组件也可以转移呼叫。

通过示例,API实施软件组件和API呼叫软件组件可以是操作系 统、库、设备驱动器、API、应用程序、或其他软件模块(应该理解 的是API实施软件组件和API呼叫软件组件可以是彼此相同或不同类 型的软件模块)。API呼叫软件组件可以是通过API在网络上与API 实施软件组件通信的本地软件组件(即在与API实施软件组件相同的 数据处理系统上)或远程软件组件(即在与API实施软件组件不同的 数据处理系统上)。应该理解的是,API实施软件组件还可以用作API 呼叫软件组件(即它可以对通过不同的API实施软件组件暴露的API 进行API呼叫),并且API呼叫软件组件还可以通过实施被暴露于不 同的API呼叫软件组件的API而用作API实施软件组件。

API可以允许用不同编程语言书写的多个API呼叫软件组件与 API实施软件组件通信(因此API可以包括用于在API实施软件组件 与API呼叫软件组件之间翻译呼叫并返回的特征);不过也可以按照 规定的编程语言来实施API。

图9示出API结构的一个实施例,该API结构包括实施API 920 的API实施软件组件910(例如操作系统、库、设备驱动器、API、 应用程序、或其他软件模块)。API 920规定可以被API呼叫软件组 件930使用的一种或多种函数、方法、类、对象、协议、数据结构、 格式和/或API实施软件组件的其他特征。API 920可以规定至少一种 呼叫约定,该呼叫约定规定API实施软件组件中的函数怎样接收来自 API呼叫软件组件的参数以及该函数怎样将结果返回给API呼叫软件 组件。API呼叫软件组件930(例如操作系统、库、设备驱动器、API、 应用程序、或其他软件模块),通过API 920进行API呼叫以存取和 使用由API 920规定的API实施软件组件910的特征。API实施软件 组件910可以响应于API呼叫而通过API 920将一个值返回给API呼 叫软件组件930。

将意识到的是,API实施软件组件910可以包括并非通过API 920 规定、也并非提供给API呼叫软件组件930的其他函数、方法、类、 数据结构和/或其他特征。应该理解的是,API呼叫软件组件930可以 与API实施软件组件910在同一个系统上、或者可以是远程定位并且 使用API 920通过网络存取API实施软件组件910。虽然图9示出与 API 920交互的一个API呼叫软件组件930,但是应该理解的是,可 以用与API呼叫软件组件930不同的语言(或相同的语言)书写的其 他API呼叫软件组件,也可以使用API 920。

API实施软件组件910、API 920和API呼叫软件组件930可以 被存储在机器可读介质中,该介质可以包括用于存储具有机器(例如 计算机或其他处理系统)可读形式的信息的任何机构。例如,机器可 读介质包括磁盘、光盘、随机存取存储器;只读存储器、闪速存储器 设备等。

在电路交换式呼叫与视频呼叫之间转接

在一些实施例中,客户设备能够从只建立音频的电路交换式呼叫 转接到视频呼叫,而不显著中断参与方之间的通信。例如,只建立音 频的电路交换式呼叫的一个参与方选择转接到视频呼叫(其包括视频 帧和音频),这使视频呼叫发起消息(形式为在线通信会话邀请消息) 被发送给呼叫的其他参与者(多个其他参与者)。如果其他参与者(多 个其他参与者)接受视频呼叫邀请,就将在参与者的客户设备之间建 立P2P连接。虽然P2P连接要被协商,但是参与者能够通过仅音频的 电路交换式呼叫进行通信。P2P连接被建立并且视频在参与方之间被 通信之后,客户设备转接到视频呼叫。于是仅音频的电路交换式呼叫 被放弃(drop),而参与者能够通过视频呼叫进行通信。

图12示出依据一些实施例的示例性客户设备1210和用于在电路 交换式呼叫与视频呼叫之间转接的图形用户界面。客户设备1210包括 扬声器1255(在扬声器电话模式期间使用)、前视(front facing)照 相机1260(其捕捉用于视频呼叫的视频)、麦克风1265(其捕捉声音)、 接收器/扬声器1270(其通常在用户在呼叫期间将客户设备1210保持 在他们的耳朵上时被使用)和显示屏1275(在一些实施例中其是触摸 屏)。客户设备1210还可以包括双耳式耳机/耳机插孔、近程传感器、 环境光传感器、加速计(多个加速计)和其他组件。应该理解的是, 客户设备1210的结构是示例性的,并且可以在实施例中使用包括更多 或更少的组件的不同结构。

如图12所示,图形用户界面1205当前被显示在显示屏1275上。 客户设备1210的用户当前正参与在仅音频的电话呼叫中(利用电话号 码(408)555-1234)。图形用户界面1205包括呼叫期间用于用户的 几个不同的选项。例如,客户设备1210响应于接收到用户输入(例如 在适当的图标上轻敲或其他预定的手势)而执行下列动作:当输入被 施加给结束呼叫图标1250时结束呼叫,响应于输入被施加给静音图标 1220而使音频呼叫静音,响应于输入被施加给小键盘图标1225而显 示数字小键盘(例如为了给呼叫添加其他的电话号码),响应于输入 被施加给扬声器图标1230(其将音频输出改变到扬声器1255)而将呼 叫置为扬声器电话,响应于输入被施加给添加呼叫图标1235而添加一 个呼叫,响应于输入被施加保持图标1240给而将呼叫置为保持,响应 于输入被施加给联系人图标1245而显示用户的联系人列表,以及响应 于输入被施加给视频呼叫图标1215而转接到视频呼叫。

图17-18示出根据一个实施例,用于在仅音频的电路交换式呼叫 与视频呼叫之间转接的示例性操作的流程图。将参考图12、13和14 的示例性实施例描述图17-18。然而,应该理解的是,能够通过不同于 参考图12、13和14讨论的那些实施例的本发明的实施例来执行图 17-18的操作,并且参考图12、13和14讨论的实施例能够执行不同于 参考图17-18讨论的那些操作的操作。

如图17所示,客户设备1210和1410通过仅音频的电路交换式 呼叫1710被连接(客户设备1210的用户或客户设备1410的用户发起 呼叫)。因此,客户设备1210和1410的用户能够通过已建立的电路 交换式音频呼叫进行通信。在块1712处,客户设备1210接收用于转 接到视频呼叫的输入。例如,用户已经通过在视频呼叫图标1215上轻 敲或执行另一个已定义的手势而选择为转接到视频呼叫。

流程接着移动到块1714,在块1714处客户设备1210使视频呼叫 邀请消息(其具有在线通信会话邀请请求消息的形式)被发送给客户 设备1410(正如由客户设备1410的电话号码识别的那样)。在一些 实施例中,使用图6和7中描述的结构发送在线通信会话邀请请求消 息。之后流程移动到块1716。

在块1716处,客户设备1210确定音频目前是否正通过扬声器电 话(例如扬声器1255)或通过双耳式耳机/耳机插孔被路由。如果是, 则流程移动到块1720。如果不是,则流程移动到块1718,在块1718 处,客户设备1210通过客户设备1210的扬声器电话(例如扬声器1255) 路由音频并且流程移动到块1720。

在块1720处,客户设备1210显示前视照相机1260当前正在捕 捉什么的视频预览,以允许客户设备1210的用户去准备视频呼叫(例 如去客户设备1210为了视频呼叫的正确位置)。图13示出客户设备 1210显示视频预览1310,视频预览1310显示前视照相机1260当前正 在捕捉什么的视频。虽然未在图13中示出,但是在一些实施例中,在 GUI 1305上还显示允许用户取消视频呼叫邀请的取消按钮。流程从块 1720移动到块1722。

在块1726处,客户设备1410接收到邀请客户设备1410的用户 至视频呼叫的视频呼叫邀请消息。流程从块1726移动到块1728。在 一些实施例中,客户设备1410具有类似于客户设备1210的结构。例 如,如图14所示,客户设备1410包括扬声器1455(其在扬声器电话 模式期间使用)、前视照相机1460(其捕捉用于视频呼叫的视频)、 麦克风1465(其捕捉声音)、接收器/扬声器1470(其通常在用户在 呼叫期间将客户设备1410保持在他们的耳朵上时被使用)和显示屏 1475(在一些实施例中其是触摸屏)。客户设备1410还可以包括双耳 式耳机/耳机插孔、近程传感器、环境光传感器、加速计(多个加速计) 和其他组件。应该理解的是,客户设备1410的结构是示例性的,并且 可以在实施例中使用包括更多或更少的组件的不同结构。

在块1728处,客户设备1410播放指出接收到消息的一个或多个 音频音调以提醒该消息的用户。在不同实施例中音频音调可以不同(例 如音频音调可以类似于在客户设备1410上使用的呼叫等待音调(虽然 它们不是通过与客户设备1410相关的载体开创的),音频音调可以是 唯一的并且专用于视频呼叫等)。在一些实施例中,如果客户设备1410 不在用户的耳朵旁边(例如,如通过客户设备1410的近程传感器指出 的那样),和/或如果呼叫当前正在扬声器电话模式上,客户设备1410 就不播放指出接收到视频呼叫邀请消息的音频音调。流程从块1728移 动到块1730。

在块1730处,客户设备1410显示视频呼叫邀请消息,并且可选 地显示前视照相机1460当前正在捕捉什么的视频预览,以允许客户设 备1410的用户去准备视频呼叫,并且流程移动到块1732。图14示出 显示视频呼叫邀请1440的GUI 1405。如图14所示,视频呼叫邀请1440 包括接受按钮1432、回绝按钮1434和视频预览1430(其显示前视照 相机1460当前正在捕捉什么)。虽然图1410示出包括视频预览1430 的视频呼叫邀请1440(即,视频预览1430被含在视频呼叫邀请1440 中),但是在其他实施例中,视频预览1430位于视频呼叫邀请1440 之外和/或与视频呼叫邀请1440有重叠。客户设备1410的用户可以选 择接受按钮1432来接受视频呼叫邀请(例如通过轻敲接受按钮1432 或执行另一种用于输入在接受按钮1432上的预定手势),并且能够选 择回绝按钮1434来回绝视频呼叫邀请(例如通过轻敲回绝按钮1434 或执行另一种用于输入在回绝按钮1434上的预定手势)。

在块1732处,客户设备1410确定用于接受视频呼叫的输入是否 已经被接收到(例如用户是否通过选择接受按钮1432已经接受了视频 呼叫邀请)。如果客户设备1410接收到用于接受视频呼叫的输入,则 流程移动到块1734,否则流程移动到块1736。在块1734处,客户设 备1410使视频呼叫接受消息被传输给客户设备1210。在一些实施例 中,使用图6和7中描述的结构将接受消息传输给客户设备1210。流 程随后移动到块1810。

在块1736处,确定是否已经接收到用于拒绝视频呼叫请求的输 入(例如用户通过选择回绝按钮1434已经拒绝了视频呼叫邀请)。如 果客户设备1410接收到用于回绝视频呼叫邀请的输入,则流程移动到 块1738,否则流程移动回到块1732。在块1738处,客户设备1410使 视频呼叫回绝消息被传输给客户设备1210。客户设备1410还可以清 理视频呼叫邀请1440并且停止显示视频预览1430。在一些实施例中, 使用图6和7中描述的结构将视频呼叫回绝消息传输给客户设备1210。

在块1722处,客户设备1210确定它是否已经从客户设备1410 接收到视频呼叫接受消息。如果是,则流程移动到块1816,否则流程 移动到块1724,在块1724处客户设备1210确定它是否已经从客户设 备1410接收到视频呼叫回绝消息。如果是,则流程移动到块1910, 否则流程移动回到块1722。

参考图18,在块1810处(客户设备1410的用户已经接受了视频 呼叫邀请),客户设备1410确定音频目前是否通过扬声器电话(例如 扬声器1470)或者客户设备1410的头戴式耳机被路由。如果不是, 则流程移动到块1812,在块1812处音频路由从扬声器1455被改变到 扬声器电话(例如扬声器1470),并且流程移动到块1814。如果音频 已经通过扬声器电话或头戴式耳机被路由,则流程移动到块1814。

在块1814处,客户设备1410显示前视照相机1260当前正在捕 捉什么的视频预览。仅当作为块1730中操作的结果,视频预览当前未 被显示,才执行块1814中的操作。之后流程从块1814移动到块1820。

在块1818和1820处,客户设备1210和1410建立相互之间的 P2P连接。可以通过已知的机构建立P2P连接(例如使用互连式连接 建立(ICE)或其他已知的P2P连接机构)。假设P2P连接被成功建 立,则流程从块1818和1820分别移动到块1822和1824,在块1822 和1824处客户设备1210和1410通过P2P连接相互之间传输视频(视 频来自前视视频照相机1260和1460)。在一些实施例中,视频既包 括视频帧又包括相应的音频(分别通过客户设备1210和1410的麦克 风1265和1465捕捉),而在其他实施例中,视频和音频是通过P2P 连接进行通信的分开的流。

流程从块1822和1824分别移动到块1826和1828。在块1826 和1828处,客户设备1210和1410分别确定它们是否已经接收到来自 于它们的同位体的一个或多个视频帧。如果它们是,则流程从块1826 和1828分别移动到块1830和1832。如果它们不是,则流程留在块1826 和1828处,直到已经接收到一个或多个视频帧。

在一些实施例中,客户设备1210和1410等待一定量的时间从彼 此处接收视频帧,而如果它们不在那个时间上交换视频帧,则采取可 选的动作。例如,在一些实施例中,视频呼叫被取消并且不能建立视 频呼叫的消息被显示在客户设备1210和1410的屏上。出于许多原因 可能不能建立视频呼叫,包括带宽对于视频呼叫不够用,视频帧不能 被传输或接收到等。虽然在一些实施例中客户设备在继续下去之前等 待一帧视频,但是在其他实施例中客户设备在继续下去之前的给定时 间段内等待接收许多帧(例如视频帧流)。

在块1830和1832处,客户设备1210和1410分别转接到视频呼 叫。转接到视频呼叫包括显示接收到的视频并且将音频路由从电路交 换式音频呼叫改变到视频呼叫。在一些实施例中,视频预览(例如视 频预览1310)移动到屏的角落(并且尺寸减缩),并且从同位体处接 收到的视频被揭示。因此,应该理解的是,直到音频路由已经从电路 交换式音频呼叫被改变到视频呼叫,参与者都能够通过电路交换式音 频呼叫进行通信(即,电路交换式音频呼叫仍旧被建立,而视频呼叫 正在被协商)。转接到视频呼叫后,电路交换式音频呼叫能够被放弃。 因此,流程从块1830和1832分别移动到块1834和1836,在块1834 和1836处电路交换式音频呼叫被放弃。

图15和16分别示出已经转接到视频呼叫之后的客户设备1210 和1410。如图15所示,客户设备1210显示视频1510,视频1510是 客户设备1410的前视照相机1460正在捕捉什么的视频。客户设备1210 还显示视频1515,视频1515是前视照相机1260正在捕捉什么的视频。 GUI 1505还包括结束视频按钮1520和结束视频和呼叫按钮1525。结 束视频按钮1520允许用户结束视频呼叫并返回到仅音频呼叫。结束视 频和呼叫按钮1525允许用户彻底结束视频呼叫(例如结束与客户设备 1410的用户的交谈)。如图16所示,客户设备1410显示视频1610, 视频1610是客户设备1210的前视照相机1260当前正在捕捉什么的视 频。客户设备1410还显示视频1615,视频1615是前视照相机1460 当前正在捕捉什么的视频。GUI 1605还包括结束视频按钮1620和结 束视频和呼叫按钮1625。

图19示出根据一个实施例,在已经接收到视频呼叫拒绝消息的 客户设备上执行的示例性操作的流程图。在块1910处,客户设备1210 接收视频呼叫拒绝消息(客户设备1410的用户已经拒绝了视频呼叫邀 请)。流程从块1910移动到块1912,并且客户设备1210显示视频呼 叫被拒绝消息并且可选地播放指出接收到视频呼叫拒绝消息的一个或 多个音频音调。流程随后移动到块1914,在块1914处客户设备1210 停止显示它自己的视频预览。如果音频输出之前在块1718中被改变到 扬声器电话,则客户设备1210还可以提示用户返回到最初的音频输出 (例如通过扬声器1270)。

图20示出根据一个实施例,在用于从视频呼叫转接到电路交换 式呼叫的客户设备上执行的示例性操作的流程图。在客户设备1210和 1410之间建立视频呼叫2010(可以根据参考图17和18描述的机构来 建立视频呼叫,或者可以不从电路交换式音频呼叫转接而建立视频呼 叫)。在块1712处,客户设备1210接收用于转接到仅音频的电路交 换式呼叫的输入。例如,参考图15,客户设备1210的用户已经选择 了结束视频按钮1520(例如通过轻敲结束视频按钮1520或在结束视 频按钮1520上执行另一种预定手势)。客户设备1210接着将指出转 接到仅音频的电路交换式呼叫2014的消息传输给客户设备1410。

客户设备1210接下来向客户设备1410发起电路交换式音频呼叫 请求(例如客户设备1210自动呼叫许多个客户设备1410)。在一些 实施例中,这在后台中执行并且不需要用户交互。通过载体网络基础 结构的许多个网络元素(例如基站、移动交换中心等)对呼叫进行路 由。

客户设备1410接收并回答电路交换式呼叫2020。在一个实施例 中,客户设备1410显示进入呼叫请求并且可以播放指出进入呼叫请求 的音频音调(例如呼叫等待音调或其他音调),并且需要用户介入来 回答呼叫。在另一个实施例中,客户设备1410自动回答呼叫而无用户 介入(并且可以或可以不播放指出进入呼叫请求的音频音调)。呼叫 得到回答之后,仅音频的电路交换式呼叫在客户设备1210和1410之 间被建立2030。

仅音频的电路交换式呼叫被成功建立之后,客户设备1210和 1410分别转接到仅音频的呼叫2032和2034。例如,转接到仅音频的 呼叫包括将音频路由从视频呼叫改变到电路交换式呼叫,停止显示被 接收的视频,和停止传输视频。客户设备还可以停止显示视频预览。 因此,应该理解的是,虽然电路交换式仅音频的呼叫正在被协商,但 是客户设备1210和1410的用户仍能够通过视频呼叫进行通信(即, 视频呼叫仍旧被建立,而仅音频的电路交换式呼叫正在被协商)。在 成功转接到仅音频的电路交换式呼叫之后,客户设备1210和1410结 束P2P连接2040。客户设备1210和1410的用户随后可以通过仅音频 的电路交换式呼叫进行通信。

虽然已经关于具有两个参与者的视频呼叫描述了本发明的实施 例,但是实施例不受到这样的限制,因为在视频呼叫中可以有多个参 与者。在这种实施例中,客户设备可以显示来自视频聊天中每个不同 的参与者的多个视频流。

虽然已经关于具有两个参与者的视频呼叫描述了本发明的实施 例,每个参与者都传输视频,但是实施例不受到这样的限制。例如, 在一些实施例中,只有一个参与方可以将视频传输给其他参与者(多 个其他参与者),并且那些其他参与者(多个其他参与者)可以只传 输音频。在一些实施例中,每个参与者都可以确定是否要在视频呼叫 期间的任何点处暂停传输视频。

在一些实施例中,基于网络条件动态调节呼叫期间传输的视频的 质量。例如,当网络拥挤时,可以降低视频的比特率。同样,在网络 相对不拥挤时,可以增大视频的比特率。在一些实施例中,如果网络 条件阻止视频被传输,则参与者客户设备自动转接到仅音频的电路交 换式呼叫。因此,如果带宽降至低于一定的水平,则参与者客户设备 可以自动转接到仅音频的电路交换式呼叫(或者可以提示用户转接到 仅音频的电路交换式呼叫)。

经由用于IP视频呼叫的免提设备的免提服务支持

在一个实施例中,客户设备包括支持通过WPAN(无线个人局域 网)(例如蓝牙、ZigBee等)与免提设备(例如头戴式耳机、汽车工 具箱等)交互的功能,包括支持管理与免提单元的IP视频呼叫。图 32示出依据一个实施例,与免提单元接口以便管理IP视频呼叫的客 户设备的框图。客户设备3210包括发起视频呼叫的能力(例如邀请一 个或多个接收者至在线通信会话,该在线通信会话是视频呼叫)和接 受视频呼叫的能力。在一些实施例中,客户设备3210还包括蜂窝电话 组件,以进行和接收蜂窝电话呼叫和/或通过蜂窝连接访问因特网或其 他网络。

如图32所示,客户设备3210包括IP视频呼叫管理器3250、电 话管理器3260、音频管理器3275和免提管理器3270。在一些实施例 中,客户设备3210还包括蜂窝呼叫管理器3255。IP视频呼叫管理器 3250管理P2P视频呼叫应用,包括如上所述通过IP视频呼叫服务3230 在IP网络3235上建立IP P2P视频呼叫。在一个实施例中,IP视频 呼叫服务3230包括邀请服务620、推送通知服务640、注册服务630 和/或注册服务2130、以及中继服务650之中的一个或多个。蜂窝呼叫 管理器3255对蜂窝组件进行管理,以使用蜂窝音频呼叫服务3240通 过蜂窝网络3245进行和接收仅音频的蜂窝电话呼叫。

IP视频呼叫管理器3250和蜂窝呼叫管理器3255与电话管理器 3260耦接。电话管理器3260管理用于IP视频呼叫管理器3250和蜂 窝呼叫管理器3255两者的电话操作,包括跟踪呼叫历史(既用于视频 呼叫也用于仅音频的蜂窝呼叫)和与呼叫有关的其他信息。电话管理 器3260还与免提管理器3270接口,以便为了IP视频呼叫管理器3250 和蜂窝呼叫管理器3255的利益,经由用于IP视频呼叫和蜂窝呼叫的 外部免提设备提供免提服务。在一个实施例中,在IP视频呼叫管理器 3250、蜂窝呼叫管理器3255和电话管理器3260之间使用常见消息格 式,以给用于根本不同的协议和呼叫类型(IP视频呼叫和仅音频的蜂 窝呼叫)的免提服务提供支持。因此,电话管理器3260提供用于免提 服务的类似支持,而不管免提服务是否用于IP视频呼叫或仅音频的蜂 窝呼叫。这还避免了免提管理器3270需要理解免提服务是否是用于 IP视频呼叫或仅音频的蜂窝呼叫,从而使免提服务能够理解的标准命 令能够用于提供用于IP视频呼叫以及用于仅音频的蜂窝呼叫的免提 服务。

在一个实施例中,电话管理器3260还在IP视频呼叫管理器3250 和蜂窝呼叫管理器3255之间仲裁。例如,电话管理器3260能够使IP 视频呼叫被置于保持成交换到已建立的仅音频的蜂窝呼叫,和/或使仅 音频的蜂窝呼叫被置于保持成交换到IP视频呼叫。

免提管理器3270提供对免提处理的支持。在一个实施例中,免 提管理器3270实施蓝牙协议堆栈,以便连接到诸如蓝牙头戴式耳机和 蓝牙汽车工具箱的蓝牙兼容的免提设备。在一个具体实施例中,免提 管理器3270实施蓝牙头戴式耳机简档(profile)(例如,如在2008 年12月18日的头戴式耳机简档(HSP)1.2说明书中定义的那样)和 /或蓝牙免提简档(例如,如在2005年11月25日的头戴式耳机简档 1.5(HSP 1.5)说明书中定义的那样)。免提管理器3270允许免提单 元3220用作听觉中继,用于IP视频呼叫和用于在WPAN 3225上仅 音频的蜂窝呼叫,以及执行其他免提服务。例如,在IP视频呼叫的情 况下,呼叫的音频部分可以通过免提单元3220而非客户设备3210的 扬声器被路由,而呼叫的视频部分仍旧通过客户设备3210(或通过附 连的显示器)被显示。免提单元3220还包括麦克风以捕捉音频信息, 之后音频信息被传输给客户计算设备3210。因此,在IP视频呼叫期 间和/或在仅音频的蜂窝呼叫期间,用户能够使用免提单元3220来说 话或收听音频。

免提管理器3270还响应于接收到来自免提单元3220的输入而支 持其他免提服务,包括执行下列用于IP视频呼叫和/或仅音频的蜂窝 呼叫的项目之中的一项或多项:允许用户回答呼叫;结束呼叫;将呼 叫置于保持;使呼叫静音;增大/减小呼叫的音量;将音频转移到客户 设备;将音频转移到免提单元;安排一个呼叫;重拨最后的呼叫。因 此,用户能够使用免提单元3220来回答IP视频呼叫,结束IP视频呼 叫,将IP视频呼叫置于保持和/或静音,增大/减小IP视频呼叫的音量, 将要输出的IP视频呼叫的音频转移到客户设备3210的扬声器,将来 自客户设备3210的音频转移到免提单元3220,安排一个IP视频呼叫, 和重拨最后的IP视频呼叫。

IP视频呼叫管理器3250、蜂窝呼叫管理器3255和免提管理器 3270还与音频管理器3275耦接。音频管理器3275通过不同的资源路 由IP视频呼叫和仅音频的蜂窝呼叫的音频。例如,音频管理器3275 能够使音频通过适于扬声器电话模式的客户设备3210的扬声器、通过 当用户在呼叫期间将客户设备3210保持在他们的耳朵上时使用的客 户设备3210的扬声器、通过被插入到客户设备3210中的头戴式耳机 或双耳式耳机的头戴式耳机/双耳式耳机插孔和通过同位的免提单元 (诸如免提单元3220)被输出。

图33示出依据一个实施例,客户设备3210接收对视频呼叫的邀 请、使免提设备鸣响、接收来自免提设备的回答指示、建立视频呼叫 和将音频路由至免提设备。将参考图32的示例性实施例描述图33。 然而,应该理解的是,能够通过不同于参考图32讨论的那些实施例的 实施例执行图33的操作,并且参考图32讨论的实施例能够执行不同 于参考图33讨论的那些操作的操作。

在操作3310处,IP视频呼叫管理器3250接收来自另一个客户设 备的IP视频呼叫邀请,该客户设备邀请客户设备3210的用户参与到 IP视频呼叫中。IP视频呼叫邀请可以采取如上所述的邀请的形式。IP 视频呼叫管理器3250处理邀请请求,包括在操作3315处,使邀请被 显示。例如,可以用与图14中示出的示例性视频呼叫邀请1410类似 的方式显示邀请请求。

另外,IP视频呼叫管理器3250产生呼叫对象3320并将其传输给 电话管理器3260。呼叫对象3320包括关于呼叫的一组参数。例如, 呼叫对象参数包括呼叫的状态(例如连接)和呼叫参与者标识符(例 如电话号码、电子邮件地址、或其他的在线通信会话端点标识符)、 起动时间、它是否是呼出或者进入呼叫的指示和内部使用以识别呼叫 的呼叫标识符之中的一个或多个。

在一个实施例中,呼叫对象3320是一般的呼叫对象,当参数是 基于来自IP视频呼叫邀请的信息时,呼叫对象3320具有对于IP视频 呼叫邀请请求和进入的仅音频的蜂窝呼叫都常见的格式。因此,当接 收到进入的仅音频的蜂窝呼叫时,蜂窝呼叫管理器3255产生相同格式 的进入呼叫对象。因此,从电话管理器3260的观点来看,IP视频呼 叫邀请请求或进入的仅音频的蜂窝呼叫看起来是一样的。

电话管理器3260将信息存储在呼叫对象3320中作为呼叫历史结 构的一部分。电话管理器3260还产生进入呼叫消息3322并将其发送 给免提管理器3270。在一个实施例中,如果有诸如与客户设备3210 同位的免提设备3220的免提设备(例如,电话管理器3260首先核查 是否有与客户设备3210同位的免提设备),则电话管理器3260仅发 送进入呼叫消息3322。在其他实施例中,电话管理器3260将进入呼 叫消息3322发送给免提管理器3270,而不管是否有同位的免提设备, 并且免提管理器3270确定是否要放弃/忽视该消息、或根据是否有同 位的免提设备而处理该消息。出于图33和后续图的目的,假设免提设 备3220与客户计算设备3210是同位的。在一个实施例中,进入呼叫 消息3322包括呼叫标识符。

响应于接收到进入呼叫消息3322,免提管理器3270使一系列消 息被传输给免提设备3220,提醒它和用户有进入的呼叫。如图33所 示,免提管理器建立与免提设备3220的音频连接3325(例如同步连 接导向(SCO)链接),之后通过已建立的音频连接3325发送鸣响音 调消息3330。这个鸣响音调消息由客户设备3210选择并且可以由客 户设备3210的用户定制。在一个实施例中,用于IP视频呼叫的鸣响 音调消息不同于用于仅音频的蜂窝呼叫的鸣响音调。在另一个实施例 中,直到呼叫得到回答之后才建立音频连接。在这种实施例中,鸣响 提醒消息被发送给免提设备3220,免提设备3220随后本地确定是否 要播放鸣响音调来提醒用户进入的呼叫(还可以在发送鸣响音调消息 3330之前发送鸣响提醒消息)。在这种实施例中,可以给免提设备3220 多次发送鸣响提醒消息,直到呼叫得到回答或被终止。

在接收到鸣响提醒消息和/或鸣响消息3330之后的某个时间,免 提设备3220传输指出用户已经回答了呼叫的已回答消息3335。例如, 用户已经按下他们的免提设备3220上的回答按钮或者已经在免提设 备3220上采取动作来回答呼叫。免提管理器3270接收到已回答消息 3335并且将已回答消息3340传输给电话管理器3260。在一个实施例 中,已回答消息3340包括呼叫标识符。虽然未在图33中示出,但是 免提管理器3270还可以响应于接收到已回答消息3335而将确认消息 传输给免提设备3220。

电话管理器3260确定已回答呼叫消息3340属于在呼叫对象3320 中指出的呼叫(例如通过将消息3340中包括的呼叫标识符与由呼叫对 象3320存储的信息进行比较),并将指出呼叫已经得到回答的消息 3345传输给IP视频呼叫管理器3250。响应于接收到这个消息,IP视 频呼叫管理器3250在操作3350处建立IP视频呼叫。例如,IP视频 呼叫管理器3250使IP视频呼叫接受消息被发送给如上所述的邀请服 务,并且利用传输该邀请的计算设备建立P2P连接(直接或通过中继)。

在已经建立了IP视频呼叫之后的某个时间,IP视频呼叫管理器 3250将呼叫对象3355传输给电话管理器3260。呼叫对象3355包括与 呼叫对象3320类似的一组参数,除了状态已经从连接改变到被连接。 在一个实施例中,呼叫对象3355是一般的呼叫对象,具有对已建立的 IP视频呼叫和已连接的仅音频的蜂窝呼叫都常见的格式。

另外,在已经建立了IP视频呼叫之后的某个时间,音频管理器 3275通过免提设备3220路由已建立的IP视频呼叫的音频部分。在一 个实施例中,IP视频呼叫管理器3250或电话管理器3260请求音频管 理器3275通过免提设备路由音频。音频管理器3275还可以将指出音 频路由将被改变成去通过免提设备3220的消息3360传输给免提管理 器3270。如果尚未建立音频连接,则免提管理器3270将建立与免提 设备3220的音频连接。假设有已建立的音频连接,则视频呼叫的音频 部分3365被路由至免提设备3220。因此,通过免提设备3220处理视 频呼叫的音频部分,而视频呼叫的视频部分被显示在客户设备3210 上。

图34示出依据一个实施例,客户设备3210通过免提设备发起视 频呼叫和为已建立的视频呼叫路由音频。将参考图32的示例性实施例 描述图34。然而,应该理解的是,能够通过不同于参考图32讨论的 那些实施例的实施例来执行图34的操作,并且参考图32讨论的实施 例能够执行不同于参考图34讨论的那些操作的操作。

在操作3410处,IP视频呼叫管理器3250使一个或多个IP视频 呼叫邀请消息被发送给其他的客户设备(多个客户设备),以邀请用 户(多个用户)至IP视频呼叫。IP视频呼叫邀请消息(多个IP视频 呼叫邀请消息)可以采取如上所述的邀请的形式。IP视频呼叫管理器 3250产生呼叫对象3415并将其传输给电话管理器3260。类似于呼叫 对象3320,呼叫对象3415包括关于呼叫的一组参数并且具有一般的 格式。电话管理器3260将该信息存储在呼叫对象3415中作为呼叫历 史结构的一部分。

在一个实施例中,电话管理器3260还产生指出有一个呼出呼叫 的呼出呼叫消息3420并将其发送给免提管理器3270。响应于这个消 息,免提管理器3270建立与免提设备3220的音频连接3425(如果定 制带内鸣响音调被发送),然后将鸣响音调消息3430传输给免提设备 3220。在其他实施例中,免提管理器3270只将鸣响音调提醒消息传输 给免提设备3220,而非建立音频连接和传输带内鸣响音调。

在发送了IP视频呼叫邀请之后的某个时间,IP视频呼叫管理器 3250接收到IP视频呼叫接受消息3435,IP视频呼叫接受消息3435 可以采取如上所述的视频呼叫接受消息的形式。在接收到这个消息之 后,在操作3440处建立与接受客户设备的P2P IP视频呼叫(例如建 立与接受邀请的计算设备的P2P连接(直接或通过中继))。

在IP视频呼叫已经被建立之后的某个时间,IP视频呼叫管理器 3250将呼叫对象3445传输给电话管理器3260。呼叫对象3445包括与 呼叫对象3415类似的一组参数,除了状态从连接改变到被连接。呼叫 对象3445也具有一般的格式。另外,在IP视频呼叫已经被建立之后 的某个时间,音频管理器3275通过免提设备3220路由已建立的IP视 频呼叫的音频部分。在一个实施例中,IP视频呼叫管理器3250或电 话管理器3260请求音频管理器3275通过免提设备路由音频。音频管 理器3275还将指出音频路由将被改变成去通过免提设备3220的消息 3455传输给免提管理器3270。如果音频连接尚未建立,则免提管理器 3270将建立与免提设备3220的音频连接。假设有已建立的音频连接, 则视频呼叫的音频部分3460被路由至免提设备3220。因此,视频呼 叫的音频部分通过免提设备3220进行处理,而视频呼叫的视频部分被 显示在客户设备3210上。

图35示出依据一个实施例,客户设备3210响应于接收到来自免 提设备3220的呼叫请求而发起视频呼叫。将参考图32的示例性实施 例描述图35。然而,应该理解的是,能够通过不同于参考图32讨论 的那些实施例的实施例来执行图35的操作,并且参考图32讨论的实 施例能够执行不同于参考图35讨论的那些操作的操作。

免提管理器3270接收到来自免提设备3220的呼叫请求3510。可 以响应于用户选择要呼叫的电话号码或其他在线通信会话端点标识符 而产生呼叫请求3510。例如,用户可以选择免提设备3220上的重拨 按钮,重拨按钮请求最后的呼叫被重拨。免提管理器3270将呼叫请求 消息3520传输给电话管理器3260。电话管理器3260确定呼叫请求消 息3520是否正在请求对一个标识符的呼叫,该标识符与视频呼叫相关 (并因此呼叫请求消息应该被发送给IP视频呼叫管理器3250)或者 与用于仅音频的蜂窝呼叫的电话号码相关(并因此应该被发送给蜂窝 呼叫管理器3255)。例如,在呼叫请求3520是重拨请求的情况下, 电话管理器3260存取最后拨打的呼叫,该呼叫能够是IP视频呼叫或 仅音频的蜂窝呼叫,以确定向哪里发送呼叫请求。如图35所示,电话 管理器将呼叫请求消息3525发送给IP视频呼叫管理器3250。呼叫请 求消息3525包括用于视频呼叫的被请求的参与者的标识符(例如电话 号码、电子邮件地址、或其他的在线通信会话端点标识符)。响应于 接收到呼叫请求消息3525,在如图34所示的操作3410处,IP视频呼 叫管理器3250使IP视频呼叫邀请消息被发送给被指出的参与者。正 如参考图34所描述的那样,执行图35所示的其余操作。因此,作为 用户在同位的免提设备处动作的结果,客户设备3210支持建立IP视 频呼叫。

图36示出依据一个实施例,客户设备3210将已建立的视频呼叫 的音频路由至免提设备3220。在客户设备3210和一个或多个其他客 户设备之间有已建立的IP视频呼叫3610。当前正通过客户设备3210 的扬声器或通过插入在客户设备3210中的双耳式耳机输出这个呼叫 的音频部分。在操作3615处,IP视频呼叫管理器3250接收用于将音 频转移到免提设备3220的输入。例如,客户设备3210的用户已经给 IP视频呼叫应用提供了输入,以便将音频转移到同位的免提设备。响 应于接收到这种输入,IP视频呼叫管理器3250将音频路由请求3620 发送给音频管理器3275,以便通过免提设备3220路由视频呼叫的音 频部分。音频管理器3275可以将指出音频路由将被改变成去通过免提 设备3220的消息3625传输给免提管理器3270。如果音频连接尚未建 立,则免提管理器3270将建立与免提设备3220的音频连接3630。假 设有已建立的音频连接,则视频呼叫的音频部分3635被路由到免提设 备3220。因此,在IP视频呼叫被建立之后,客户设备3210允许用户 将音频转移到免提设备。

虽然图36示出响应于在客户设备处接收到直接输入,将音频转 移到免提设备,但是在其他实施例中,用户可以通过在免提设备3220 处的输入使音频被转移到免提设备3220。在这种实施例中,免提管理 器3270接收到来自免提设备3220的用于转移音频的命令。随后,免 提管理器3270将接着重新路由音频的请求发送给音频管理器3275。

另外,虽然图36示出将音频转移到免提设备,但是在一些实施 例中,音频还能够从免提设备被转移到客户设备3210的扬声器(或双 耳式耳机)。这能够在客户设备3210和/或免提设备3220处被发起。 在这种实施例中,音频管理器3275接收到用于将音频路由至客户设备 3210的路由音频请求(来自IP视频呼叫管理器3250或免提管理器 3270)并照此行动。

图37示出依据一个实施例,客户设备3210响应于接收到来自免 提设备3220的结束呼叫请求而终止视频呼叫。响应于在免提设备3220 处用户选择结束呼叫(例如免提设备3220上的结束按钮被选择),免 提管理器3270接收到来自免提设备3220结束呼叫消息3710。免提管 理器3270将结束呼叫请求3715传输给电话管理器3260。在一个实施 例中,结束呼叫请求3715包括用于指出哪个呼叫要结束(在有多个呼 叫的情况下)的呼叫标识符。电话管理器3260确定要结束的呼叫与 IP视频呼叫管理器3250相关、并将结束呼叫消息3720发送给IP视 频呼叫管理器3250。响应于接收到结束呼叫消息3720,IP视频呼叫 管理器3250使IP视频呼叫被终止并且使客户设备3210与P2P连接 断开。因此,客户设备3210使用同位的免提设备来支持允许用户结束 IP视频呼叫。

图38示出可以在一些实施例中使用的示例性计算机系统的框图。 例如,计算机系统3800的示例性结构可以被包括在客户设备110、 1210、1410、2110、2610、3210等,或本文描述的其他计算设备中。 应该理解的是,虽然图38示出计算机系统的各种组件,但是它旨在代 表使组件互联的任何特殊的结构或方式,因为这些细节与本发明无关。 将意识到的是,还可以使用具有更少组件或更多组件的其他计算机系 统。

如图38所示,具有数据处理系统形式的计算机系统3800,包括 与处理系统3820耦接的总线(多条总线)3850、电源3825、存储器 3830和非易失性存储器3840(例如硬盘驱动器、闪速存储器、相变存 储器(PCM)等)。总线(多条总线)3850可以通过本领域熟知的各 种桥、控制器和/或适配器被相互连接。处理系统3820可以从存储器 3830和/或非易失性存储器3840取回指令(多个指令),并执行指令 以执行如上所述的操作。总线3850将上面的组件互连在一起并且还将 那些组件互连至可选的站点(dock)3860、显示控制器和显示设备 3870、输入/输出设备3880(例如NIC(网络接口卡)、指针控制(例 如鼠标、触摸屏、触摸板等)、键盘等)和可选的无线收发器(多个 无线收发器)3890(例如蓝牙、WiFi、红外等)。

图39示出可以在一些实施例中使用的示例性数据处理系统的框 图。例如,数据处理系统3900可以是手持式计算机、个人数字助理 (PDA)、移动电话、便携式游戏系统、便携式媒体播放器、可以包 括移动电话、媒体播放器和/或游戏系统的平板电脑或手持式计算设 备。作为另一个示例,数据处理系统3900可以是网络计算机或嵌入在 另一个设备内的处理设备。

根据一个实施例,数据处理系统3900的示例性结构可以被包括 在客户设备110、1210、1410、2110、2610、3210等、或本文描述的 其他计算设备中。数据处理系统3900包括处理系统3920,处理系统 3920可以包括集成电路上的一个或多个微处理器和/或系统。处理系统 3920与存储器3910、电源3925(其包括一个或多个电池)、音频输 入/输出3940、显示控制器和显示设备3960、可选的输入/输出3950、 输入设备(多个输入设备)3970和无线收发器(多个无线收发器)3930 耦接。将意识到的是,在某些实施例中,未在图39中示出的其他组件 也可以是数据处理系统3900的一部分,并且在某些实施例中,可以使 用比图39所示更少的组件。另外,将意识到的是,未在图39中示出 的一条或多条总线可以用于使本领域熟知的各种组件互连。

存储器3910可以存储数据和/或程序,以便由数据处理系统3900 执行。音频输入/输出3940可以包括麦克风和/或扬声器,以便例如播 放音乐和/或通过扬声器和麦克风提供电话功能。显示控制器和显示设 备3960可以包括图形用户界面(GUI)。无线(例如射频(RF)) 收发器3930(例如WiFi收发器、红外收发器、蓝牙收发器、无线蜂 窝电话收发器等)可以用于与其他数据处理系统通信。一个或多个输 入设备3970允许用户给系统提供输入。这些输入设备可以是小键盘、 键盘、触摸板、多个触摸板等。可选的其他输入/输出3950可以是用 于站点的连接器。

能够使用在一个或多个计算设备(例如客户设备、服务器等)上 被存储和执行的代码和数据来实施图中所示的技术。这种计算设备使 用机器可读介质存储和传输(内部地和/或通过网络利用其他计算设 备)代码(由软件指令组成)和数据,诸如非瞬时(非瞬态, non-transitory)的有形机器可读介质(例如机器可读储存介质,诸如 磁盘;光盘;只读存储器;闪速存储器设备)和瞬时(瞬态,transitory) 传播信号(例如电的、光的、声音的或其他形式的被传播信号-诸如载 波、红外信号、数字信号等)。另外,这种计算设备通常包括一组与 一个或多个其他组件耦接的一个或多个处理器,其他组件诸如一个或 多个非瞬时的有形机器可读介质(以存储代码和/或数据)、用户输入 /输出设备(例如键盘、触摸屏和/或显示器)和网络连接(以使用瞬时 传播信号来传输代码和/或数据)。这组处理器与其他组件的耦接通常 是通过一个或多个总线和桥(也被称为总线控制器)。因此,给定计 算设备的非瞬时的机器可读介质通常存储用于在该计算设备的这组一 个或多个处理器上执行的指令。可以使用软件、固件和/或硬件的不同 组合来实施实施例的一个或多个部件。

虽然在本文中已经参考自动验证电子邮件地址而不需要用户点 击包括在验证电子邮件消息中的链接描述了操作,验证电子邮件消息 与验证用作在线通信会话端点标识符的电子邮件地址有关,但是实施 例不受到这样的限制。例如,在一些实施例中,当出于其他原因需要 验证电子邮件地址时,参考自动验证电子邮件地址描述的操作被执行。 例如,用户可以为了一种服务而注册,作为注册过程的一部分,该服 务需要电子邮件地址被验证为属于该用户。用户给服务提供电子邮件 地址并且接收消息(例如通过显示服务的网页),该消息指出电子邮 件地址需要被验证并且验证电子邮件消息已经被发送或将被发送给所 提供的电子邮件地址(验证电子邮件消息可以包括或可以不包括验证 链接)。客户设备上的应用可以自动核查相应于用于验证消息的电子 邮件地址的电子邮件帐户和它何时被定位,自动解析消息以定位验证 标记并且将包括电子邮件地址和验证标记的电子邮件地址验证消息传 输给与该服务相关的电子邮件验证服务器以验证电子邮件地址。虽然 附图中的流程图示出由某些实施例执行的操作的特殊顺序,但是应该 理解的是,这种顺序是示例性的(例如可选实施例可以按不同顺序执 行操作、组合某些操作、使某些操作重叠等)。

虽然已经就几个实施例描述了本发明,但是本领域技术人员将认 识到本发明不限于所描述的实施例,而是能够利用在所附权利要求的 精神和范围内的更改和变更进行实践。因此描述被视为示例性的而非 限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号