为在线通信会话注册客户计算设备的制作方法

文档序号:18644569发布日期:2019-09-12 08:48阅读:169来源:国知局
为在线通信会话注册客户计算设备的制作方法

对相关申请的交叉引用

本申请要求2010年9月20日提交的美国专利申请No.12/886,479的优先权,并且还要求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 iPod Apple Apple和各种其他设备(例如RIM 设备、Palm 设备等)的客户设备在具有不同NAT实施方式的网络之间频繁移动。例如,能够在Wi-Fi网络(例如802.11b,g,n网络);3G网络(例如通用移动通信系统(“UMTS”)网络、高速上行链路分组接入(“HSUPA”)网络等);和蓝牙网络(被称为个人局域网(“PAN”))上通信。未来的客户设备将能够在诸如WiMAX、先进的国际移动电信(“IMT”)、和先进的长期演进(“LTE”)(仅列出几个)的其他通信信道上通信。

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



技术实现要素:

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

SMS转接设备确定客户设备的电话号码(例如通过检查SMS消息的报头)并且将带有识别标记和电话号码的IP(因特网协议)消息传输给注册服务器。注册服务器基于识别标记和电话号码产生签名,并且将这些传输给SMS转接设备以便传送给客户设备。SMS转接设备将包括签名、识别标记和电话号码的SMS消息传输给客户设备。客户设备接着将带有签名、识别标记和电话号码的IP消息传输给注册服务器。注册服务器验证来自客户设备的信息,并且将识别标记与电话号码之间的关联存储于在线通信会话注册数据存储器(store)中。识别标记和电话号码的相关对合在一起唯一识别在线通信会话网络中的设备。

在客户设备已经注册过后,客户设备的用户可以发起和/或接收对在线通信会话(例如视频聊天/会议会话、即时消息会话等)的邀请。在一个实施例中,客户设备的电话号码被用作在线通信会话的在线通信会话端点标识符。通过示例,客户设备的用户可以邀请另一个客户设备(另一些客户设备)的其他用户(多个其他用户)使用他们的电话号码(多个电话号码)参与到在线通信会话中。在一些实施例中,客户设备原本不知道它自己的电话号码。

附图说明

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

图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的连接数据并且还包括客户设备A710的推送标记。接受消息还可以含有关于它是否是从之前的客户设备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处被转送给推送通知服务并且被推送给客户设备B720。同样,在操作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处将推送通知消息形式的在线通信会话邀请请求传输给客户设备B12615,在操作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和客户设备B12615进行认证。标记可以采取不同的形式,包括例如:唯一的ID中继会话ID代码、与中继会话相关的数字证书和/或唯一的加密密钥。

接着在操作2814处,邀请服务620将中继响应传输给客户设备B1 2615,该响应含有将进行中继连接的指示。在一个实施例中,中继响应能够包括用于为客户设备B1 2615选择的中继主机的中继标记和网络信息。在一个实施例中,可以将中继响应直接发送给客户设备B12615(绕过推送通知服务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将推送通知消息形式的邀请更新消息传输给客户设备B22620。邀请更新消息指出客户设备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与客户设备B12615之间的在线通信会话已经结束。例如,无论客户设备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的在线通信会话端点标识符和用于客户设备B2 2620的连接数据。转移请求消息还指出哪个设备(例如客户设备B2 2620)正在请求在线通信会话转移(例如通过客户设备B2 2620的设备ID和/或推送标记)。转移请求消息可以使客户设备A2610的在线通信会话应用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和客户设备C3120。在一个实施例中,如果客户设备B 3115和客户设备C 3120接通电源并且能够接收邀请请求,则它们将显示邀请请求。

在图31中示出的示例中,每个邀请都将被接受。因此在操作3148处,客户设备B 3115从连接数据交换610请求其连接数据。连接数据交换610确定客户设备B 3115的连接数据并且在操作3150处将其返回给客户设备B 3115。同样,客户设备C 3120在操作3152处从连接数据交换610请求其连接数据。连接数据交换610确定客户设备C3120的连接数据并且在操作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)传播信号(例如电的、光的、声音的或其他形式的被传播信号-诸如载波、红外信号、数字信号等)。另外,这种计算设备通常包括一组与一个或多个其他组件耦接的一个或多个处理器,其他组件诸如一个或多个非瞬时的有形机器可读介质(以存储代码和/或数据)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)和网络连接(以使用瞬时传播信号来传输代码和/或数据)。这组处理器与其他组件的耦接通常是通过一个或多个总线和桥(也被称为总线控制器)。因此,给定计算设备的非瞬时的机器可读介质通常存储用于在该计算设备的这组一个或多个处理器上执行的指令。可以使用软件、固件和/或硬件的不同组合来实施实施例的一个或多个部件。

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

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

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1