Seamless call transfer

Techniques for providing for a seamless call transfer in a virtual desktop environment are supported. An apparatus may be capable of requesting access to a remote computer system for registration with a call manager, determining whether a call associated with the apparatus is active, automatically initiating suspension of the call in response to determining that the call is active and requesting registration of a telephone associated with the call, and resuming the suspended call. The seamless call transfer system may result in a more favorable calling experience during authentication with a virtual desktop environment and registration with a call manager.

TECHNICAL FIELD OF THE INVENTION

This invention relates generally to the call transfer and more specifically to the seamless transfer of a call during virtual desktop authentication.

BACKGROUND OF THE INVENTION

Many virtual desktop environments include telephonic features. Such features may include facilitating phone calls, call holding, call forwarding, emergency calling, and directory services. In some systems, in order to obtain a complete feature set for a telephone system, a thin client hosting a virtual desktop environment may connect to remote computer systems.

SUMMARY OF THE INVENTION

In accordance with the present disclosure, a seamless call transfer apparatus is provided which substantially eliminates or reduces disadvantages and problems associated with previous systems and methods.

According to a particular embodiment, a seamless call transfer apparatus is provided which includes a network interface, a memory including an application, and a processor capable of executing the application to implement various features. In particular, the application can request access to a remote computer system for registration with a call manager, determine whether a call associated with the apparatus is active, automatically initiate suspension of the call in response to determining that the call is active and request registration of a telephone associated with the call, and resume the suspended call. The registration may result in associating a new telephone number with the telephone.

Particular embodiments of the present invention may provide one or more technical advantages. For example, certain embodiments may provide seamless transfer of an active call during an hosted virtual desktop authentication process such that the call is not lost or dropped. Particular embodiments may allow for a client or telephone associated with the client to acquire a new directory number managed by a call manager even though an active call is taking place. In addition, certain embodiments may minimize the undesired latency associated with the seamless call transfer.

Other technical advantages of the present invention will be readily apparent to one skilled in the art in the following figures, descriptions, and claims. Moreover, while specific advantages have been enumerated above, various embodiments may include all, some, or none of the enumerated advantages.

DESCRIPTION OF EXAMPLE EMBODIMENTS

FIG. 1is a block diagram illustrating a system100with elements that interoperate to manage virtual desktop functionality for any number of clients. The elements of system100can support a number of different operations, including facilitating simultaneous, seamless access by numerous thin clients to hosted applications and files maintained on a remote system. In some embodiments, such remote systems may also provide a rich set of telephony features. Users can seek access to the remote system to access software applications, data files, and shared databases. In certain embodiments, users may receive access to telephonic features provided by a call manager. In such embodiments, access to the remote system may enable users to receive a rich feature set for telephonic services and features facilitated by a call manager.

Desktop virtualization is an information technology concept that abstracts the traditional computer desktop environment experienced by the user from the physical machine actually executing the corresponding applications and hosting the data files. Desktop virtualization may be implemented in a client-server relationship. While the server may have significant computing resources in terms of processing power, memory, and communication bandwidth, the clients may have significantly less computing resources. For this reason, such clients may be referred to as “thin clients.” In such a model, critical applications, files, and databases can be stored remotely at a secure location, consistently maintained, and preserved through regular backups with minimal interaction from individual users. In addition, a user may access its computing environment from any thin client that can provide connectivity to the remote computer system hosting its applications and files. Thin clients may also be embodied in a mobile device such as a smart phone, netbook, or a tablet. Virtual desktop environments may be hosted by an organization or by a third party provider. Such systems may be referred to as hosted virtual desktops (HVD).

As illustrated, system100includes a number of elements, such as client102, telephone104, network106, and remote computer system108, that are interconnected to provide a hosted virtual desktop environment. Client102represents a general-purpose computer, including appropriate hardware, controlling logic, and data that may be used to interface over a computer network106with other system components such as remote computer system108. For example, client102may be workstations, laptops, netbooks, tablet computers, personal data assistants (PDAs), smart phone, tablet, or any other suitable computing device. Client102may support a wide variety of operations such as web browsing, word processing, and managing personal and business data. In certain embodiments, client102may support a basic set of computing functionality and require access to a hosted virtual desktop environment for complete functionality. According to particular embodiments, client102provides access, potentially through web-based interfaces, to information managed by other elements such as telephone104, network106, or remote computer system108. In some embodiments, client102may be a thin client that depends on remote computer systems, such as remote computer system108, to accomplish traditional activities provided by a computer. For example, client102may act as a terminal that provides virtual access to a software applications and data hosted on a remote computer system108.

