CN102215216A - 在电路交换呼叫和视频呼叫之间转换 - Google Patents

在电路交换呼叫和视频呼叫之间转换 Download PDF

Info

Publication number
CN102215216A
CN102215216A CN2010105702746A CN201010570274A CN102215216A CN 102215216 A CN102215216 A CN 102215216A CN 2010105702746 A CN2010105702746 A CN 2010105702746A CN 201010570274 A CN201010570274 A CN 201010570274A CN 102215216 A CN102215216 A CN 102215216A
Authority
CN
China
Prior art keywords
client device
call
video
video call
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010105702746A
Other languages
English (en)
Other versions
CN102215216B (zh
Inventor
贾斯廷·桑塔马利亚
大卫·马克劳德
杰里米·布朗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/886,490 external-priority patent/US8704863B2/en
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102215216A publication Critical patent/CN102215216A/zh
Application granted granted Critical
Publication of CN102215216B publication Critical patent/CN102215216B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1089In-session procedures by adding media; by removing media
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1095Inter-network session transfer or sharing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/0024Services and arrangements where telephone services are combined with data services
    • H04M7/0039Services and arrangements where telephone services are combined with data services where the data service is provided by a stream of packets which are rendered in real time by the receiving terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/0024Services and arrangements where telephone services are combined with data services
    • H04M7/0057Services where the data services network provides a telephone service in addition or as an alternative, e.g. for backup purposes, to the telephone service provided by the telephone services network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2201/00Electronic components, circuits, software, systems or apparatus used in telephone systems
    • H04M2201/50Telephonic communication in combination with video communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请涉及在电路交换呼叫和视频呼叫之间转换。客户端设备当前通过已建立的只有音频的电路呼叫交换连接到一个或更多个其他客户端设备,其接收来自用户的输入,以将只有音频的电路交换呼叫转换到视频呼叫。视频呼叫邀请消息被发送到其他客户端设备。客户端设备接收来自其他客户端设备的视频呼叫接受消息,并且开始向其他客户端设备发送由它的前向照相机捕捉的视频。响应于接收来自一个或多个其他客户端设备中每一个的至少一个视频帧,客户端设备从只有音频的电路交换呼叫转换到视频呼叫。在转换到视频呼叫之后,电路交换呼叫被丢弃。

Description

在电路交换呼叫和视频呼叫之间转换
相关申请的交叉引用
本申请要求2010年9月20日提交的美国专利申请No.12/886,490的优先权,以及要求2010年9月13日提交的U.S.临时申请No.61/382,479、2010年8月31日提交的U.S.临时申请No.61/378,924和No.61/378,926、2010年6月4日提交的U.S.临时申请No.61/351,814,以及2010年4月7日提交的U.S.临时申请No.61/321,865和61/321,866的利益,其均通过引用方式结合于此。
本申请可包括与共同在审、共同转让的2010年4月7日提交的U.S.临时申请No.61/321,832相关的主题,其名称为:Apparatus and Method For Inviting Usersto Online Sessions,其通过引用方式结合于此。
在2010年3月25日Apple的iPhone 4的原型机明显地从Apple的工程师那里被偷窃,本申请公开和要求的发明过早地、并且在没有Apple授权的情况下向公众公开了。本申请所基于的US优先权申请在那次明显偷窃前尚未提交。
技术领域
本发明的实施例涉及计算机网络领域,特别是在电路交换呼叫(circuitswitched call)和视频呼叫之间的转换。
背景技术
许多提供在线通信会话(例如即时通信、视频会议等)的实现方式需要计算设备的用户安装软件和/或注册该服务。因此,作为用户与另一个用户建立在线通信会话的前提,两个用户必须都注册和/或安装相同的软件。许多实现方式还保持存在(presence)(例如好友列表),其允许用户来确定其他用户的状态(例如在线、离线、离开等)。
大的公共网络,例如因特网,频繁地具有到较小私有网络的连接,例如到由公司、因特网服务提供商、或甚至单独的一户维护的私有网络。由于他们的特性,公共网络必须具有普遍同意的网络地址(即公共地址)的分配。由于多种原因,私有网络的维护者通常选择使用用于私有网络的私有网络地址,这些地址不是普遍同意的分配情况中的部分。因此,为了来自私有网络的网络业务能够穿越公共网络,需要一些形式的私有/公共网络地址转换(“NAT”)。
执行NAT操作的设备改变私有网络发出的数据分组以符合公共网络的寻址机制。特别地,网络地址转换器用它自己的公共地址和分配的端口号代替分组的源私有地址和端口号。网络地址转换器还改变为私有网络上的计算机接收的数据分组,用预期接收者的正确的私有地址和端口号代替目的公共地址和端口号。如同此处使用的,在上下文合适之处,术语“地址”应当被理解为包括地址和端口号,正如本领域普通技术人员理解的那样。
在当今网络计算中,NAT已经变得越来越普遍。NAT的一个优点是它减缓了公共网络地址空间的耗尽。例如,用在因特网上的TCP/IP地址包括四个字符串,每个有三个数字,从而提供了有限的地址空间。另外,该地址空间的某些部分为特定的用途或用户保留,进一步消耗了可用地址的实际数目。然而,如果使用NAT,私有网络或子网可使用任意数目的地址,并且仍然向外界呈现仅仅单个的、标准化的公共地址。这使得可用地址的数目几乎是无限的,因为每个私有网络理论上可以使用完全相同的私有地址。
NAT提供的另一个优点是更高的安全性,其源于这样的事实:公共网络上的那些计算机不能确定私有网络上计算机实际的(即私有的)网络地址。这是因为网络地址转换器只在公共网络上提供公共地址。另外,这个公共地址可能对应于私有网络上任何数目的计算机。
不同的NAT类型使用不同安全级别。例如,使用“完全锥形(cone)NAT”,一旦内部地址(iAddr:iPort)被映射到外部地址(eAddr:ePort),则任何外部主机可以通过发送分组到eAddr:ePort来向iAddr:iPort发送分组。使用“受限制的锥形NAT”,只有当iAddr:iPort之前已经向hAddr发送了分组时,具有地址hAddr的外部主机才可通过向eAddr:ePort发送分组来向iAddr:iPort发送分组。外部主机的端口是无关的。使用“端口受限制的锥形NAT”,只有当iAddr:iPort之前向hAddr:hPort发送了分组时,具有地址/端口hAddr:hPort的外部主机才可以通过向eAddr:ePort发送分组来向iAddr:iPort发送分组。最后,使用对称NAT,从同一iAddr:iPort到特定目的IP地址和端口的每个请求被映射到唯一的eAddr:ePort。如果同一内部主机向不同的目的地发送分组,将使用不同的外部地址和端口映射。只有从内部主机接收分组的外部主机可以向该内部主机返回分组。
点对点(Peer-to-Peer,P2P)计算指由计算节点组成的分布式网络构架,这些计算节点使它们的一部分资源对于其他网络参与者是直接可用的。P2P网络中的对等节点(peer)建立彼此之间的直接通信信道,并且同时作为客户端和服务器,不同于服务器提供资源而客户端消耗资源的传统客户端-服务器模型。
以上描述的NAT操作为P2P连接提出了许多问题。例如,如果两个对等节点中的一个或两个位于上述的一个或多个NAT类型之后,则在这两个对等节点之间建立直接连接变得越来越难。这个问题被这样的事实恶化:客户端设备,例如Apple iPod
Figure BSA00000373384700031
AppleApple
Figure BSA00000373384700033
以及各种其他设备(例如,RIM
Figure BSA00000373384700034
设备,Palm
Figure BSA00000373384700035
设备等)通常会在具有不同NAT实现方式的网络间频繁移动。例如,Apple iPhoneTM能够在Wi-Fi网络(例如802.11b,g,n网络)、3G网络(例如,通用移动电信系统(UMTS)网络,高速上行分组接入(HSUPA)网络等)和蓝牙网络(称为个人区域网络(PAN))上通信。未来的客户端设备将能够在另外的通信信道上通信,例如,列举一些,WiMAX、高级国际移动电信(IMT Advanced),以及高级长期演进(LTE Advanced)等。
免提单元(例如头戴式耳机、车载套件)通常用于为免提服务而与计算设备对等连接。例如,包括蜂窝电话功能的计算设备包括与免提单元对等连接的能力是很常见的,以作为该免提单元与该计算设备之间在听觉上的中继。
发明内容
描述了一种用于在只有音频的电路交换呼叫和视频呼叫之间转换的方法和装置。客户端设备当前通过已建立的只有音频的电路交换呼叫而连接到一个或多个其他客户端设备,它从用户接收输入,以从只有音频的电路交换呼叫转换到视频呼叫。视频呼叫邀请消息被发送到所述其他客户端设备。接收了视频呼叫邀请消息的客户端设备处的用户可以选择接受还是拒绝该消息。如果视频呼叫邀请被接受,则视频呼叫接受消息被发送到起始客户端设备。在接受视频呼叫邀请之后,参与电路交换呼叫的客户端设备建立点对点(P2P)连接。在P2P连接建立后,客户端设备开始通过P2P连接来发送和接收视频。在每个客户端设备已经接收到至少一帧之后,客户端设备从只有音频的电路交换呼叫转换到视频呼叫,包括显示正在接收的视频以及将音频的路由(route)从电路交换呼叫改变到视频呼叫。在转换到视频呼叫之后,上述只有音频的电路交换呼叫被丢弃(drop)。
附图说明
本发明可通过参考下面的用于说明本发明实施例的描述和附图得以最好的理解。图中:
图1是说明根据一个实施例为在线通信会话注册客户端设备的数据流程图;
图2是更详细地说明根据一个实施例的图1的客户端设备的框图;
图3是更详细地说明根据一个实施例的图1的注册服务器的框图;
图4是说明根据一个实施例为在线通信会话注册客户端设备的示例性操作的流程图;
图5说明根据一个实施例的示例性注册数据存储器;
图6说明一个实施例的整体网络拓扑;
图7是说明根据一个实施例的客户端设备之间的在线通信会话建立的数据流程图;
图8是说明了根据一个实施例的示例性中继服务的框图;
图9说明了根据一个实施例的API构架的一个实施例。
图10说明了根据一个实施例的示例性注册数据存储器;
图11说明了根据一个实施例的示例性NAT兼容表;
图12说明了根据一些实施例的示例性客户端设备和用于在电路交换呼叫和视频呼叫之间转换的图形用户界面;
图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说明根据一个实施例客户端计算设备接收视频呼叫的邀请、促使免提设备响铃、接收来自免提设备的应答指示、建立视频呼叫和将音频路由到免提设备;
图34说明根据一个实施例客户端计算设备发起视频呼叫,并且通过免提设备路由已建立的视频呼叫的音频;
图35说明根据一个实施例客户端计算设备响应于从免提设备接收呼叫请求而发起视频呼叫;
图36说明根据一个实施例客户端设备将已建立的视频呼叫的音频路由到免提设备;
图37说明根据一个实施例客户端计算设备响应于从免提设备接收结束呼叫请求而终止视频呼叫;
图38是说明可用在一些实施例中的示例性计算机系统的框图;
图39是说明可用在一些实施例中的示例性的数据处理系统的框图。
具体实施方式
在下文中,提出了许多特定的细节。然而,可以理解的是,本发明的实施例可在不存在这些特定细节的情况下实施。在其他实例中,已知的电路、结构和技术没有做出详细显示,以免模糊对本文的理解。本领域的普通技术人员,根据包括的描述,将能够实施合适的功能性,而不需要过分的实验。
说明书中提及的“一个实施例”、“实施例”、“示例实施例”等表示所描述的实施例可包括特定的特征、结构或特性,但是可能不一定每个实施例都包括该特定的特征、结构或特性。而且,这样的短语不一定要指同一实施例。另外,当结合一个实施例描述了特定的特征、结构或特性时,应当认为,不论是否明确地记载过,在其他实施例中结合这样的特征、结构或特性是在本领域技术人员的知识范围内。
在下面的说明书和权利要求书中,术语“耦合”和“连接”以及它们的派生词将被使用。应当理解,这些术语不是用作彼此的同义词。“耦合”用于表示两个或更多个要素彼此之间协作或交互,它们彼此之间可能是也可能不是直接实体接触或电接触。“连接”用于指示互相耦合的两个或更多要素之间建立了通信。
在线通信会话的自动注册
描述了一种为在线通信会话(例如P2P视频会议、P2P即时消息等)自动注册客户端计算设备(“客户端设备”)(例如工作站、膝上型电脑、掌上型电脑、移动电话、智能电话、多媒体电话、书写板(tablet)、便携式媒体播放器、GPS单元、游戏系统等)的方法和装置。在一个实施例中,基于计算设备处的事件(例如计算设备上电),客户端设备自动开始用于在线通信会话的注册过程。该自动注册过程包括客户端设备发送具有标识令牌(例如它的推送令牌(pushtoken))和客户端设备标识符的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唯一地标识客户端设备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消息传送给SMS中转设备130,并且将SMS中转设备130发来的SMS消息传送给客户端设备110。SMS中转设备130将移动网络和IP网络分离。
注册服务器140注册用于在线通信会话的客户端设备,例如客户端设备110。注册用于在线通信会话的客户端设备包括将设备的标识令牌与设备的电话号码(或其他在线通信会话端点标识符)关联。标识令牌和在线通信会话端点标识符之间的这些关联被存储在在线通信会话注册数据存储器150中。
基于客户端设备110处发生的事件(例如客户端设备上电、在线通信会话应用(例如P2P视频会议应用、P2P即时消息应用等)启动等),客户端设备110开始用于在线通信会话的注册过程。在一个实施例中,注册过程自动开始(无需用户交互);而在其他实施例中,在用户选择了为在线通信会话而注册客户端设备之后,注册过程开始。
在客户端设备110的电话号码被用作在线通信会话端点标识符、因而在注册数据存储器150中与客户端设备110的标识令牌115关联的实施例中,客户端设备110的电话号码必须被确定。因为客户端设备110并不是本来就知道它自己的电话号码,所以在一些实施例中,通过客户端设备110发送SMS消息来确定客户端设备110的电话号码。例如,在操作1,客户端设备110通过运营商SMSC125发送带有它的标识令牌115和设备标识符117的SMS消息至SMS中转设备130。在一些实施例中,SMS消息被发送到下述电话号码:该号码可以是为在线通信会话注册而专门建立的标准长度号码或者短号码(一种通常比完整的电话号码短很多的电话号码)。SMS消息所发往的电话号码被存储在客户端设备中(即运营商包(carrier bundle)中)。
运营商SMSC125接收SMS消息,并将它传送给SMS中转设备130。在操作2,SMS中转设备130确定客户端设备的电话号码。例如,SMS中转设备130检查SMS消息的头部来确定客户端设备110的电话号码。在确定电话号码后,SMS中转设备130向注册服务器140发送带有客户端设备110的电话号码、标识令牌115和设备标识符117的IP消息。有时,这被称为注册请求消息。
注册服务器140从SMS中转设备接收包括客户端设备110的电话号码、标识令牌115和设备标识符117的IP消息,并创建一个签名。该签名可以基于客户端设备110的电话号码、标识令牌115和/或设备标识符117,且被用于验证目的(此后将详细描述)。在一些实施例中,在生成签名时,随机数同样被使用,以处理多个客户端设备具有相同的电话号码的情况。在操作5,注册服务器140向SMS中转设备130发回签名、电话号码、设备标识符和令牌(例如在IP消息中)。有时,这被称为注册响应消息。
SMS中转设备130从注册服务器140接收签名、电话号码、设备标识符和令牌,并生成具有用于客户端设备110的签名和电话号码的SMS消息。在操作6,SMS中转设备130向客户端设备110发送带有签名和电话号码的SMS消息(通过运营商SMSC 125)。
客户端设备110接收和处理存储有其电话号码的SMS消息。在操作7,客户端设备110向注册服务器140发送IP消息,该消息带有它的标识令牌115、设备标识符117、它的电话号码和注册服务器生成的签名。有时,这被称为注册验证请求消息。
通过使用该签名,注册服务器140验证客户端设备110发送的数据。例如,注册服务器140比较客户端设备110发送的签名和在操作4过程中生成的签名。如果它们匹配,则数据是有效的。假设数据是有效的,则注册服务器140在在线通信会话注册数据存储器150中存储标识令牌115与客户端设备110的电话号码的关联关系。
在可选实施例中,不是通过SMS消息的传输确定客户端设备110的电话号码,而是设备的用户被提示输入客户端设备110的电话号码。在这些实施例中,客户端设备110直接将客户端设备110的电话号码(用户输入的)和它的标识令牌115发送给注册服务器140,注册服务器140会将它们在在线通信会话注册数据存储器150中关联起来。
图5说明了根据一个实施例的示例性注册数据存储器150。如图5所示,每条在线通信会话标识符记录510包括标识令牌字段520和电话号码字段525。在一些情况下,单个电话号码可能与多个标识令牌相关联。例如,不同的客户端设备可能具有相同的电话号码。在这些情况下,这些不同的客户端设备将具有不同的标识令牌。因此,当在线通信会话邀请被发给一个与多个标识令牌相关联的电话号码时,邀请将被发往与标识令牌关联的每个设备。
图2是根据一个实施例更详细说明客户端设备110的框图。图2将参考图4的示例性实施例得以描述,图4是说明为在线通信会话注册客户端设备的示例性操作的流程图。然而,应当理解,图4的操作可以由其他实施例执行,而不仅是参考图2所讨论的那些实施例,并且,参考图2讨论的实施例可以执行不同于参考图4所讨论的实施例的操作。
如图2所示,客户端设备110包括客户端在线通信会话注册模块(“客户端注册模块”)210、(一个或多个)运营商包215、推送令牌115、设备标识符117、SMS模块220和客户端在线通信会话注册数据存储器(“客户端注册数据存储器”)230。客户端注册模块210控制客户端设备110对在线通信会话的注册。该(一个或多个)运营商包215包括专用于运营商的设置参数,该设置参数包括用于注册的SMS中转设备的电话号码(例如SMS中转设备130的号码),还包括其他设置参数(例如接入点名称(APN)设置参数、多媒体消息服务(MMS)设置参数等)。SMS模块220发送和接收SMS消息。客户端注册数据存储器230存储与在线通信会话注册有关的数据(例如曾确定的客户端设备110的电话号码)。
参照图4,在块410,客户端注册模块210检测或接收触发在线通信会话注册的事件。这种事件的例子包括客户端设备110上电、用户打开在线通信应用(例如P2P视频会议应用、P2P即时消息应用等),等等。在一些实施例中,注册过程在客户端设备410每次上电时执行;而在其他实施例中,注册过程在客户端设备110第一次上电时执行。流程从块410前进到块415。
在块415,客户端注册模块210确定对于客户端设备110是否存在有效的标识令牌。如果不存在标识令牌,或者标识令牌已经过期,那么流程移动到执行可选动作的块425。例如,在使用推送令牌的实施例中,客户端设备110可以通过请求推送通知服务(通常在客户端设备110的远程)生成的推送令牌来发起令牌生成程序。推送通知服务生成专用于客户端设备110的推送令牌,并将它返回给客户端设备110。如果存在有效标识令牌,那么流程前进到块420,其中客户端注册模块210访问标识令牌115。流程从块420移动到块428。
在块428,客户端注册模块210访问设备标识符117。流程随后前进到块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消息将由运营商SMSC125接收,运营商SMSC125将其传送给SMS中转设备130。
在块440,SMS中转设备130基于所收到的SMS消息确定客户端设备110的电话号码。例如,SMS中转设备检查SMS消息的头部,该头部会包括发送者(在这个实例中发送端是客户端设备110)的电话号码。流程随后前进到块445,其中SMS中转设备130将客户端设备110的电话号码、标识令牌115和设备标识符117发送给注册服务器140(例如在安全的IP消息中)。流程从块445前进到块450。
图3是说明根据一个实施例详细描述的注册服务器140的框图。图3将参考图4的示例实施例而描述。然而,应当理解,图4的操作可以由参考图3所讨论的实施例之外的其他实施例执行,而参考图3所讨论的实施例可以执行不同于参考图4所讨论的那些操作。如图3所示,注册服务器140包括服务器在线通信会话注册模块305,该模块包括SMS中转接口310、签名生成器315、客户端设备接口325、验证模块330、验证数据存储器335和关联模块340。SMS中转接口310接收和发送消息至SMS中转设备130。例如,SMS中转接口310接收来自SMS中转接口310的电话号码、标识令牌和设备标识符元组(tuple),并且向SMS中转接口310发送电话号码、标识令牌、设备标识符和签名元组(有时称作“验证元组”)。客户端设备接口325接收并可以发送消息至客户端设备。例如,客户端设备接口325接收来自客户端设备的验证元组。
返回图4,在块450,签名生成器310生成用于从SMS中转设备130接收到的电话号码、标识令牌和设备标识符元组的签名。该签名将被用于在注册数据存储器150中存储之前,对电话号码与标识令牌的配对进行验证。在一些实施例中,该签名基于电话号码、标识令牌和/或设备标识符(例如密码化的哈希被用于电话号码、标识令牌和/或设备标识符,或其某些部分,以生成签名)。在一些实施例中,该签名还基于随机数,以处理多个客户端设备具有相同的电话号码的情况。签名生成器310存储该签名并可选地将电话号码、标识令牌和/或设备标识符存储在验证数据存储器325中。流程随后进行到块455,SMS中转接口310向SMS中转设备130发送签名、电话号码、设备标识符和标识令牌。流程随后从块455前进到块460。
SMS中转设备130接收来自注册服务器140的签名、电话号码和标识令牌。在块460,SMS中转设备向客户端设备110发送带有签名和电话号码的SMS消息(通过运营商SMSC125)。流程下一步前进到块465。
在块465,SMS模块220接收带有签名和电话号码的SMS消息,并且将签名和电话号码存储在客户端注册数据存储器230中。流程随后前进到块470,其中客户端注册模块210将带有电话号码、标识令牌115、设备标识符117和签名的IP消息发送至注册服务器。流程随后前进到块475。
客户端设备接口325接收来自客户端设备的电话号码、标识令牌、设备标识符和签名。该信息被传送到验证模块330,在块475该模块确定数据是否有效。例如,与生成签名时应用的哈希函数相同的哈希函数被用在从客户端设备接收的电话号码、标识令牌、和/或设备标识符上,并且验证模块330将结果与先前生成的签名(存储在验证数据存储器335中)比较。如果签名匹配,那么数据是有效的,并且流程前进到块480。
在块480,注册服务器140的关联模块330在注册数据存储器150中存储客户端设备的电话号码与客户端设备的标识令牌的关联关系。在一些实施例中,注册服务器140可将注册状态消息发送给客户端设备110,提醒客户端设备110注册是否成功。
在客户端设备注册之后,客户端设备处的用户可以发起和/或接受在线通信会话(例如视频聊天/会议会话、即时消息会话等)的邀请。例如,客户端设备处的用户可以邀请其他(一个或多个)客户端设备处的(一个或多个)其他用户使用他们的(一个或多个)电话号码参与在线通信会话。在一些实施例中,客户端设备并非本来就知道它自己的电话号码。尽管实施例已经描述了注册期间SMS消息的使用,但在其他实施例中,其他类型的文本消息也可以被使用(例如MMS(多媒体消息服务))。
为在线通信会话注册电子邮件地址
尽管图1的描述涉及注册电话号码来作为在线通信会话端点标识符,然而在其他实施例中,电子邮件地址可以用作在线通信会话端点标识符。图21说明了使用电子邮件地址作为在线通信会话端点标识符的在线通信会话注册客户端设备的整体网络拓扑。客户端设备2110A-N使用注册服务2130来为在线通信会话注册。例如,在一个实施例中,客户端设备2110A的用户使用在线通信会话客户端2115来注册电子邮件地址,以用作网络2180(例如因特网)上的在线通信的在线通信会话标识符。
图22A-B是根据一个实施例说明注册电子邮件地址作为在线通信会话端点标识符的示例性操作的流程图。图22A-B将参考图21所示的示例性实施例进行描述。然而,应当理解,图22A-B的操作可以由除了参考图21讨论的实施例外的其他实施例来执行,而且参考图21讨论的实施例可以执行不同于参考图22A-B讨论的实施例的操作。
在操作2210,注册服务2130接收来自客户端设备2110A的认证请求。例如,参考图23,该图描述了用户提供初始化信息的示例性操作,在操作2310,在线通信会话应用2115在客户端设备2110A上启动。流程随后前进到操作2315,客户端设备2110A接收用户输入的用户ID和密码,以及注册作为(一个或多个)在线通信会话端点标识符的一个或多个电子邮件地址。流程随后移动到操作2320,客户端设备2110A将用户ID和密码发送至注册服务2130。
尽管客户端设备2110A注册电子邮件地址来作为在线通信会话端点标识符,并且可能不包括电话功能,但是它可以使用电话号码,而不是电子邮件地址来发送在线通信会话邀请。除了接收用户ID、密码和一个或更多个电子邮件地址来注册,在一些实施例中,用户还可以提供关于他们当前处于哪个国家和/或地区的信息,以便如果用户向不包括国家代码和/或区域代码的电话号码发起在线通信会话时,可以使用对应的国家代码和/或区域代码。例如,在美国,本地电话呼叫可以通过使用7个数字来进行(因此不需要国家代码和区域代码)。基础的电话系统自动地确定国家和区域代码,并完成该呼叫。然而,在客户端设备2110A不包括电话功能的情况下,当使用不包括国家代码和/或区域代码的电话号码邀请用户参与在线通信会话时,客户端设备2110A不能依赖于基础的电话系统来自动地包括国家代码和/或区域代码。
在操作2320,客户端设备2110A接收来自用户有关他们位于哪个国家和/或地区的输入(例如区域代码、州、省、城市等)。流程随后前进到操作2320,其中如果用户向不包括国家代码和/或区域代码的电话号码发起在线通信会话,客户端设备2320将对应的国家和/或地区电话代码与使用的在线通信会话应用2115关联起来。例如,如果用户指示他们位于美国,并且该用户使用不包括国家代码的10位电话号码邀请一个用户进行在线通信会话,客户端设备2110A自动地将美国的国家代码加入到电话号码中。
返回到图22A,在收到来自客户端设备2110A的认证请求之后,使用所提供的用户名和密码执行认证过程。在一个实施例中,注册服务2130执行认证过程,而在另一实施例中,用户目录服务2160执行认证过程。用户目录服务2160是提供用户计费、认证和其他服务的集中服务。用户目录服务2160管理用户记录2165。在一个实施例中,每个认证的用户与包括多种信息(例如,一个或多个用户ID、密码、邮件地址、电话号码、姓名、生日、国家、与用户相关联的电子邮件列表(其还可以显示邮件地址是否是有效的)等)的用户记录关联。如果认证成功,随后流程前进到操作2216。如果认证失败,那么流程前进到操作2214,并且执行可选动作(例如注册服务2130向客户端设备2110A发送指示用户名和/或密码不正确的错误消息)。
在操作2216,注册服务2130生成和/或访问与用户ID相关联的在线通信会话简档。例如,注册服务2130可包括管理在线通信会话简档记录2150的在线通信会话帐户服务器2140。在一个实施例中,每个正在注册或已经注册在线通信会话的用户具有一个对应的在线通信会话简档记录。每个在线通信会话简档记录可包括一个或更多个包括有效状态的电子邮件地址组成的组,该有效状态是与简档关联的。每个在线通信会话简档记录还可包括一个或多个推送令牌,这些推送令牌分别对应于一个或更多个注册在线通信会话的客户端设备。每个简档记录还可包括用于验证来自客户端设备的某些通信的简档凭证。每个简档记录还可以指示哪些客户端设备(由推送令牌指示)已经注册或正试图使用电子邮件地址注册。
流程从操作2216前进到操作2218,注册服务2130向客户端设备2110A发送认证答复,该答复包括简档ID(例如标识了与所提供的用户ID相关联的简档的字符串)和简档凭证(credential)。认证答复还可以指示认证是成功的。流程随后前进到操作2220,注册服务2130从客户端设备2110A接收电子邮件验证请求,该电子邮件验证请求包括一个或多个要验证的电子邮件地址、简档ID、简档凭证和客户端设备2110A的推送令牌。电子邮件验证请求消息还可以包括客户端设备2110A的设备ID。然后,在操作2222,注册服务2130确定简档ID的简档凭证是否是有效的。如果不是,流程随后前进到操作2224,并且采取可选的动作(例如注册服务2130向客户端设备2110A发送错误消息)。如果简档凭证是有效的,那么流程前进到操作2223。在操作2223,注册服务2130将推送令牌和简档关联起来。例如,在线通信会话帐户服务器2140将推送令牌存储在用户的简档记录中。
流程随后前进到操作2226,注册服务2130确定电子邮件地址是否有效。有效的电子邮件地址是这样的电子邮件地址:该地址已被验证为属于下述用户请求:该用户请求正在请求将其注册为在线通信会话端点标识符。在线通信会话帐户服务器2140访问用户的简档记录2150以确定电子邮件地址是否有效。如果简档记录显示电子邮件地址不是有效的,在一些实施例中,注册服务2130向用户目录服务2160发送电子邮件验证请求以确定用户的用户记录2165是否显示电子邮件地址是有效的。如果电子邮件地址不是有效的,那么流程前进到操作2227,并且注册服务2130促使验证电子邮件消息发送给包括链接的电子邮件地址,,当其被选择时(或当其被输入到因特网浏览器时)该链接使得该电子邮件地址被验证。例如,选择链接引起电子邮件地址验证消息被发送,该电子邮件地址验证消息包括用于验证电子邮件地址的电子邮件地址和验证令牌。注册服务2130还可以向客户端设备发送电子邮件需要验证消息,指示电子邮件不是有效的(因此需要被验证),还可以指示验证电子邮件消息被发送到有关的电子邮件地址。流程随后前进到操作2410,将参考图24来描述。然而,如果电子邮件地址是有效的,那么流程前进到操作2228。
在操作2228,注册服务2130向客户端设备2228发送指示电子邮件地址是有效的电子邮件验证成功消息。流程随后前进到操作2230,注册服务2130从客户端设备2228接收包括电子邮件地址、简档ID和简档凭证的激活电子邮件请求。在操作2232,注册服务2130随后确定对于简档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,该图是说明验证电子邮件地址的示例性操作的流程图,在操作2410,客户端设备2110A确定它是否包括一个电子邮件客户端,该电子邮件客户端包括试图注册、但还未收到肯定的验证电子邮件消息的电子邮件帐户。如果它不包括这样的电子邮件客户端,那么流程前进到操作2440。否则,流程前进到操作2415。
在操作2415,对电子邮件帐户自动地周期性地检查验证电子邮件消息(例如在操作2227发送的验证电子邮件消息)。在一个实施例中,在线通信会话应用2115周期性地请求电子邮件客户端2120去检查验证电子邮件消息(电子邮件客户端2120可轮询(poll)电子邮件服务器2170以检查该验证电子邮件消息)。该验证电子邮件消息由一个或更多个标准组成的组标识,该标准包括“From:”字段、“To:”字段以及用于验证电子邮件地址的验证令牌(验证令牌对于每个要验证的电子邮件地址可以是唯一的)。验证令牌可位于验证电子邮件消息的头部或体部。如果验证电子邮件消息被接收,那么流程从操作2420前进到操作2425,否则,前进到操作2435。
在操作2425,验证电子邮件消息被返回给在线通信会话申请2115,它解析该消息以定位验证令牌。在定位验证令牌后,在线通信会话应用2115向注册服务2130发送包括验证令牌、电子邮件地址、简档ID和简档凭证的电子邮件地址验证消息。因此在这个实施例中,电子邮件地址被自动验证,不需要用户点击链接或以其他方式验证该邮件地址。在一个实施例中,在收到消息并确定简档凭证有效之后,注册服务2130向设备发生一个电子邮件有效推送消息(通过推送通知服务640),来指示电子邮件地址已被成功验证。从而,流程从操作2425前进到操作2430,客户端设备2110A等待接收电子邮件地址有效推送消息。
如果验证电子邮件消息未被接收到,那么流程前进到操作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所示,一个实施例中实现的整体网络拓扑可以包括多个客户端设备A-N,分别是670A-N,它们彼此互相通信,并且通过网络660与一个或多个服务610、620、630、640和650通信。尽管图示的是单个网络云,但网络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中每个可以与连接数据交换(connection data exchange,CDX)服务610、邀请服务620、注册服务630、推送通知服务640和中继服务650通信。在一个实施例中,服务610-650可以作为在例如服务器的一个或更多个物理计算设备上执行的软件来实现。
在一个实施例中,CDX服务610用作在两个或更多客户端设备之间建立在线通信会话所需要的连接数据的中央交换点。特别地,响应于客户端设备请求实现外部服务和客户端通过每个客户端设备的NAT通信(即通过NAT“穿孔”(punch a hole)以到达该设备),CDX服务610的一个实施例生成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”)套接字,建立客户端设备和CDX服务610之间的通信。本领域技术人员已知的是,UDP套接字连接不需要握手对话来保证分组可靠性、排序或数据完整性,而且,因此不需要消耗像TCP套接字连接那么多的分组处理开销。结果,UDP的轻量级、无状态的性质对于答复来自大量客户端的小查询的服务器是很有用的。另外,不像TCP,UDP与分组广播(其中分组被发送到局域网上的所有设备)和多播(其中分组被发送到局域网上的设备的子集)兼容。如下文描述的,尽管UDP可以使用,可以通过使用会话密钥加密NAT穿越数据来维持CDX服务610上的安全。
与CDX服务610使用的低开销、轻量级网络协议相反,在一个实施例中,客户端设备670A-N和邀请服务620、注册服务630、推送通知服务640、和/或中继服务650之间的通信使用固有的安全的网络协议来建立,例如超文本传输协议安全(HTTPS),其依赖于安全套接层(SSL)或传输层安全(TLS)连接。有关这些协议的细节已被本领域技术人员所熟知。
图7是说明根据一个实施例在客户端设备之间建立在线通信会话的数据流程图。在图7的例子中,客户端设备A710处的用户邀请客户端设备B720处的用户进行在线通信会话(例如P2P视频会议、P2P即时消息系统等)。在这个例子中,客户端设备A710有时被称作发起端客户端设备,客户端设备B720的用户有时被称作预期接收者,而客户端设备B720有时被称作预期接收客户端设备。在一些实施例中,在线通信会话邀请是盲目的邀请,并不需要在线。例如,客户端设备A710处的用户并不知道客户端设备B720处的用户当前是否在线或者可以参与在线通信会话。
虽然涉及图6和7所表述的实施例是特定于使用推送令牌和推送通知的,其他实施例并未被限制。例如,在其他实施例中,任何客户端到唯一令牌的注册或映射都可以用于关联标识令牌和客户端设备以及提供关联客户端设备身份和唯一标识的令牌的可信任的方法。
在操作1,客户端设备A710向连接数据交换610请求它的连接数据。该连接数据包括客户端设备间互相交换以建立在线通信会话(例如P2P会话)的信息。连接数据包括客户端设备的IP地址(例如公共IP地址)、请求的端口号、以及其他信息(例如优先权信息等)。连接数据交换610确定客户端设备A710的连接数据(例如公共/私有IP地址和端口、客户端设备A的NAT设备的NAT类型)。在操作2,连接数据交换610将连接数据返回给客户端设备A710。
在操作3,客户端设备A710向邀请服务620发送在线通信会话邀请请求以邀请客户端设备B720进行在线通信会话(例如P2P视频会议、P2P即时消息会话等)。在一个实施例中,该邀请包括客户端设备A710的连接数据,其可包括用于客户端设备A710的公共/私有IP地址和端口和客户端设备A的NAT设备的NAT类型,以及与客户端设备B720处的用户关联的在线通信会话端点标识符(例如客户端设备B720的电话号码、用户的用户名(例如Apple ID)、电子邮件地址、邮件地址、MAC地址等)。在线通信会话邀请请求可以采用HTTPS请求的形式,并且可以包括预先指定的证书授权机构签发的客户端证书。
在操作4,邀请服务620确定操作3的请求中包括的与在线通信会话端点标识符关联的推送令牌。例如,邀请服务620访问注册数据存储器655以确定与在线通信会话端点标识符关联的(一个或多个)推送令牌。如图7所示,推送令牌725被分配给客户端设备B720,并且从而与它的在线通信会话端点标识符关联。图10示出了根据一个实施例的示例性注册数据存储器655。如图10所示,每项在线通信会话标识符记录1010包括推送令牌字段1015和在线通信会话标识符字段1020。如图10所示,同一个在线通信会话标识符可与多个推送令牌关联。在这样的情况下,多个邀请将被发送(例如每个推送令牌一个)。
邀请服务620向推送通知服务640发送推送请求消息。在操作5,推送通知服务640以推送通知消息的形式向客户端设备B720发送在线通信会话邀请请求。该请求包括连接数据、在线通信会话端点标识符以及客户端设备A710的推送令牌(推送令牌715)。邀请请求还可包括专用于在线通信会话的信息,以向客户端设备B720的用户提供关于邀请的信息(例如,发送邀请的人的名称(例如用户名、真名、电话号码或它们的一些组合),邀请的目的(例如P2P视频会议、P2P即时消息会话等)等)。
在线通信会话邀请请求如果被打开并正常的运行,它将被接收和显示在客户端设备B720上。邀请请求包括用户用于接受或拒绝邀请的机制(例如接受按钮和拒绝按钮)。如果邀请请求被拒绝,客户端设备A710处的用户可接收到一个通知。假设在客户端B720处的用户接受了邀请请求,在操作6客户端设备B720从连接数据交换610处请求它的连接数据。连接数据交换610确定客户端设备B720的连接数据(例如公共/私用IP地址和端口,客户端设备B的NAT设备的NAT类型),并且在操作7,将连接数据返回给客户端设备B720。
在操作8,客户端设备B720随后向邀请服务620发送接受消息。该接受消息包括客户端设备B720的连接数据,并且包括客户端设备A710的推送令牌。该接受消息还可以包括关于下述内容的指示:即,关于该消息是否是来自客户端设备A710和客户端设备B720之间的先前失败的直接P2P连接尝试的答复。该接受消息可以采用HTTPS消息的形式。
在一些实施例中,邀请服务620确定客户端设备A710和客户端设备B720之间的P2P连接是否是可行的。在操作9,邀请服务620确定客户端设备A和B之间的直接P2P连接是否是可行的。例如,在一个实施例中,如果从客户端设备B620接收的接受消息指示它是来自先前失败的直接连接尝试(或者特定数目的先前失败的直接连接尝试)的答复,那么邀请服务620可以推断出直接P2P连接是不可行的。为了确定可行性,邀请服务620可以比较客户端设备A和B的NAT类型数据以确定客户端设备A和B的NAT设备是否支持直接P2P连接。在一个实施例中,上面描述的接受消息不包括先前失败尝试的指示。然而,在失败的直接连接尝试之后,客户端设备710-720中的任何一个都可以发送特殊的“中继邀请”请求(例如取代图7操作3的邀请请求),其指示需要中继连接。作为响应,邀请服务可以自动地调用此处描述的中继操作(下文描述)。
已知NAT类型的某些组合对于建立P2P连接是不兼容的。例如,完全锥形NAT可以和除了关闭的/装有防火墙的NAT之外的任何其他NAT类型一起使用来建立直接P2P连接。相反,对称NAT只能与完全锥形NAT一起使用来建立直接P2P连接。联合各种NAT类型的可行性在一个实施例中在图11所示的NAT兼容性表格1110中提出,其中列代表一个客户端设备(例如客户端设备A710)的NAT类型,而行代表其他客户端设备(例如客户端设备B720)的NAT类型。单元中的“1.0”表示在相关联的列和行中的NAT类型是兼容的,而“0.0”表示NAT类型是不兼容的。
如果邀请服务620确定直接P2P连接是可行的,那么邀请服务620将推送请求发送到推送通知服务640以发送邀请请求的接受。因此,在操作10B,推送通知服务640以推送通知的形式发送在线通信会话接受消息至客户端设备A710。该接受消息包括连接数据、在线通信会话端点标识符和客户端设备B720的推送令牌。该接受消息将被显示在客户端设备A710上。由于客户端设备A和B具有彼此的连接数据,客户端设备A和B具有足够的信息来建立直接P2P连接。因此,在操作11A,客户端设备A和B使用交换的连接数据建立直接的P2P连接。直接P2P连接可以通过已知的机制建立(例如使用因特网连接建立(ICE)或者其他已知的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向邀请服务620提供标识所选择的中继主机815A-B的响应。
在一个实施例中,中继查找响应包括中继服务650生成的中继令牌,以及已选择的客户端设备A和B用于中继连接时所使用的中继主机815A-B的网络地址(IP地址/端口)。在一个实施例中,中继令牌与中继会话关联,并且被中继主机815A-B使用以在连接到中继服务650时认证客户端设备A和B。该令牌可以采用多种形式,包括,例如,唯一的ID中继会话ID代码、数字证书和/或与中继会话关联的唯一的加密密钥。
邀请服务620向客户端设备A和B发送中继响应来指示中继连接将被创建。在一个实施例中,至客户端设备B的中继响应可包括中继令牌和中继主机815B的网络信息。在一个实施例中,至客户端设备B的响应可以直接发送(绕过推送通知服务640),因为它是响应于客户端设备B的邀请接受消息而被发送的。邀请服务620还向客户端设备A发送中继响应,其可包括中继令牌和中继主机A815A的网络信息。在这个实例中,该响应是通过推送通知服务640推送到客户端设备A的。
在操作12B,客户端设备A710使用中继主机815A的网络信息来建立与中继服务650的连接。类似的,在操作13B,客户端设备B720使用中继主机815B的网络信息来建立与中继服务650的连接。在每个这样的处理中,客户端设备A和B的任何NAT防火墙上被打开了新的孔,用于客户端设备A和B的NAT穿越/连接数据可由中继服务650确定,并分别返回给客户端设备A和B(例如通过检查设备的公共IP/端口)。在一个实施例中,中继服务650和客户端设备A和B实施通过Relay方式穿越NAT(Traversal Using Relay NAT,TURN)协议,正如本领域技术人员理解的,该协议允许NAT或防火墙后的元件接收来自TCP或UDP连接的数据。
在操作14B,客户端设备A710向邀请服务620发送中继更新,中继更新被转发到推送通知服务,又在操作17B被推送到客户端设备B720。类似的,在操作15B,客户端设备B720向邀请服务620发送中继更新,其被转发到推送通知服务620,并在操作16B被推送到客户端设备A610。由客户端设备A710发送的中继更新可以包括会话令牌、每个设备的在线通信会话端点标识符和由中继服务650确定的NAT穿越/连接数据。
在操作18B和19B,客户端设备A和B分别通过中继服务650建立在线通信会话连接。在一个实施例中,中继连接可在客户端设备A710将客户端设备B720的NAT穿越/连接数据发送给中继服务650时建立,反之亦然,从而允许中继服务确定到每个对等节点的中继主机815A-B的正确路径。
使用上面描述的技术,邀请服务620可以被实现为无状态服务,其内在是可升级的和能复原的,即使在具有大量客户端设备的大型系统中。例如,因为推送通知服务640本来能够定位和推送内容至注册的客户端设备,所以邀请服务620不需要跟踪每个设备的当前位置。另外,因为设备可以发送带有请求和响应的NAT穿越/连接数据,所以邀请服务620从来不需要维护任何预连接状态信息,从而减少了存储空间和邀请服务的处理需求。这样的实现在大型系统中尤其有用。
尽管图7描述了客户端设备处的用户邀请单个用户进行在线通信会话,实施例并不限于此。例如,在一些实施例中,客户端设备处的用户可以邀请多个用户参与一个在线通信会话。例如,用户可以向邀请服务发送带有多个在线通信会话端点标识符的单一邀请请求消息,来邀请不同客户端设备处的多个用户来参与到一个在线通信会话中。
在一些情况下,用户可以拥有与同一在线通信会话端点标识符关联的多个客户端设备。图26是一个数据流程图,说明当用户具有与同一在线通信会话端点标识符关联的多个客户端设备时管理邀请的示例性操作。
在操作2632,客户端设备A(由用户A操作)2610发送一个请求,向连接数据交换610请求它的连接数据。在操作2634,连接数据交换610返回客户端设备A的连接数据。客户端设备随后向邀请服务620发送携带用户ID B的在线通信会话邀请请求,以邀请用户B进行在线通信会话(例如P2P视频会议、P2P即时消息会话、视频呼叫等)。邀请请求包括A的连接数据。
在操作2638,邀请服务基于邀请请求消息中包含的B的ID执行目录查找。在这个例子中,目录查找操作返回客户端设备B1的推送令牌和客户端设备B2的推送令牌。因此,客户端设备B1与B2和B的ID关联。随后在操作2640,邀请服务620将推送请求消息发送给推送通知服务640,以将邀请请求消息推送给客户端设备B1 2615和客户端设备B2 2620。在操作2642,推送通知服务640采用推送通知消息的形式,发送在线通信会话邀请请求至客户端设备B12615以及在操作2644发送至客户端设备B2 2620。每个邀请请求消息包括客户端设备A2610的连接数据、用户A使用的在线通信会话端点标识符以及客户端设备A2610的推送令牌。邀请请求还可以包括专用于在线通信会话的信息(例如发送邀请的人的名称(例如用户名、真名、电话号码或它们的一些组合)、邀请的目的(例如P2P视频会议、P2P即时消息会话等)等)。从而,在线通信会话邀请请求被发送到与原始邀请请求中包含的在线通信会话端点标识符关联的各个设备。
在一个实施例中,邀请服务620向邀请客户端设备发送状态信息以指示邀请发往哪个/哪些客户端设备。从而,在操作2646,邀请服务620向客户端设备A 2610发送邀请状态更新,其指示在线通信会话邀请请求已发给客户端设备B12615和客户端设备B2 2620。在一个实施例中,客户端设备A2610跟踪接受邀请的客户端设备,并且保持向其他客户端设备通知在线通信会话的状态。
在一个实施例中,客户端设备B1 2615和客户端设备B2 2620将显示邀请请求,如果它们上电并且能够接收邀请请求的话。在图26所示的例子中,客户端设备B1 2615处的用户将正在接受邀请。因此,在操作2648,客户端设备B1 2615向连接数据交换610请求它的连接数据。连接数据交换610确定客户端设备B12615的连接数据,并在操作2650将其返回给客户端设备B1 2615。
在操作2652,客户端设备B1 2615随后向邀请服务620发送接受消息。该接受消息包括客户端设备B1 2615的连接数据和客户端设备A2610的推送令牌。该接受消息还可以包含指示,该指示有关它是不是来自客户端设备A2610和客户端设备B1 2615之间先前失败的直接P2P连接尝试的答复。另外,接受消息还可以包括A和B的在线通信会话端点标识符和客户端设备B2615的推送令牌。
在一些实施例中,在接收到在线通信会话的接受消息之后,邀请服务620确定直接P2P连接是否可行。因此,在操作2654,邀请服务620执行直接P2P兼容性险查来确定客户端设备A2610和客户端设备B12615之间的直接P2P连接是否可行,按照先前描述过的方式。如果客户端设备兼容直接P2P连接,那么执行参考图27描述的操作(从操作2710开始)。如果客户端设备不兼容直接P2P连接,那么执行参考图28描述的操作(从操作2810开始)。
参考图27,其说明了直接P2P连接可行时执行的操作,在操作2710,邀请服务620向推送通知服务640发送推送请求以发送客户端设备B1 2615对邀请的接受。在操作2712,推送通知服务640以推送通知的形式向客户端设备A2610发送在线通信会话接受消息。这个接受消息包括客户端设备B1 2615的连接数据和推送令牌,以及用户B所使用的在线通信会话端点标识符。
在一个实施例中,有时,在接收到指示客户端设备B1 2615已经接受邀请的接受消息之后,客户端设备A2610将通知客户端设备B2 2620客户端设备A2620已经接受了邀请。因此,在操作2714,客户端设备A2610向邀请服务发送邀请更新请求,其包括用户B的在线通信会话端点标识符,并且指示客户端设备B1 2615已经接受了邀请。邀请更新请求还可以向邀请服务620指示或指出哪个与用户B的在线通信会话端点标识符关联的客户端设备应该接收邀请更新消息(在这个例子中,客户端设备B2 2620应当接收邀请更新消息)。
邀请服务620根据用户B的在线通信会话端点标识符执行目录查找2716来确定客户端设备B2 2620的推送令牌。在确定推送令牌之后,邀请服务在操作2718向推送通知服务640发送推送请求以将邀请更新消息推送到客户端设备B22620。在操作2720,推送通知服务640以推送通知消息的形式将邀请更新消息发送给客户端设备B2 2620。该邀请更新消息显示客户端设备B1 2615已经接受了在线通信会话邀请。客户端设备B2 2620可以显示该邀请更新消息,并且可以维护客户端设备A2610和客户端设备B1 2615之间的在线通信会话的状态(例如,在线通信会话的持续时间等)。如同将参考图30更加详细描述的,在一个实施例中,客户端设备B2 2620可以发送一个转移请求,促使在线通信会话从客户端设备B1 2615转移到客户端设备B2 2620。
有时,在操作2712收到邀请接受消息之后,在操作2722客户端设备A2610和客户端设备B1 2615使用交换的连接数据建立直接P2P连接。该直接P2P连接可以通过已知的机制(例如,使用因特网连接建立(ICE)或其他已知的P2P连接机制)建立。应当理解,操作2722可以在操作2714-2720之前或期间执行。
尽管图26描述了仅有单个客户端设备接受邀请消息的例子,在一些情况下,多个客户端设备可以接受直接给单个用户的在线通信会话的邀请。例如,在一些情况下,客户端设备B1 2615和客户端设备B2 2620可以接受邀请。在一个实施例中,客户端设备A2610与第一个从其接收到接受消息的客户端设备建立在线通信会话。客户端设备A2610可以使取消消息被发送到(一个或多个)其他客户端设备(例如,取消消息可以发送给邀请服务,随后通过推送通知服务推送给所述(一个或多个)其他客户端设备)。
返回去参考图26的操作2654,如果在客户端设备A2610和客户端设备B12615之间的直接P2P连接是不可行的,那么将执行图28描述的操作。图28是说明当直接P2P连接不可行时所执行的示例性操作的数据流程图。在操作2810,邀请服务620向中继服务650发送中继查找请求2810以确定由客户端设备A2610和客户端设备B2615使用的中继主机。该中继查找请求可以包括中继服务650用来为客户端设备选择合适的中继主机的客户端设备的网络信息(例如NAT穿越/连接数据和/或NAT类型数据)。如图8所示,中继服务650的一个实施例包括多个中继主机815A-B和包含有关各个中继主机的网络信息的中继主机数据库810。例如,邀请服务620向中继服务650发送中继查找请求,中继服务650使用客户端设备的网络信息查询中继主机数据库810。一旦接收到数据库查找结果,中继服务650在操作1201提供标识所选的中继主机815A-B的中继查找响应。在一个实施例中,中继查找响应包含中继服务650生成的中继令牌和将由客户端设备用于中继连接的中继主机815A-B的网络地址(IP地址/端口)。在一个实施例中,中继令牌与中继会话关联,并且由中继主机815A-B使用以在连接到中继服务650时认证客户端设备A2610和客户端设备B1 2615。该令牌可以使用各种形式,这些形式包括(例如):唯一的ID中继会话ID代码、数字证书和/或唯一的与中继会话关联的加密密钥。
邀请服务620随后在操作2814向客户端设备B1 2615发送中继响应,其中包含中继连接将被建立的指示。在一个实施例中,中继响应可以包括中继令牌和为客户端设备B1 2615所选的中继主机的网络信息。在一个实施例中,中继响应可以直接发送给客户端设备B1 2615(绕过推送通知服务640)。邀请服务620还可以在操作2816向客户端设备A2610发送中继响应,其中包括中继令牌以及为客户端设备A2610选择的中继主机的网络信息。在一些实施例中,中继响应通过推送通知服务640被推送到移动设备A。
在操作2818,客户端设备A2610随后将邀请更新请求发送给邀请服务620,该邀请更新请求包括用户B的在线通信会话端点标识符并且指出客户端设备B12615已经接受了邀请。该邀请更新请求还可以向邀请服务620指示或指出与用户B的在线通信会话端点标识符关联的哪个客户端设备应当接收邀请更新消息(在这个例子中,客户端设备B2 2620应当接收邀请更新消息)。
邀请服务620根据用户B的在线通信会话端点标识符执行目录查找2820来确定客户端设备B2 2620的推送令牌。在确定推送令牌之后,邀请服务在操作2822向推送通知服务640发送推送请求以将邀请更新消息推送到客户端设备B22620。在操作2824,推送通知服务640以推送通知消息的形式将邀请更新消息发送给客户端设备B2 2620。该邀请更新消息显示客户端设备B1 2615已经接受了在线通信会话邀请。客户端设备B2 2620可以显示该邀请更新消息,并且可以维护客户端设备A2610和客户端设备B1 2615之间的在线通信会话的状态(例如,在线通信会话的持续时间等)。在一个实施例中,客户端设备B2 2620可以发送一个转移请求,促使在线通信会话从客户端设备B1 2615转移到客户端设备B2 2620。
在操作2826,客户端设备A2610使用为它选择的中继主机的网络信息来建立与中继服务650的连接。类似的,在操作2828,客户端设备B1 2620使用为它选择的中继主机的网络信息来建立与中继服务650的连接。在每个这样的操作中,在客户端设备的任何NAT防火墙上打开了新的孔,而用于客户端设备的NAT穿越/连接数据可由中继服务650确定,并分别返回给它们(例如通过检查客户端设备的公共IP/端口)。在一个实施例中,中继服务650和客户端设备A2610和客户端设备B1 2615实施通过Relay方式穿越NAT(Traversal Using RelayNAT,TURN)协议,正如本领域技术人员理解的,该协议允许NAT或防火墙后的元件接收来自TCP或UDP连接的数据。
在操作2830,客户端设备A2610向邀请服务620发送中继更新,中继更新在操作2832被转发到推送通知服务,又在操作2834被推送到客户端设备B12615。类似的,在操作2836,客户端设备B1 2615向邀请服务620发送中继更新,中继更新在操作2838被转发到推送通知服务640,并在操作2840被推送到客户端设备A2610。由客户端设备A2610发送的中继更新消息可以包括中继令牌、每个在线通信会话端点标识符和由中继服务650在操作2826和2828确定的NAT穿越/连接数据。在一个实施例中,在客户端设备的NAT信息中一个或更多个改变时,执行中继更新操作。最后,在操作2842和2844,客户端设备A2610和客户端设备B1 2620分别通过中继服务650建立一个P2P连接。在一个实施例中,中继连接可以响应于客户端设备A2610将客户端设备B1 2615的NAT穿越/连接数据发送给中继服务650而建立,反之亦然,从而允许中继服务650能够确定到每个对等节点的中继主机的正确路径。
图29是说明根据一个实施例当在线通信会话结束时执行的示例性操作的数据流程图。在操作2910,客户端设备A2610和客户端设备B1 2615之间的在线通信会话已经结束。例如,客户端设备A2610和客户端设备B1 2615中的任何一个终止了在线通信会话(或者在线通信会话以别的方式终止了)。在线通信会话可能是通过直接P2P连接或通过中继。
有时,在在线通信会话结束之后,在操作2912,客户端设备A2610向邀请服务620发送在线通信会话更新请求。在线通信会话更新被发送以通知不再是在线通信会话一部分的客户端设备B2 2620在线通信会话的结束。在线通信会话更新请求可以包括用户B的在线通信会话标识符,并且可以向邀请服务620指示或指出与用户B关联的哪个客户端设备(例如客户端设备B2 2620)将接收更新。
邀请服务620根据用户B的在线通信会话端点标识符执行目录查找操作2914来确定客户端设备B2 2620的推送令牌。在确定推送令牌之后,邀请服务在操作2916向推送通知服务640发送推送请求以将更新消息推送到客户端设备B2 2620。在操作2720,推送通知服务640以推送通知消息的形式将在线通信会话更新消息发送给客户端设备B2 2620。该在线通信会话更新消息显示客户端设备A2910和客户端设备B1 2615之间的在线通信会话已经结束。
图30是说明根据一个实施例将在线通信会话从一个客户端设备转移到另一个客户端设备所执行的示例性操作的流程图。在图30所示的例子中,假设客户端设备B1 2615和B2 2620中的每个均已收到加入客户端设备A2610发起的在线通信会话的邀请(他们共享邀请中使用的在线通信会话端点标识符),并且客户端设备B1 2615已经接受并且建立了与客户端设备A2610的在线通信会话(如图26和27或28所述)。另外,客户端设备B2 2620已经接收到邀请更新,其指出客户端设备B1 2615已经接受了邀请。在图30示出的例子中,在线通信会话将从客户端设备B1 2615转移到客户端设备B2 2620。例如,客户端设备B22620处的用户已经指出它想接替客户端设备A2610和客户端设备B1 2620之间的在线通信会话。在一个实施例中,在线通信会话申请2115显示了客户端设备A2610和客户端设备B1 2615之间的在线通信会话的状态,其允许客户端设备B2 2620处的用户发出转移在线通信会话请求(例如,通过点击或按压客户端设备B1 2615的在线通信会话应用2115上可用的链接或虚拟按钮)。
在操作3010,客户端设备B2 2620从连接数据交换610处请求它的连接数据,并且在操作3012接收所请求的连接数据(如果它还不知道它的连接数据)。客户端设备B2 2620随后在操作3014向邀请服务620发送转移请求消息,该转移请求消息包括客户端设备A2610的推送令牌和客户端设备B2 2620的连接数据。转移请求消息还可以包括A和/或B的在线通信会话端点标识符和/或客户端设备A2610的推送令牌。
邀请服务620随后在操作3016向推送通知服务640发送推送请求,以促使推送通知服务640以推送通知的形式向客户端设备A2610发送转移消息。邀请服务620还在操作3018执行直接P2P兼容检查以确定客户端设备A2610和客户端设备B2 2620之间的直接P2P连接是否可行。对于该例子,直接通信是可行的,然而,应当理解,在线通信会话转移也可以发生在中继的情况下。
在操作3020,推送通知服务将转移请求消息发送给客户端设备A2610。该转移请求消息可包括B的在线通信会话端点标识符和客户端设备B2 2620的连接数据。该转移请求消息还指出哪个设备(即客户端设备B2 2620)在请求在线通信会话转移(例如通过设备ID和/或客户端设备B2 2620的推送令牌)。该转移请求消息可促使客户端设备A2610的在线通信会话应用2115显示转移请求,并且可允许用户接受或拒绝转移请求。假设转移请求被接受,客户端设备A2610在操作3022使用交换的连接数据建立与客户端设备B2620的直接P2P连接。应当理解,在这个点客户端设备A2610和客户端设备B1 2615之间的在线通信会话是激活的。客户端设备A2610随后向客户端设备B1 2615发送在线通信会话更新,指示在线通信会话将转移到客户端设备B2 2620。在一个实施例中,这个更新消息在客户端设备之间的现有的在线通信会话上传送。客户端设备A2610随后在操作3026切换到与客户端设备B2 2620的在线通信会话,并且在操作3028拆掉与客户端设备B1 2615的在线通信会话。
尽管已经描述了有关邀请单个用户参与在线通信会话(可能与也可能不与多个客户端设备关联)的实施例,在一些实施例中多个用户可被邀请到在线通信会话。图31是说明发起和建立与多个用户的在线通信会话的示例性操作的流程图。
在操作3132,客户端设备3110向连接数据交换610请求它的连接数据;在操作3134,返回请求的连接数据。在操作3136,客户端设备A3110向邀请服务620发送邀请请求,该邀请请求包括客户端设备A3110的连接数据、与用户B关联的在线通信会话端点标识符、以及与用户C关联的在线通信会话端点标识符。因此,客户端设备A3110处的用户要邀请多个用户参与在线通信会话。
邀请服务620执行目录查找操作3138以确定与用户B的在线通信会话端点标识符和用户C的在线通信会话端点标识符关联的推送令牌。在这个例子中以及为了简单起见,目录查找返回与用户B的在线通信会话端点标识符关联的客户端设备B3115和与用户C的在线通信会话端点标识符管理的客户设备C3120的结果。邀请服务620随后向推送通知服务640发送推送请求3140来请求推送通知服务640以推送消息的形式向客户端设备B和C发送邀请。推送通知服务640随后在操作3142向客户端设备B3115发送邀请请求,并且在操作3144向客户端设备C3120发送邀请请求。每个邀请请求消息包括客户端设备A3110的连接数据、用户A使用的在线通信会话端点标识符以及客户端设备A3110的推送令牌。
在一个实施例中,邀请服务620向邀请客户端设备发送状态消息以指示邀请是发往哪个/哪些客户端设备的。因此,在操作3146,邀请服务620向客户端设备A3110发送邀请状态更新,指示在线通信会话邀请请求已发送给客户端设备B3115和客户端设备C3120。在一个实施例中,客户端设备B3115和客户端设备C3120将显示邀请请求,如果它们上电并且能够接收邀请请求的话。
在图31示出的例子中,各个邀请将被接受。因此在操作3148客户端设备B3115从连接数据交换610请求它的连接数据。连接数据交换610确定客户端设备B3115的连接数据,并且在操作3150将它返回给客户端设备B3115。类似的,在操作3152客户端设备C3120从连接数据交换610请求它的连接数据。连接数据交换610确定客户端设备C3120的连接数据,并且在操作3154将它返回给客户端设备C3120。在操作3156,客户端设备B3115随后将接受消息发送给邀请服务620,在操作3158,客户端设备C3120向邀请服务620发送接受消息。邀请服务620随后执行直接P2P兼容性检查3160以确定在客户端设备A3110和客户端设备B3115之间,以及在客户端设备A3110和客户端设备C3120之间的直接P2P连接是否可行。对于这个例子,客户端设备之间的直接P2P连接是可行的。因此,使用交换的连接数据,在操作3162,客户端设备A3110和客户端设备B3115建立用于在线通信会话的直接P2P连接,以及在操作3164客户端设备A3110和客户端设备B3120建立用于在线通信会话的直接P2P连接。在这个例子中,客户端设备A3110本质上作为在线通信会话的主机。因此,客户端设备B3115和客户端设备C3120之间要发送的数据被客户端设备A3110中继。在其他实施例中,各方之间的整网连接都被建立。在这样一个实施例中,另一个P2P连接将建立在客户端设备B3115和客户端设备C3120之间。
尽管此处描述的实施例描述了为在线通信会话注册客户端设备的机制,在一些实施例中,注册140可以实现一个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实现软件组件通信。应当理解,API实现软件组件还可以作为一个API调用软件组件(即它可以对不同的API实现软件组件揭示的API执行API调用),以及通过实现暴露于不同的API调用软件组件的API,API调用软件组件还可以作为一个API实现软件组件。
API可以允许多个API调用软件组件以不同的编程语言撰写以与API实现软件组件通信(因此API可以包括用于翻译API实现软件组件和API调用软件组件之间的调用和返回的特征);然而,API可以以特定的编程语言实现。
图9说明了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调用软件组件也可以使用API 920,这些组件可以是用与API调用软件组件930不同的语言(或相同的语言)写的。
API实现软件组件910、API 920以及API调用软件组件930可以存储在机器可读介质中,该介质包括了任何用于以机器(例如计算机或其他数据处理系统)可读的形式存储的机制。例如,机器可读介质包括磁盘、光盘、随机存取存储器、只读存储器、闪存设备等。
在电路交换呼叫和视频呼叫之间转换
在一些实施例中,客户端设备可以从已建立的只有音频的电路交换呼叫转换到视频呼叫,而不显著地中断各方之间的通信。例如,已建立的只有音频的电路交换呼叫的一方选择转换到视频呼叫(其包括视频帧和音频),这将引起视频呼叫邀请消息(一种形式的在线通信会话邀请消息)被发送到该呼叫的其他(一个或多个)参与者。如果所述其他(一个或多个)参与者接受视频呼叫邀请,则将在参与者的客户端设备之间建立P2P连接。当P2P连接正在协商时,参与者能够通过只有音频的电路交换呼叫来通信。在P2P连接已经建立并且各方之间进行视频通信后,客户端设备转换到视频呼叫。只有音频的电路交换呼叫随后被丢弃,参与者能够通过视频呼叫通信。
图12说明了根据一些实施例的示例性客户端设备1210和用于在电路交换呼叫与视频呼叫之间转换的图形用户界面。客户端设备1210包括扬声器1255(在喇叭扬声器模式期间使用)、前向照相机1260(捕捉用于视频呼叫的视频)、麦克风1265(捕捉声音)、受话器/扬声器1270(通常在呼叫期间用户将客户端设备1210拿到耳边时使用)、以及显示屏1275(在一些实施例中是触摸屏)。客户端设备1210还可以包括双耳式耳机/头戴式耳机插孔、接近传感器、周围光线传感器、(一个或多个)加速计和其他组件。应当理解,客户端设备1210的构架是示例性的,包括更多或更少的不同构架的也可以用在实施例中。
如图12所示,图形用户界面1205当前正显示在显示屏1275上。客户端设备1210的用户当前正参与只有音频的电话呼叫(与电话号码(408)555-1234)。图形用户界面1205在呼叫期间包括几个不同的选项提供给用户。例如,客户端设备1210响应于接收用户输入(例如在合适的图标上敲击或其他预定义的手势)执行以下操作:当输入被施加到结束呼叫图标1250时结束呼叫;响应于输入被施加到静音图标1220,将音频呼叫静音;响应于输入被施加到键盘图标1225,显示数字键盘(例如,给呼叫增加额外的电话号码);响应于输入被施加到扬声器图标1230(将音频输出切换到扬声器1255)而将呼叫放置于喇叭扬声器;响应于输入被施加到增加呼叫图标1235,增加呼叫;响应于输入被施加到保持图标1240,将呼叫置于保持(hold);响应于输入被施加到联系人图标1245,显示用户的联系人列表;以及响应于输入被应用到视频呼叫图标1215,转换到视频呼叫。
图17-18是说明根据一个实施例将只有音频的电路交换呼叫转换到视频呼叫的示例性操作的流程图。图17-18将参考图12、13和14的示例性实施例而得以描述。然而,应当理解,图17-18的操作可以由本发明除了参考图12、13和14讨论的实施例外的实施例来执行,而参考图12、13和14讨论的实施例可以执行不同于参考图17-18所讨论的操作。
如图17所示,客户端设备1210和1410通过只有音频的电路交换呼叫1710连接(客户端设备1210的用户或者是客户端设备1410的用户发起了呼叫)。因此,客户端设备1210和1410的用户可以通过已建立的电路交换音频呼叫通信。在块1712,客户端设备1210接收转换到视频呼叫的输入。例如,用户通过在视频呼叫图标1215上敲击或执行其他定义的姿势选择了转换到视频呼叫。
流程随后前进到块1714,其中客户端设备1210使视频呼叫邀请消息(一种形式的在线通信会话邀请请求消息)被发送到客户端设备1410(由客户端设备1410的电话号码标识)。在一些实施例中,使用图6和7中描述的构架发送在线通信会话邀请请求消息。流程随后前进到块1716。
在块1716,客户端设备1210确定音频是否当前正通过喇叭扬声器(即扬声器1255)或通过双耳式耳机/头戴式耳机插孔而被路由。如果是,那么流程前进到块1720。如果不是,则流程前进到块1718,客户端设备1210通过客户端设备1210的喇叭扬声器(例如扬声器1255)对音频进行路由,并且流程前进到块1720。
在块1720,客户端设备1210显示前向照相机1260当前捕捉的视频预览,以允许客户端设备1210的用户为视频电话做准备(例如为视频电话合适地放置客户端设备1210)。图13说明了显示视频预览1310的客户端设备1210,该视频预览显示了前向照相机1260当前捕捉的视频。尽管未显示在图13中,但在一些实施例中,取消按钮也显示在GUI 1305上,以允许用户取消视频呼叫邀请。流程从块1720前进到块1722。
在块1726,客户端设备1410接收到视频呼叫邀请消息,该消息邀请客户端设备1410的用户进行视频呼叫。流程随后从块1726前进到块1728。在一些实施例中,客户端设备1410具有类似于客户端设备1210的构架。例如,如图14所示,客户端设备1410包括扬声器1455(在喇叭扬声器模式使用)、前向照相机1460(为视频呼叫捕捉视频)、麦克风1465(捕捉声音)、受话器/扬声器1470(通常在呼叫期间用户将客户端设备1210拿到耳边时使用)、以及显示屏1475(在一些实施例中是触摸屏)。客户端设备1410还可以包括双耳式耳机/头戴式耳机插孔、接近传感器、周围光线传感器、(一个或多个)加速计和其他组件。应当理解,客户端设备1410的构架是示例性的,包括更多或更少的不同构架也可以用在实施例中。
在块1728,客户端设备1410播放一个或更多个指示消息接收的音频音调,以向用户提醒该消息。音频音调在不同实施例中可以是不同的(例如音频音调可以和客户端设备1410上使用的呼叫等待音类似(尽管它们不是来自与客户端设备1410关联的运营商),音频音调可以是唯一的和专用于视频呼叫的,等)。在一些实施例中,如果客户端设备1410不在用户耳朵附近(例如由客户端设备1410的接近传感器指示)和/或如果该呼叫目前在喇叭扬声器模式,则客户端设备1410不播放表明收到视频呼叫邀请消息的音频音调。流程从块1728前进到块1730。
在块1730,客户端设备1410显示视频呼叫邀请消息,并且可选地显示前向照相机1460当前正在捕捉的视频预览,以允许客户端设备1410的用户为视频呼叫做准备,流程前进到块1732。图14说明了显示视频呼叫邀请1440的GUI1405。如图14所示,视频呼叫邀请1440包括接受按钮1432、拒绝按钮1434和视频预览1430(其显示了前向照相机1460当前捕捉的内容)。尽管图1410显示了视频呼叫邀请1440包括视频预览1430(也就是说,视频预览1430包含在视频呼叫邀请1440内),但在其他实施例中,视频预览1430位于视频呼叫邀请1440之外和/或与视频呼叫邀请1440重叠。客户端设备1410的用户可以选择接受按钮1432来接受视频呼叫邀请(例如,通过敲击或执行其他预定义的手势以在接受按钮1432上输入),并且可以选择拒绝按钮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,客户端设备1210确定它是否已经收到了来自客户端设备1410的视频呼叫拒绝消息。如果是,那么流程前进到块1910,否则流程返回到块1722。
参考图18,在块1810(客户端设备1410处的用户已经接受了视频呼叫邀请),客户端设备1410确定目前音频是否正在通过客户端设备1410的喇叭扬声器(例如扬声器1470)或者头戴式耳机而路由。如果不是,流程前进到块1812,音频的路由从扬声器1455切换到喇叭扬声器(例如扬声器1470),并且流程前进到块1814。如果音频已被通过喇叭扬声器或头戴式耳机而路由,那么流程前进到块1814。
在块1814,客户端设备1410显示前向照相机1460当前正在捕捉的视频预览。只有在由于块1730中操作而导致视频预览当前没有被显示时,块1814的操作才执行。流程随后从块1814前进到块1820。
在块1818和1820,客户端设备1210和1410建立互相之间的P2P连接。该P2P连接可通过已知的机制(例如使用因特网连接建立(ICE)或其他已知的P2P连接机制)建立。假设P2P连接已成功建立,流程从块1818和1820分别前进到块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,在那里电路交换音频呼叫被丢弃。
图15和16分别说明了已经转换到视频呼叫的客户端设备1210和1410。如图15所示,客户端设备1210显示视频1510,它是客户端设备1410的前向照相机1460正在捕捉的视频。客户端设备1210还显示视频1515,是由前向照相机1260正捕捉的视频。GUI 1505还包括结束视频按钮1520、以及结束视频和呼叫按钮1625。结束视频按钮1520允许用户仅仅结束视频呼叫并返回到音频呼叫。结束视频和呼叫按钮1525允许用户完全结束视频呼叫(例如,结束与客户端设备1410处的用户的通话)。如图16所示,客户端设备1410显示视频1610,是客户端设备1210的前向照相机1260正在捕捉的视频。客户端设备1410还显示视频1615,是前向照相机1460捕捉的视频。GUI 1605还包括结束视频按钮1620和结束视频和呼叫按钮1625。
图19是说明根据一个实施例在收到视频呼叫拒绝消息的客户端设备上执行的示例性操作的流程图。在块1910,客户端设备1210收到视频呼叫拒绝消息(客户端设备1410处的用户已经拒绝了视频呼叫邀请)。流程从块1910前进到块1912,客户端设备1210显示视频呼叫拒绝消息,并且可选地播放一个或更多个指示视频呼叫拒绝消息的接收的音频音调。流程随后前进到块1914,其中客户端设备1210停止显示它自己的视频预览。如果在操作1718音频输出在之前被改变到喇叭扬声器,客户端设备1210还可以提示用户返回到原始音频输出(例如通过扬声器1270)。
图20是说明根据一个实施例客户端设备从视频呼叫转换到电路交换呼叫时执行的示例性操作的流程图。视频呼叫2010建立在客户端设备1210和1410之间(视频呼叫可以根据参考图17和18描述的机制建立,或者可以在无需从电路交换音频呼叫转换的情况下建立)。在块1712,客户端设备1210接收转换到只有音频的电路交换呼叫的输入。例如,参考图15,客户端设备1210的用户已经选择了结束视频按钮1520(例如在结束视频按钮1520上通过敲击或执行其他预定义的手势)。客户端设备1210随后向客户端设备1410发送一个消息,指示转换到只有音频的电路交换呼叫2014。
客户端设备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实施蓝牙头戴式耳机简档(例如2008年12月18日的头戴式耳机简档(Headset Profile,HSP)1.2规范中定义的)和/或蓝牙免提简档(例如在2005年11月25日的免提简档1.5(Hands-FreeProfile,HFP 1.5)规范中定义的)。免提管理器3270允许免提单元3220作为WPAN 3225中IP视频呼叫和只有音频的蜂窝呼叫的听觉中继,而且允许其执行其他免提服务。例如,在IP视频呼叫的情况下,呼叫的音频部分可以通过免提单元3220路由,而不是客户端设备3210的扬声器路由,而呼叫的视频部分保持由客户端设备3210显示(或者由附带的显示器显示)。免提设备3220还包括麦克风以捕捉音频信息,其随后被发送到客户端计算设备3210。因此,用户可以使用免提设备3220在IP视频呼叫和/或只有音频的蜂窝呼叫期间讲话或收听音频。
免提管理器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接收视频呼叫的邀请,促使免提设备响铃、接收来自免提设备的应答指示、建立视频呼叫以及将音频路由到免提设备。图33将参考图32的示例性实施例而描述。然而,应当理解,图33的操作可以由不同于参考图32讨论的实施例来执行,而且参考图32讨论的实施例可以执行不同于参考图33讨论的操作。
在操作3310,IP视频呼叫管理器3250从另一个客户端设备接收邀请客户端设备3210的用户参加IP视频呼叫的IP视频呼叫邀请。该IP视频呼叫邀请可以采用之前描述的邀请的形式。IP视频呼叫管理器3250处理邀请请求,包括在操作3315促使邀请被显示。例如,邀请请求可以以图14显示的示例性视频呼叫邀请1410相似的方式显示。
另外,IP视频呼叫管理器3250生成并发送呼叫对象3320至电话管理器3260。呼叫对象3320包括有关呼叫的一组参数。例如,呼叫对象参数包括一个或更多个呼叫状态(例如连接)、和呼叫参与者标识符(例如电话号码、电子邮件地址、或其他在线通信会话端点标识符)、开始时间、是呼出还是来电呼叫的指示、以及内部用来标识呼叫的呼叫标识符。
在一个实施例中,呼叫对象3320是通用的呼叫对象,当参数是基于来自IP视频呼叫邀请的信息时,它是以IP视频呼叫邀请请求和呼入的只有音频的蜂窝呼叫共用的格式。因此,当接收到呼入的只有音频的蜂窝呼叫时,蜂窝呼叫管理器3255生成具有相同格式的呼入呼叫对象。从而,从电话管理器3260的角度看,IP视频呼叫邀请消息和呼入只有音频的蜂窝呼叫看起来是一样的。
电话管理器3260将信息存储在呼叫对象3320中,作为呼叫历史结构的一部分。电话管理器3260还生成并发送呼入呼叫消息3322至免提管理器3270。在一个实施例中,电话管理器3260仅仅发送来电呼叫消息3322,如果存在与客户端设备3210对等的免提设备,比如免提设备3220的话(比如,电话管理器3260首先检查是否存在与客户端设备3210对等的免提设备)。在其他实施例中,电话管理器3260将来电呼叫消息33220发送给免提管理器3270,而不管是否存在对等的免提设备,而且免提设备3270根据是否存在对等的免提设备确定是否是否丢弃/忽视该消息或处理它。对于图33和后续的附图,假设免提设备3220与客户端计算设备3210对等。在一个实施例中,呼入呼叫管理器3322包括呼叫标识符。
响应于接收到呼入呼叫管理器3320,免提管理器3270促使一系列消息发送到免提设备3220,提醒它和用户有来电呼叫。如图33所示,在通过建立的音频连接3325发送响铃音调消息3330之前,免提管理器先建立和免提设备3220之间的音频连接3325(例如同步面向连接(SCO)链路)。该响铃音调消息由客户端设备3210选择,并且可以由客户端设备3210的用户定制。在一个实施例中,IP视频呼叫的响铃音调消息不同于只有音频的蜂窝呼叫的响铃音调。在另一个实施例中,直到呼叫被应答才建立音频连接。在这样的实施例中,响铃提醒消息被发送到免提设备3220,免提设备3220随后在本地确定是否播放响铃音调以向用户提醒来电呼叫(响铃提醒消息还可以在发送响铃音调消息3330之前发送)。在这样的实施例中,响铃提醒消息可以多次发送给免提设备3220,直到呼叫被应答或终止。
有时在收到响铃提醒消息和/或响铃消息3330后,免提设备3220发送指示用户已经应答呼叫的应答消息3335。例如,用户已经按下他们的免提设备3220上的应答按钮,或者已经在免提设备3220上采取行动以应答该呼叫。免提管理器3270接收应答消息3335,并且发送应答消息3340至电话管理器3260。在一个实施例中,应答消息3340包括呼叫标识符。尽管未在图33中示出,免提管理器3270还可以向免提设备3220发送确认消息,来响应于接收到应答消息3335。
电话管理器3260确定已应答的呼叫消息3340属于呼叫对象3320中显示的呼叫(例如,通过比较消息3340中包括的呼叫标识符和呼叫对象3320中存储的信息),并且发送消息3345至IP视频管理器3250,指示呼叫已被应答。响应于接收到这个消息,IP视频呼叫管理器3250在操作3350建立IP视频呼叫。例如,IP视频呼叫管理器3250促使IP视频呼叫接受消息发送到如前所述的邀请服务,并且建立与发送邀请的计算设备之间的P2P连接(直接的或者是通过中继)。
有时,在建立IP视频呼叫之后,IP视频呼叫管理器3250向电话管理器3260发送呼叫对象3355。该呼叫对象3355包括和呼叫对象3320类似的一组参数,除了状态已经从正连接改变到已连接。在一个实施例中,呼叫对象3355是通用的呼叫对象,具有已建立的IP视频呼叫和已连接的只有音频的蜂窝呼叫共用的格式。
另外,有时在建立IP视频呼叫之后,音频管理器3275通过免提设备3220路由已建立的IP视频呼叫的音频部分。在一个实施例中,IP视频呼叫管理器3250或电话管理器3260请求音频管理器3275通过免提设备路由音频。音频管理器3275还可以向免提管理器3270发送消息3360,来指示音频路由已经改变为通过免提设备3220。如果音频连接还未建立,免提管理器3270将建立和免提设备3220的音频连接。假设存在已建立的音频连接,视频呼叫的音频部分3365被路由至免提设备3220。因此,视频呼叫的音频部分通过免提设备3220处理,而视频呼叫的视频部分显示在客户端设备3210上。
图34显示了根据一个实施例客户端设备3210发起视频呼叫,并且通过免提设备路由已建立视频呼叫的音频。图34将参考图32的示例性实施例而得以描述。然而,应当理解,图34的操作可以由不同于参考图32讨论的实施例执行,而参考图32讨论的实施例可以执行不同于参考图34讨论的操作。
在操作3410,IP视频呼叫管理器3250使一个或更多个IP视频呼叫邀请消息被发送到其他(一个或多个)客户端设备以邀请(一个或多个)用户进行IP视频呼叫。所述(一个或多个)IP视频呼叫邀请消息可以采用前面描述的邀请的形式。IP视频呼叫管理器3250生成并发生呼叫对象3415至电话管理器3260。类似于呼叫对象3320,呼叫对象3415包括一组有关呼叫的参数,并且是通用的格式。电话管理器3260在呼叫对象3415中存储信息作为呼叫历史结构的一部分。
在一个实施例中,电话管理器3260还生成和发送呼出呼叫消息3420至免提服务器3270,指示存在一个呼出呼叫。响应于这个消息,免提管理器3270建立和免提设备3220的音频连接3425(如果定制的带内响铃音调被发送),并且然后向免提设备3220发送响铃音调消息3430。在其他实施例中,免提管理器3270只向免提设备3220发送响铃音调提醒消息,来取代建立音频连接和发送带内响铃音调。
有时在发送IP视频呼叫邀请之后,IP视频呼叫管理器3250接收IP视频呼叫接受消息3435,其可以采用之前描述的视频呼叫接受消息的形式。在收到这个消息之后,在操作3440建立和接受客户端设备的P2P IP视频呼叫(例如,建立与接受邀请的计算设备的P2P连接(直接的或通过中继的))。
有时在建立IP视频呼叫之后,IP视频呼叫管理器3250向电话管理器3260发送呼叫对象3445。呼叫对象3445包括和呼叫对象3415类似的一组参数,除了状态已经从正连接变化到已连接。呼叫对象3445也是通用的格式。另外,有时在建立IP视频呼叫之后,音频管理器3275通过免提设备3220路由已建立的IP视频呼叫的音频部分。在一个实施例中,IP视频呼叫管理器3250或电话管理器3260请求音频管理器3275通过免提设备路由音频。音频管理器3275还可以向免提管理器3270发送消息3455,指示音频路由将改变为通过免提设备3220。如果音频连接还未建立,免提管理器3270将建立和免提设备3220的音频连接。假设存在已建立的音频连接,视频呼叫的音频部分3460被路由到免提设备3220。因此,视频呼叫的音频设备通过免提设备3220得以处理,而视频呼叫的视频部分显示在客户端设备3210上。
图35显示了根据一个实施例,客户端设备3210响应于从免提设备3220接收呼叫请求而发起视频呼叫。图35将参考图32的示例性实施例描述。然而,应当理解,图35的存在可以由不同于参考图32讨论的实施例来执行,而参考图32讨论的实施例可以执行不同于参考图35所讨论的操作。
免提管理器3270从免提设备3220接收呼叫请求3510。呼叫请求3510可以响应于用户选择被呼的电话号码或其他在线通信会话端点标识符而生成。例如,用户可以选择免提设备3220上的重拨按钮,请求重拨上一个呼叫。免提管理器3270向电话管理器3260发送呼叫请求消息3520。电话管理器3260确定呼叫请求消息3520在请求与视频呼叫关联的标识符的呼叫(因此呼叫请求消息应当发送到IP视频呼叫管理器3250)还是和用于只有音频的蜂窝呼叫的电话号码关联的标识符的呼叫(因此应当发送到蜂窝呼叫管理器3255)。例如,如果呼叫请求3520是重拨请求,电话管理器3260访问上一个拨出的呼叫以确定将呼叫请求发送到哪里,该呼叫可能是IP视频呼叫或者是只有音频的蜂窝呼叫。如图35所示,电话管理器将呼叫请求消息3525发送到IP视频呼叫管理器3250。呼叫请求消息3525包括请求的视频呼叫的参与者的标识符(例如电话号码、电子邮件地址、或其他在线通信会话端点标识符)。在图34描述的操作3410,响应于接收到呼叫请求消息3525,IP视频呼叫管理器3250促使IP视频呼叫邀请消息发送到指示的参与者。图35剩下的操作参考图34描述的操作执行。因此,由于用户在对等免提设备的动作,客户端设备3210支持建立IP视频呼叫。
图36说明了根据一个实施例客户端设备3210将已建立的视频呼叫的音频路由到免提设备3220。在客户端设备3210和一个或更多个其他客户端设备之间存在已建立的IP视频呼叫3610。该呼叫的音频部分当前由客户端设备3210的扬声器输出,或者通过插在客户端设备3210中的双耳式耳机输出。在操作3615,IP视频呼叫管理器3250接收输入以将音频转移到免提设备3220。例如,客户端设备3210的用户已经向IP视频呼叫应用程序提供输入,以将音频转移到对等的免提设备。响应于接收到这样的输入,IP视频呼叫管理器3250向音频管理器3275发送音频路由请求3620以通过免提设备3220路由视频呼叫的音频部分。音频管理器3275可以向免提管理器3270发送消息3625,指示音频路由将改变为通过免提设备3220。如果音频连接还未建立,免提管理器3270将建立与免提设备3220的音频连接3630。假设存在已建立的音频连接,视频呼叫的音频部分3635被路由到免提设备3220。因此,在IP视频呼叫建立后,客户端设备3210允许用户将音频转移到免提设备。
尽管图36说明了响应于在客户端设备接收到直接输入,将音频转移到免提设备,在其他实施例中,用户还可以促使音频通过在免提设备3220的输入而转移到免提设备3220。在这样的实施例中,免提管理器3270接收来自免提设备3220的命令以转移音频。免提管理器3270随后将请求发送到音频管理器3275,音频管理器3275将随后重新路由音频。
另外,尽管图36描述了将音频转移到免提设备,在一些实施例中,音频可以从免提设备转移到客户端设备3210的扬声器(或双耳式耳机)。这可以在客户端设备3210处和/或免提设备3220处发起。在这样的实施例中,音频管理器3275接收路由音频请求(从IP视频呼叫管理器3250接收或从免提管理器3270接收)以将音频路由到客户端设备3210,并且相应地操作。
图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可以从存储器30和/或非易失性存储器3840中提取(一个或多个)指令,并且执行指令以完成上述的操作。总线3850将上面的组件互连在一起,并且还将那些组件互连到可选的dock 3860、显示器控制器&显示设备3870、输入/输出设备3880(例如NIC(网络接口卡)、光标控制(例如鼠标、触摸屏、触摸板等)、键盘等),以及可选的(一个或多个)无线收发器3890(例如蓝牙、WiFi、红外等)。
图39是说明可用在一些实施例中的示例性数据处理系统的框图。例如,数据处理系统3900可以是手持式计算机,个人数字助理(PDA),移动电话,便携式游戏系统,便携式媒体播放器,书写板,可包括移动电话、媒体播放器和/或游戏系统的手持式计算设备。作为另一个例子,数据处理系统3900可以是网络计算机或在另一个设备内的嵌入式处理设备。
根据一个实施例,数据处理系统3900的示例性构架可以包含在客户端设备110、1210、1410、2110、2610、3210等中或者此处描述的其他计算设备中。数据处理系统3900包括处理系统3920,其可以包括一个或更多个微处理器和/或集成电路上的系统。处理系统3920与存储器3910、电源3925(其包括一个或更多个电池)、音频输入/输出3940、显示控制器和显示装置3960、可选的输入/输出端3950、(一个或多个)输入装置3970、以及(一个或多个)无线收发器3930耦合。应当理解,图39未示出的另外的组件,在特定实施例中也可以成为数据处理系统3900的一部分,而且在特定实施例中,可以使用少于图39示出的组件。另外,应当理解,如本领域公知的,图39中未示出的一个或更多个总线可以用于互连各种组件。
存储器3910还存储数据和/或由数据处理系统3900执行的程序。音频输入/输出3940还可以包括麦克风和/或扬声器,以例如播放音乐和/或通过扬声器和麦克风提供电话功能。显示控制器和显示设备3960还包括图形用户界面(GUI)。无线(例如RF)收发器3930(例如WiFi收发器、红外收发器、蓝牙收发器、无线服务电话收发器等)可用于和其他的数据处理系统通信。一个或更多个输入设备3970允许用户向系统提供输入。这些输入设备可以是键区、键盘、触摸板、多点触摸板等。可选的其他输入/输出3950可以是用于对接(dock)的连接器。
图中示出的技术可以由通过使用存储和执行在一个或更多个计算设备(例如客户端设备、服务器等)的代码和数据来实现。这样的计算设备使用机器可读媒体,例如永久有形的机器可读媒体(例如机器可读存储媒体,比如磁盘、光盘、只读存储器、闪存设备)和暂时传播的信号(例如电、光、声或其他形式的传播信号——比如载波、红外信号、数字信号等))来存储和发送(内在地和/或通过网络和其他计算设备一起)代码(由软件指令组成)和数据。另外,这样的计算设备通常包括一个或更多个处理器组,其耦合到一个或更多个其他组件,例如一个或更多个永久有形的机器可读媒体(以存储代码和/或数据)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)以及网络连接(以使用暂时传播的信号发送代码和/或数据)。处理器组和其他组件的耦合典型地是通过一个或更多个总线和桥(也称作总线控制器)。因此,给定计算设备的永久性机器可读介质通常存储在那个计算设备的一个或更多个处理器组上执行的指令。实施例的一个或更多个部分可以使用软件、固件和/或硬件的不同组合实现。
尽管这里描述的操作涉及到:对于对用作在线通信会话端点标识符的电子邮件地址进行验证,自动地验证电子邮件地址而无需用户对包括在验证电子邮件消息里的链接进行点击,然而,实施例并不限于此。例如,在一些实施例中,当由于其他原因需要验证电子邮件地址时,执行关于自动验证电子邮件地址所描述的操作。例如,用户可能注册服务,作为注册过程的一部分,该服务需要对电子邮件地址属于该用户进行验证。用户向该服务提供电子邮件地址,并且收到消息(例如通过服务的网页显示),该消息指示电子邮件地址需要验证而且验证电子邮件消息已经发往或者将发往所提供的电子邮件地址(验证电子邮件消息可以包括、也可以不包括验证链接)。客户端设备上的应用程序可以对与用于该验证消息的电子邮件地址对应的电子邮件帐户进行自动检查,并在其被定位时,自动地解析该消息以定位验证令牌,并且发送包括电子邮件地址和验证令牌的电子邮件地址验证消息至与服务相关联的电子邮件验证服务器以验证该电子邮件地址。尽管图中的流程图显示了由特定实施例执行的操作的特定顺序,应当理解,这样的顺序是示例性的(例如可选的实施例可以不同的顺序执行操作、组合某些操作、重叠某些操作等)。
尽管本发明是结合一些实施例描述的,本领域技术人员将意识到本发明不限于所描述的实施例,可以在所附权利要求的精神和范围内通过修改和变更来实施。说明书因而被看作是示例性的,而非限制性的。