A user may seek access using client102and/or telephone104to a hosted virtual desktop environment provided by remote computer system108. In certain embodiments, a user may participate in active telephone communications even without being logged into the hosted virtual desktop environment. In those cases, the set of telephonic features provided by client102and/or telephone104may be basic and limited to essential functionality. Additional functionality may require seeking access to the hosted virtual desktop environment and/or registration with remote call manager110. For example, the client102and/or telephone104may use a default extension number which may be associated with a call manager110. Once a user provides credentials and other connection related information, application112on client102may execute appropriate logic to communicate over network106to remote computer system108using an interface114. Client102may also communicate with telephone104, as appropriate, to obtain necessary information for registration and call-related functionality. The authentication process with remote computer system108may require processing by application116and call manager110. Communications from the remote computer system108and client102and/or telephone104over network106may be facilitated by interface118. As part of the authentication with the remote computer system108to access the hosted virtual desktop environment, application116may communicate with call manager110to provide a feature rich set of calling features for client102and/or telephone104. In particular embodiments, such communications may include registration and authentication with the call manager. For example, registration may include an extension mobility authentication process. As a result of registration with the call manager, a new directory number may be assigned to the client102and/or telephone104to replace the default extension number which may not have been originally associated with the call manager110of remote computer system108. In some embodiments, the new directory number and the default extension number may be the same.

In certain use cases, a user may be actively engaged in a telephone conversation during login, using client102and/or telephone104. In those situations, registration with the call manager110and reassignment of directory numbers may result an active call being dropped or lost. According to the present disclosure, in order to overcome this scenario, application112may detect the presence of an active telephone conversation during attempted authentication to the hosted virtual desktop environment, and in response, automatically suspend the call such that it can be retrieved shortly thereafter subsequent to authentication processes and call manager registration has taken place. In other embodiments, this functionality may be performed at remote computer system108by appropriate logic such as application116. In some embodiments, automatically suspending the call may involve parking the call, placing the call on hold, transferring the call without user intervention, or other suitable actions. This is because once authentication and call manager registration has taken place, the suspended call can be retrieved or activated to seamless resume normal call functionality. In particular embodiments, the automatic suspension of the call only results in minimal impact on user experience.

In the illustrated embodiment, client102includes various components such as application112and interface114. Application112represents any appropriate combination of hardware, controlling logic, and data for facilitating access to a virtual desktop environment hosted by remote computer system108. Interface114represents any suitable combination of hardware, controlling logic, and data for facilitating communications between various elements of system100, including telephone104and remote computer system108. For example, client102may use interface114to communicate with remote computer system108over network106.

As illustrated, system100includes a telephone104. Telephone104represents any appropriate combination of hardware, controlling logic, and data for providing telephonic communications and features. For example, telephone104may be a physical telephone or a software application, or a suitable combination, that facilitates telephonic communications and accommodates telephonic features. In appropriate embodiments, telephonic features may include call dialing, call forwarding, call transfer, call holding, call muting, and conference calling and/or various directory services. In the illustrated embodiment, telephone104is coupled to client102. In other embodiments, telephone104may be a component of client102. In order to facilitate telephonic communications, telephone104may use network106. In other embodiments, telephone104may further be coupled to a separate wired or wireless telephony network.

Network106represents communications equipment, including hardware and any appropriate controlling logic, for interconnecting elements and facilitating communication between these elements. Network106may include local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), any other public or private network, local, regional, or global communication network, enterprise intranet, other suitable wireline or wireless communication link, or any combination thereof. Network106may include any combination of gateways, routers, hubs, switches, access points, base stations, and any other hardware, software, or a combination of the preceding that may implement any suitable protocol. The use of these or similar networks facilitate seamless communication between components of system100regardless of their geographic location or communication protocols employed.

Remote computer system108represents any appropriate combination of hardware, controlling logic, and data for providing a hosted virtual desktop environment to clients, such as client102, and supporting interactive access to applications and data from multiple remote devices. Remote computer system108may support a wide variety of hosted virtual operations such as web browsing, word processing, and managing personal and business data. In particular embodiments, remote computer system108may provide access to richer set of applications and data than immediately available on client102. For example, in some embodiments, remote computer system108may provide a rich set of telephony features for client102and/or telephone104. In some embodiments, remote computer system108may include a networked server or collection of networked servers, or could include in one or more virtual servers capable of acquiring computing resources on-demand depending on the dynamically determined needs of multiple clients. Using virtual servers, remote computer system108could be scaled dynamically based on system requirements and real-time usage, without limiting operation to a particular physical computer server having fixed computing resources. This could facilitate the scalability, efficient operation, high availability, and cost effectiveness of the system. As illustrated, remote computer system108may couple to a network106to facilitate communication to other elements of system100, such as client102and/or telephone104.

Remote computer system108may include any number of structural or functional components. In the illustrated embodiment, remote computer system108includes application116and an interface118. Application116represents any appropriate combination of hardware, controlling logic, and data for providing hosted virtual desktop environment to one or more clients, such as client102. In particular embodiments, application116may include suitable logic for authenticating and providing interactive access to applications and data over network106to client102and/or telephone104. Interface118represents any suitable combination of hardware, controlling logic, and data for facilitating communications between various elements of system100, including remote computer system108and client102and/or telephone104. For example, computer system108may use interface118to communicate with client102over network106to provide a hosted virtual desktop environment accessible to the user.

Call manager110represents any appropriate combination of hardware, controlling logic, and data for managing telephony and directory features for one or more clients and telephones. For example, in particular embodiments, call manager110may assign directory numbers to clients or telephones. Call manager110may also provide maintenance and support for telephonic features, and implement appropriate load balancing techniques. In the illustrated embodiment call manager110is illustrated as a separate component coupled to network106. In particular embodiments, however, the call manager110may be coupled to the remote computer system108. In other embodiments, call manager110may be component that is part of remote computer system108. In some embodiments call manager110may run on a hosted system which may be separate from remote computer system108.

While system100is illustrated as including specific components arranged in a particular configuration, it should be understood that various embodiments may operate using any suitable arrangement and collection of components capable of providing functionality such as that described. For example, system100may include any number of clients, telephones, and remote computer systems. Network106may comprise many different networks that are interconnected to provide a wide area network or local area network. In addition, in particular embodiments telephone104may be part of any client102, and may in some instances exist as a software application providing a variety of telephony features. For example, such software applications may include Jabber, Cisco Unified Personal Communicator (CUPC), Cisco Unified Communications Integration for Microsoft Office Communicator (CUCIMOC), or any other suitable software application providing telephony services.

FIG. 2illustrates an example computer system200. In particular embodiments, one or more computer systems200perform one or more steps of one or more methods described or illustrated in the present disclosure. In particular embodiments, software running on one or more computer systems200performs one or more steps of one or more methods described or illustrated in the present disclosure or provides functionality described or illustrated herein. Particular embodiments include one or more portions of one or more computer systems200. For example, in particular embodiments, computer system200may represent client102or remote computer system108. In other embodiments, computer system200may represent telephone104.

Computer system200includes a processor202, memory204, storage206, an input/output (I/O) interface208, a communication interface210, and a bus212in particular embodiments. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.

Processor202includes hardware for executing instructions, such as those making up a computer program, in particular embodiments. As an example and not by way of limitation, to execute instructions, processor202may retrieve (or fetch) the instructions from an internal register, an internal cache, memory204, or storage206; decode and execute them; and then write one or more results to an internal register, an internal cache, memory204, or storage206. In particular embodiments, processor202may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor202including any suitable number of internal caches, where appropriate. For example, processor202may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory204or storage206, and the instruction caches may speed up retrieval of those instructions by processor202. Data in the data caches may be copies of data in memory204or storage206for instructions executing at processor202to operate on; the results of previous instructions executed at processor202for access by subsequent instructions executing at processor202or for writing to memory204or storage206; or other suitable data. The data caches may speed up read or write operations by processor202. The TLBs may speed up virtual-address translation for processor202. In particular embodiments, processor202may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor202including any suitable number of internal registers, where appropriate. In particular embodiments, processor202may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors202. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