Claims (20)

1.一种在客户端设备上执行的方法,用于在电路交换音频呼叫和视频呼叫之间转换,所述客户端设备包括前向照相机来捕捉用于所述视频呼叫的视频,该方法包括:
从所述客户端设备的用户接收输入,以从已建立的电路交换音频呼叫转换到视频呼叫,其中,已建立的电路交换音频呼叫具有多个参与者,这些参与者包括该客户端设备的用户以及在一个或更多个其他客户端设备构成的组处的由一个或更多个远程参与者构成的组;
使视频呼叫邀请消息被发送到所述远程参与者的该组其他客户端设备;
从该组远程参与者的该组其他客户端设备接收视频呼叫接受消息;
向该组远程参与者的该组其他客户端设备发送由该客户端设备的前向照相机捕捉的视频;以及
响应于从该组远程参与者的该组其他客户端设备中的每一个客户端设备接收到至少一个视频帧,从所述电路交换音频呼叫转换到所述视频呼叫。
2.权利要求1的方法,进一步包括:
响应于成功转换到视频呼叫,丢弃电路交换音频呼叫。
3.权利要求1的方法,进一步包括:
响应于确定音频目前正通过所述客户端设备的受话扬声器路由,将音频通过所述客户端设备的喇叭扬声器路由;以及
显示由所述客户端设备的前向照相机捕捉的视频的预览。
4.权利要求1的方法,其中,从电路交换音频呼叫转换到视频呼叫的步骤包括执行以下步骤:
显示正在从该组远程参与者的该组其他客户端设备接收的视频;以及
将音频路由从所述电路交换音频呼叫改变到所述视频呼叫。
5.权利要求1的方法,进一步包括:
建立和该组其他客户端设备之间的直接点对点(P2P)连接,其中,所述视频通过所述P2P连接发送。
6.一种在客户端设备上执行的方法,用于在电路交换音频呼叫和视频呼叫之间转换,所述客户端设备包括前向照相机来捕捉用于所述视频呼叫的视频,该方法包括:
接收视频呼叫邀请消息,该消息源于所述电路交换音频呼叫的远程参与者的客户端设备;
接收来自用户的输入,以接受所述视频呼叫邀请;
使视频呼叫邀请接受消息被发送到所述远程参与者的客户端设备;
将所述前向照相机捕捉的视频发送到所述远程参与者的客户端设备;以及
响应于从所述远程参与者的客户端设备接收到至少一个视频帧,将所述电路交换音频呼叫转换到所述视频呼叫。
7.权利要求6的方法,进一步包括:
响应于成功转换到所述视频呼叫,丢弃所述电路交换音频呼叫。
8.权利要求6的方法,进一步包括:
响应于确定音频目前正在通过所述客户端设备的受话扬声器路由,将音频通过所述客户端设备的喇叭扬声器路由,并显示由所述客户端设备的前向照相机捕捉的视频的预览。
9.权利要求6的方法,其中,从所述电路交换音频呼叫转换到所述视频呼叫的步骤包括执行以下步骤:
显示正在从所述远程参与者的客户端设备接收的视频;以及
将音频路由从所述电路交换音频呼叫改变到所述视频呼叫。
10.权利要求6的方法,进一步包括:
建立和所述参与者的客户端设备之间的直接点对点(P2P)连接,其中,所述视频通过所述P2P连接发送。
11.一种在电路交换音频呼叫和视频呼叫之间转换的客户端设备,该客户端设备包括:
前向照相机,捕捉用于所述视频呼叫的视频;
无线收发器,与其他客户端设备通信;
存储器,存储程序代码;
处理器,与所述存储器耦合以处理程序代码,从而:
从所述客户端设备的用户接收输入,以将已建立的电路交换音频呼叫转换到视频呼叫,其中,所述已建立的电路交换音频呼叫具有多个参与者,这些参与者包括该客户端设备的用户以及由一个或更多个其他客户端设备构成的组处的由一个或更多个远程参与者构成的组;
使视频呼叫邀请消息被发送到所述远程参与者的该组其他客户端设备;
从该组远程参与者的该组其他客户端设备接收视频呼叫接受消息;
向该组远程参与者的该组其他客户端设备发送由所述前向照相机捕捉的视频;以及
响应于从该组远程参与者的该组其他客户端设备中的每一个客户端设备接收到至少一个视频帧,将所述电路交换音频呼叫转换到所述视频呼叫。
12.权利要求11的客户端设备,其中,所述处理器还响应于成功转换到所述视频呼叫而丢弃所述电路交换音频呼叫,其中,所述客户端设备还包括:
受话扬声器,提供输出音频信号;
喇叭扬声器,提供输出音频信号;
其中,所述处理器还响应于确定音频目前正在通过所述受话扬声器路由,而将音频通过所述喇叭扬声器路由。
13.权利要求11的客户端设备,其中,所述处理器还显示由所述客户端设备的前向照相机捕捉的视频的预览。
14.权利要求11的客户端设备,其中,所述处理器将电路交换音频呼叫转换到视频呼叫包括:
由所述处理器:
显示正在从该组远程参与者的该组其他客户端设备接收的视频;以及
将音频路由从所述电路交换音频呼叫改变到所述视频呼叫。
15.权利要求11的客户端设备,其中,所述处理器还建立和该组其他客户端设备之间的直接点对点(P2P)连接,其中,所述视频通过所述P2P连接发送。
16.一种在电路交换音频呼叫和视频呼叫之间转换的客户端设备,该客户端设备包括:
前向照相机,捕捉用于视频呼叫的视频;
无线收发器,与其他客户端设备通信;
存储器,存储程序代码;
处理器,与所述存储器耦合以处理程序代码,从而:
接收视频呼叫邀请消息,该消息源于所述电路交换音频呼叫的远程参与者的客户端设备;
从用户接收输入以接受所述视频呼叫邀请;
使视频呼叫邀请接受消息被发送到所述远程参与者的客户端设备;
将所述前向照相机捕捉的视频发送到所述远程参与者的客户端设备;以及
响应于从所述远程参与者的客户端设备接收到至少一个视频帧,将所述电路交换音频呼叫转换到所述视频呼叫。
17.权利要求16的客户端设备,其中,所述处理器还:
响应于成功转换到所述视频呼叫,丢弃所述电路交换音频呼叫。
18.权利要求16的客户端设备,还包括:
受话扬声器,提供输出音频信号;
喇叭扬声器,提供输出音频信号;
其中所述处理器还响应于确定音频目前正在通过所述受话扬声器路由,而将音频通过所述喇叭扬声器路由。
19.权利要求16的客户端设备,其中,所述处理器将所述电路交换音频呼叫转换到所述视频呼叫包括:
由所述处理器:
显示正在从所述远程参与者的客户端设备接收的视频;以及
将音频路由从所述电路交换音频呼叫改变到所述视频呼叫。
20.权利要求16的客户端设备,其中,所述处理器进一步:
建立和所述参与者的客户端设备之间的直接点对点(P2P)连接,其中,所述视频通过所述P2P连接发送。
CN201010570274.6A 2010-04-07 2010-09-25 在电路交换呼叫和视频呼叫之间转换 Active CN102215216B (zh)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US32186610P 2010-04-07 2010-04-07
US32186510P 2010-04-07 2010-04-07
US61/321,866 2010-04-07
US61/321,865 2010-04-07
US35181410P 2010-06-04 2010-06-04
US61/351,814 2010-06-04
US37892610P 2010-08-31 2010-08-31
US37892410P 2010-08-31 2010-08-31
US61/378,924 2010-08-31
US61/378,926 2010-08-31
US38247910P 2010-09-13 2010-09-13
US61/382,479 2010-09-13
US12/886,490 2010-09-20
US12/886,490 US8704863B2 (en) 2010-04-07 2010-09-20 Transitioning between circuit switched calls and video calls