Memory204includes main memory for storing instructions for processor202to execute or data for processor202to operate on, in particular embodiments. For example, computer system200may load instructions from storage206or another source (such as, for example, another computer system200) to memory204. Processor202may then load the instructions from memory204to an internal register or internal cache. To execute the instructions, processor202may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor202may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor202may then write one or more of those results to memory204. In particular embodiments, processor202executes only instructions in one or more internal registers or internal caches or in memory204(as opposed to storage206or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory204(as opposed to storage206or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor202to memory204. Bus212may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor202and memory204and facilitate accesses to memory204requested by processor202. In particular embodiments, memory204includes random access memory (RAM). This RAM may be volatile memory, where appropriate As appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory204may include one or more memories204as appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.

Storage206includes mass storage for data or instructions in particular embodiments. For example, storage206may include an HDD, a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or any combination of such storage. Storage206may include removable or non-removable (or fixed) media as appropriate. Storage206may be internal or external to computer system200. In particular embodiments, storage206is non-volatile, solid-state memory. In particular embodiments, storage206includes read-only memory (ROM). As appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or an suitable combination of such ROM. This disclosure contemplates mass storage206taking any suitable physical form. Storage206may include one or more storage control units facilitating communication between processor202and storage206as appropriate. Storage206may include one or more storages206. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.

Communication interface210includes hardware, software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between computer system200and one or more other computer systems200or one or more networks, in particular embodiments. For example, communication interface210may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface210for it. For example, computer system200may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or an appropriate combination of these networks. One or more portions of one or more of these networks may be wired or wireless. As an example, computer system200may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or an appropriate combination of these networks. Computer system200may include any suitable communication interface210for any of these networks as appropriate. Communication interface210may include one or more communication interfaces210. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface.

Reference to a computer-readable storage medium in the present disclosure encompasses one or more non-transitory, tangible computer-readable storage media possessing structure. For example, a computer-readable storage medium may include a semiconductor-based or other integrated circuit (IC) (such, as for example, a field-programmable gate array (FPGA) or an application-specific IC (ASIC)), a hard disk, an HDD, a hybrid hard drive (HHD), an optical disc, an optical disc drive (ODD), a magneto-optical disc, a magneto-optical drive, a floppy disk, a floppy disk drive (FDD), magnetic tape, a holographic storage medium, a solid-state drive (SSD), a RAM-drive, a SECURE DIGITAL card, a SECURE DIGITAL drive, or another suitable computer-readable storage medium or any appropriate combination of these. A computer-readable non-transitory storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile as appropriate.

This disclosure contemplates one or more computer-readable storage media implementing any suitable storage. In particular embodiments, a computer-readable storage medium implements one or more portions of processor202(such as, for example, one or more internal registers or caches), one or more portions of memory204, one or more portions of storage206, or a combination of these as appropriate. In particular embodiments, a computer-readable storage medium implements RAM or ROM. In particular embodiments, a computer-readable storage medium implements volatile or persistent memory. In particular embodiments, one or more computer-readable storage media embody software. Reference to software in the present disclosure may encompass one or more applications, bytecode, one or more computer programs, one or more executables, one or more instructions, logic, machine code, one or more scripts, or source code, and vice versa as appropriate. In particular embodiments, software includes one or more application programming interfaces (APIs). This disclosure contemplates any suitable software written or otherwise expressed in any suitable programming language or combination of programming languages. In particular embodiments, software is expressed as source code or object code. In particular embodiments, software is expressed in a higher-level programming language, such as, for example, C, Perl, or a suitable extension thereof. In particular embodiments, software is expressed in a lower-level programming language, such as assembly language (or machine code). In particular embodiments, software is expressed in JAVA. In particular embodiments, software is expressed in Hyper Text Markup Language (HTML), Extensible Markup Language (XML), or other suitable markup language.

While system200is illustrated as including specific components arranged in a particular configuration, it should be understood that various embodiments may operate using any suitable arrangement and collection of components capable of providing functionality such as that described.

FIG. 3is a process flow diagram illustrating a process flow300for seamless call transfer during virtual desktop authentication. The steps of process flow300correspond to an example sequence of steps for seamlessly transferring an active call to a new destination number during virtual desktop authentication. Such a seamless transfer process ensures that active phone calls do not get lost or dropped during the user authentication process seeking access to a virtual desktop environment or registration with a call manager. A process such as process flow300may be implemented on any appropriate element in a network such as client102, telephone104, or remote computer system108such that control for an active call can be seamlessly handed off to the hosted virtualized environment with minimal effect on the user calling experience.

In the illustration, process flow300includes a number of steps for providing seamless transfer of an active call during authentication to a hosted virtual desktop environment. As shown, these steps include a login step302, an active call determination step304, a call suspension step306, a call registration step308, a call suspension determination step310and a call resumption step312. This collection of steps may be performed, for example, on a client such as a thin client, or a remote computer system using appropriate authentication mechanisms.

In operation, process flow300begins at the login step302. In this step, the user of a thin client, such as client102, supplies the appropriate credentials to access a virtual desktop environment hosted on one or more remote computer systems, such as remote computer system108. In addition to credentials, the user may need to identify the specific remote computer system or particular applications or files that it seeks access to, in particular embodiments. The level of authorization and access to applications and data may be determined by a user profile and permissions corresponding to the user. This information is sent across a network to the appropriate remote computer system hosting the virtualized desktop environment.

Next, process flow300proceeds to active call determination step304. At this step, the system determines whether an active call is in progress. For instance, a user employing client102and telephone104may currently be engaged in an active telephone call when it seeks to login to the hosted virtual desktop environment and/or register with the call manager. If the system determines that a call is in progress, process flow300proceeds to step306. However, if a call is not in progress, process flow300proceeds to call registration step308.

If process flow300has determined that an active call was in progress in step304, the call is automatically suspended in step306. In operation, such suspension may take place by parking the call, transferring the call, placing the call on hold, or any other appropriate suspension mechanism. Suspension may occur automatically without user intervention. For example, an active call may be suspended by parking the call to a temporary destination while the client registers with the call manager or performs additional authentication steps. In particular embodiments, parking a call allows a user to place a call on hold at one destination having a particular telephone number and retrieve and continue the conversion from a telephone at another destination having a different telephone number. Thus, when appropriate authentication processes are complete, the call can be retrieved from the parked destination and continue seamlessly. In other embodiments, call suspension may be performed by transferring the call to a new destination or by placing the call on hold to be retrieved later, following the various authentication processes.

Next, process flow300continues to call registration step308where the client and/or telephone may register with the call manager. In particular embodiments, registering with the call manager results in a new directory number being assigned to the client and/or telephone. This new directory number may replace any default directory number assigned to the client and/or telephone. In some embodiments, the new directory number and the default directory number may be the same number. Registration with the call manager may also result in a rich feature set being provided to the client and/or telephone. In certain embodiments, call manager registration may be executed by performing an extension mobility (EM) login at the call manager. Once call manager registration is complete, process300proceeds to call suspension determination step310. In this step, the system determines whether the a previously active call was suspended. If there was a previously suspended call, process flow300proceeds to call resumption step312, where the call is retrieved or activated as appropriate. The manner in which a call is resumed may depend on the way the call was originally suspended. For example, in particular embodiments, retrieving an active call may involve requesting and receiving access to a parked call. In other embodiments, resuming the call may involve activating a call that is on hold, or accessing a transferred call.

Although process flow300is illustrated as including specific steps, it should be understood that various embodiments may implement a seamless call transfer scheme using any appropriate combination of steps for seamless call transfer during virtual desktop authentication and call manager registration. For example, the steps of process flow300may be performed in any suitable order that facilitates the type of suspension of an active call being performed. In particular embodiments, the call manager registration step308may occur before a call is suspended in call suspension step306. During call manager registration step308, a new directory number may be assigned to a client and/or telephone. Once call manager registration is complete, an active call may be seamlessly transferred from its existing directory number to the new directory number. This may reduce or otherwise limit the latency or undesired effects on the user experience during the call.

In certain embodiments, additional steps may be added to process flow300to allow an appropriate message to be displayed when a call is suspended and/or when a call is resumed. This message may allow the user to cancel or delay the seamless transfer. According to particular implementations, the system may or may not perform these tasks.

In other embodiments, process flow300could be modified such that interaction with the remote computer system in step302may not be necessary. For example, the client102may login and register directly with call manager110using Extension Mobility (EM). Thus, process flow300may perform the disclosed seamless transfer without direct interaction with remote computer system108.

Although the present invention has been described in several embodiments, a myriad of changes and modifications may be suggested to one skilled in the art, and it is intended that the present invention encompass such changes and modifications as fall within the scope of the present appended claims.