Publications (2)

Publication Number Publication Date
CN102215216A true CN102215216A (zh) 2011-10-12
CN102215216B CN102215216B (zh) 2016-05-11

Family

ID=43413598

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010570274.6A Active CN102215216B (zh) 2010-04-07 2010-09-25 在电路交换呼叫和视频呼叫之间转换

Country Status (1)

Country Link
CN (1) CN102215216B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103118238A (zh) * 2011-11-17 2013-05-22 中国电信股份有限公司 视频会议的控制方法和视频会议系统
CN103634559A (zh) * 2012-08-27 2014-03-12 三星电子株式会社 用于基于消息收发器的视频通话服务的移动设备和方法
CN104469243A (zh) * 2013-09-13 2015-03-25 联想(北京)有限公司 通信方法和电子设备
CN105594179A (zh) * 2013-08-19 2016-05-18 微软技术许可有限责任公司 具有升级获知通知的无缝呼叫转换
CN106063237A (zh) * 2014-01-07 2016-10-26 思科技术公司 基于呼叫状态的临时用户关联
CN108418836A (zh) * 2012-02-24 2018-08-17 英特尔德国有限责任公司 用于提供通信会话的方法以及设备
CN110166488A (zh) * 2013-08-19 2019-08-23 微软技术许可有限责任公司 具有升级前参与确认的无缝呼叫转换
US11233791B2 (en) 2016-09-16 2022-01-25 Google Llc Methods, systems, and media for authentication of user devices to a display device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583094A2 (en) * 1992-07-23 1994-02-16 AT&T Corp. ISDN-based system for making a video call
CN1473430A (zh) * 2000-11-01 2004-02-04 ���˹���Ѷ��� 混合媒体电信呼叫建立
US20040240650A1 (en) * 2003-05-05 2004-12-02 Microsoft Corporation Real-time communications architecture and methods for use with a personal computer system
CN1682546A (zh) * 2002-09-09 2005-10-12 诺基亚公司 不同通信业务之间的不中断的主连接切换
CN101409627A (zh) * 2007-10-09 2009-04-15 华为技术有限公司 跨网络关联计费的方法、网络设备、计费实体和计费系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583094A2 (en) * 1992-07-23 1994-02-16 AT&T Corp. ISDN-based system for making a video call
CN1473430A (zh) * 2000-11-01 2004-02-04 ���˹���Ѷ��� 混合媒体电信呼叫建立
CN1682546A (zh) * 2002-09-09 2005-10-12 诺基亚公司 不同通信业务之间的不中断的主连接切换
US20040240650A1 (en) * 2003-05-05 2004-12-02 Microsoft Corporation Real-time communications architecture and methods for use with a personal computer system
CN101409627A (zh) * 2007-10-09 2009-04-15 华为技术有限公司 跨网络关联计费的方法、网络设备、计费实体和计费系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103118238B (zh) * 2011-11-17 2016-03-16 中国电信股份有限公司 视频会议的控制方法和视频会议系统
CN103118238A (zh) * 2011-11-17 2013-05-22 中国电信股份有限公司 视频会议的控制方法和视频会议系统
CN108418836A (zh) * 2012-02-24 2018-08-17 英特尔德国有限责任公司 用于提供通信会话的方法以及设备
CN108418836B (zh) * 2012-02-24 2021-05-07 苹果公司 用于提供通信会话的方法以及设备
CN103634559A (zh) * 2012-08-27 2014-03-12 三星电子株式会社 用于基于消息收发器的视频通话服务的移动设备和方法
US10097792B2 (en) 2012-08-27 2018-10-09 Samsung Electronics Co., Ltd. Mobile device and method for messenger-based video call service
CN103634559B (zh) * 2012-08-27 2019-07-23 三星电子株式会社 用于基于消息收发器的视频通话服务的移动设备和方法
CN105594179A (zh) * 2013-08-19 2016-05-18 微软技术许可有限责任公司 具有升级获知通知的无缝呼叫转换
CN110166488A (zh) * 2013-08-19 2019-08-23 微软技术许可有限责任公司 具有升级前参与确认的无缝呼叫转换
CN110166488B (zh) * 2013-08-19 2022-01-11 微软技术许可有限责任公司 具有升级前参与确认的无缝呼叫转换
CN104469243A (zh) * 2013-09-13 2015-03-25 联想(北京)有限公司 通信方法和电子设备
CN106063237A (zh) * 2014-01-07 2016-10-26 思科技术公司 基于呼叫状态的临时用户关联
CN106063237B (zh) * 2014-01-07 2019-07-26 思科技术公司 基于呼叫状态的临时用户关联
US11233791B2 (en) 2016-09-16 2022-01-25 Google Llc Methods, systems, and media for authentication of user devices to a display device
US11997089B2 (en) 2016-09-16 2024-05-28 Google Llc Methods, systems, and media for authentication of user devices to a display device

Also Published As

Publication number Publication date
CN102215216B (zh) 2016-05-11

Similar Documents

Publication Publication Date Title
CN102893572B (zh) 为在线通信会话注册客户计算设备
US8751667B2 (en) Supporting hands-free services via a hands-free device for IP video calls
US8606306B2 (en) Multiple client computing device invitations for online communication sessions
US8583149B2 (en) Registering email addresses for online communication sessions
CN102215216B (zh) 在电路交换呼叫和视频呼叫之间转换
CN104767754B (zh) 为在线通信会话注册客户计算设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant