Patent Description:
<CIT> relates to a method for sharing service identity among multiple client devices in a real-time communications network. <CIT> relates to maintaining real-time conversations over unreliable connections.

The disclosure provides a method, according to the independent claim <NUM>, for restoring a communication session between a client device and a participant device. The method includes: determining, by a server, based on at least one of client device's user historical information and location data, that a client device is likely to lose connectivity; and sending, from the server to the client device and to the participant device, a warning of the likely loss in connectivity; detecting by the said server device running a central service, that the client device has lost connection to the participant device; maintaining a network connection to the participant device; retrieving, from a database, a user profile and device statistics associated with the client device; selecting a second device in close proximity to the client device using information from the user profile and the device statistics; and, restoring the communication session between the second device and the participant device.

Another aspect of the disclosure provides a server, according to the independent claim <NUM>, configured as a central service conducting a communication session and configured to coordinate messages in the communication session. The server includes: at least one network interface configured to communicatively couple the server to a plurality of communication networks; and, at least one processor configured to: store, retrieve, and analyze network, device, and user profile parameters in a database; maintain a connection to at least one device when another device is no longer active on the communication session; provide a connection to a second device; and, collect and sort parameters pertaining to the communication session and devices participating in the communication session.

Another aspect of the disclosure provides a non-transitory computer readable storage device, according to the independent claim <NUM>, for recovering a communication session between a client device and a participant device, the computer readable storage device having computer executable instructions for performing the steps of the method as defined in the independent claim <NUM>.

The present disclosure relates to maintaining a communication session that has been disconnected. This feature is especially important since, for example, in mobile telephony, users on the move are expected to have less than ideal network coverage throughout the length of a phone conversation. In one instance, the user may be carrying out a conversation while driving to work, and along the way, the user may pass thorough areas with spotty coverage that result in the call being disconnected. In another scenario, the user may be driving through a tunnel and gets disconnected. Yet in another scenario, the user may be on a video call on his/her computer and gets disconnected. Therefore, methods and services that maintain a call are valuable.

According to various embodiments, a communication session can be a telephone call over the PSTN (public switched telephone network), a cellular telephone call, a voice call over IP (Internet Protocol), and/or a voice and video call over IP, and the like. According to various embodiments, when first and second users are engaged in a communication session over a network, the first user may be disconnected from the communication session. A system and method are described herein for keeping the communication session connected on a server side when the first user is disconnected for any reason. When the first user is disconnected, instead of terminating the communication session, the server that manages the communication session maintains the connection to the second user until the first user is available.

Examples of a network include mobile or cellular networks using multiple encodings, e.g., code division multiple access (CDMA), time division multiple access (TDMA), Global System for Mobile Communications (GSM), etc. The network is not limited to only cellular networks but includes any network that supports voice or video communication. Additionally, the network may include a plurality of network types and connectivity types between the first and second users. The server in certain embodiments comprises at least one computing device that supports and provides services for voice and/or video communication between the first and second users.

In some embodiments, the communication session may be a conference call between the first user and multiple other users. In one example, when the first user leaves a coverage area or is dropped from the communication session, the conference call is still ongoing, allowing the first user to reconnect when the first user re-enters the coverage area.

In certain embodiments, the first user may be moving through multiple network coverage areas with areas of no signal in-between the different coverage areas. The movement from one coverage area to another coverage area is detected by the server, which will then maintain the connection to the second user and provide the first user with the ability to automatically reconnect to the existing connection. In certain embodiments, the first user can dial a specific phone number to reconnect to the communication session. In certain embodiments, the specific phone number is associated with a user account or communication service, and in the event of a disconnection, when the specific phone number is called, a password or code is required in order to join the active communication session. In some embodiments, the first user is able to reconnect via a software service provided by the server upon initial connection to the communication session. In certain embodiments, the first user is able to reconnect through text message, e-mail, or multimedia messaging service (MMS), as described in greater detail herein.

The server determines through user historic movement patterns that the first user is likely to lose connection at some time in the future. By anticipating the first user's connectivity issues, the server maintains connectivity with the second user after the first user is disconnected. The first user can then reconnect to the existing communication session with the second user once the first user regains a better reception. In certain embodiments, the server decides to disconnect the first user from the communication session preemptively because the server detects that the first user is on a mobile device that is running out of battery. The server then seeks another device associated with first user in close proximity to the first user, and connects the other device to the active communication session. In certain embodiments, the other device is chosen from a list of devices associated with the first user's profile. The other device can be one of a mobile phone, a smart phone, a land line, a personal digital assistant (PDA), a mobile computer, a desktop computer, or any other device capable of voice or video communication over a network.

In certain embodiments, the server determines through user movement patterns that the first user will lose connection to the communications session. The server proceeds to play an audio message or send text or email messages to the first user, providing an alternate route that will avoid the first user losing connection.

In certain embodiments, when the first user is disconnected, the second user proceeds to hang up. When the second user hangs up, the communication session is terminated, and the server does not attempt to reconnect the first user.

In certain embodiments, when the first user is disconnected, the second user is presented with the option to leave a message for the first user. If the second user elects to take this option and proceeds to leave a message for the first user, then the server does not attempt to reconnect the first user. The second user's message is made available in the first user's mailbox. An example of the first user's mailbox includes a voicemail system. A transcribed voice message may also be sent to the first user's email address, or a transcribed message may be sent to the first user through multimedia messaging service (MMS) or short message service (SMS), etc..

In certain embodiments, when the first user is disconnected from the communication session, the server provides a message to the second user in order to inform the second user that the first user is in an area with no coverage. The message may be an audio message that is one of a voice message, music, a beep, series of beeps, or other types of sound indicators. The message may also be text-based, that is, an email, multimedia message, or text message, among others. The second user then has the option to wait for the first user to be joined to the active connection, leave a message for the first user, or hang up. The server maintains connection with the second user until the first user is reconnected, the communication session is idle for a predefined timeout, or the second user hangs up.

<FIG> is a block diagram of a communication system <NUM> in accordance with certain embodiments of the disclosure. The system <NUM> includes a server or cluster of servers <NUM>, one or more client devices labeled <NUM>-<NUM> through <NUM>-n, a participant device <NUM>, several network connections linking client devices <NUM>-<NUM> through <NUM>-n to server(s) <NUM>, the network connections labeled <NUM>-<NUM> through <NUM>-m, one or more databases <NUM>, a network connection <NUM> between the server(s) <NUM> and the participant device <NUM>. The network connection <NUM> is shown, for example, as a Session Initiation Protocol (SIP) network but may be a network of any kind.

The client device or plurality of client devices <NUM> and the participant device <NUM> can be any type of communication devices that support voice or video communication, including a telephone, a mobile phone, a smart phone, a personal computer, a laptop computer, a smart watch, a picture frame with a transmitter and microphone, a smart television, a video game system, a personal digital assistant (PDA), a wearable or embedded digital device(s), etc. In some embodiments, the client devices <NUM> and participant device <NUM> can support multiple types of networks. For example, the client devices <NUM> and the participant device <NUM> may have WiFi connectivity allowing voice calls over the internet using voice over IP (VoIP) or may have mobile network connectivity allowing voice calls over cellular and data networks.

<FIG> is a block diagram of basic functional components for a client device <NUM> according to some aspects of the disclosure. In the illustrated embodiment of <FIG>, the client device <NUM> includes one or more processors <NUM>, memory <NUM>, network interfaces <NUM>, storage devices <NUM>, power source <NUM>, one or more output devices <NUM>, one or more input devices <NUM>, and software modules - operating system <NUM>, a network monitor <NUM>, and a data collector <NUM> - contained in memory <NUM>. The software modules are provided as being contained in memory <NUM>, but in certain embodiments, the software modules are contained in storage devices <NUM> or a combination of memory <NUM> and storage devices <NUM>. Each of the components including the processor <NUM>, memory <NUM>, network interfaces <NUM>, storage devices <NUM>, power source <NUM>, output devices <NUM>, input devices <NUM>, operating system <NUM>, the network monitor <NUM>, and the data collector <NUM> is interconnected physically, communicatively, and/or operatively for inter-component communications.

As illustrated, processor <NUM> is configured to implement functionality and/or process instructions for execution within client device <NUM>. For example, processor <NUM> executes instructions stored in memory <NUM> or instructions stored on a storage device <NUM>. Memory <NUM>, which may be a non-transient, computer-readable storage medium, is configured to store information within client device <NUM> during operation. In some embodiments, memory <NUM> includes a temporary memory, an area for information not to be maintained when the client device <NUM> is turned off. Examples of such temporary memory include volatile memories such as random access memories (RAM), dynamic random access memories (DRAM), and static random access memories (SRAM). Memory <NUM> also maintains program instructions for execution by the processor <NUM>.

Storage device <NUM> also includes one or more non-transient computer-readable storage media. The storage device <NUM> is generally configured to store larger amounts of information than memory <NUM>. The storage device <NUM> may further be configured for long-term storage of information. In some embodiments, the storage device <NUM> includes non-volatile storage elements. Non-limiting examples of non-volatile storage elements include magnetic hard discs, optical discs, floppy discs, flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories.

Client device <NUM> uses network interface <NUM> to communicate with external devices or server(s) <NUM> via one or more networks <NUM> (see <FIG>), and other types of networks through which a communication with the client device <NUM> may be established. Network interface <NUM> may be a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device that can send and receive information. Other non-limiting examples of network interfaces include Bluetooth®, <NUM> and Wi-Fi radios in client computing devices, and Universal Serial Bus (USB).

Client device <NUM> includes one or more power sources <NUM> to provide power to the device. Non-limiting examples of power source <NUM> include single-use power sources, rechargeable power sources, and/or power sources developed from nickel-cadmium, lithium-ion, or other suitable material.

One or more output devices <NUM> are also included in client device <NUM>. Output devices <NUM> are configured to provide output to a user using tactile, audio, and/or video stimuli. Output device <NUM> may include a display screen (part of the presence-sensitive screen), a sound card, a video graphics adapter card, or any other type of device for converting a signal into an appropriate form understandable to humans or machines. Additional examples of output device <NUM> include a speaker such as headphones, a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), or any other type of device that can generate intelligible output to a user.

The client device <NUM> includes one or more input devices <NUM>. Input devices <NUM> are configured to receive input from a user or a surrounding environment of the user through tactile, audio, and/or video feedback. Non-limiting examples of input device <NUM> include a presence-sensitive screen, a mouse, a keyboard, a voice responsive system, video camera, microphone or any other type of input device. In some examples, a presence-sensitive screen includes a touch-sensitive screen.

The client device <NUM> includes an operating system <NUM>. The operating system <NUM> controls operations of the components of the client device <NUM>. For example, the operating system <NUM> facilitates the interaction of the processor(s) <NUM>, memory <NUM>, network interface <NUM>, storage device(s) <NUM>, input device <NUM>, output device <NUM>, and power source <NUM>.

The client device <NUM> uses network monitor <NUM> to determine a geographic location of the client device <NUM>. The network monitor <NUM> may interface with and receive inputs from a GPS transceiver, or the network monitor <NUM> may be a state of the processor <NUM>, which is defined by a series of instructions stored on the memory <NUM> or storage device <NUM> that when executed cause the processor <NUM> to triangulate a geographic location of the client device <NUM> based on any available network connections.

In certain embodiments of the disclosure, client device <NUM> further includes a data collector <NUM>. In certain embodiments, the data collector <NUM> represents various states of the processor <NUM>, and is defined by program instructions and/or data stored on the memory <NUM> or the storage device <NUM>. The data collector <NUM> configures the client device <NUM> to collect network quality parameters, device parameters, and the location data from network <NUM> (see <FIG>). Once the quality parameters and other information are collected for an individual wireless network, then the data collector <NUM> configures the client device <NUM> to upload, to the server <NUM> (see <FIG>), the parameters collected and location data pertaining to a location of the client device <NUM> when the quality parameters were collected.

The various networks <NUM> are a connectivity methodology and may take the form of multiple topologies. For example, network <NUM> comprises wireless and wired networks. Network <NUM> links the server <NUM> and the user devices <NUM>. Network <NUM> includes infrastructure that supports the links necessary for voice communication between at least one user device and a participant device. Network <NUM> may include a cell tower, base station, and switching network.

Server(s) <NUM> is at least one machine that provides operation management and services to a voice or video communication session between the participant device <NUM> and one user device <NUM>. The server has access to multiple databases <NUM> and other facilities that enable the features described herein.

According to certain embodiments, similar elements shown in <FIG> to be included in the client device <NUM> can also be included in the participant device <NUM>.

Turning to <FIG>, a block diagram illustrating components for a server <NUM> is provided according to certain aspects of the disclosure. Server <NUM> includes one or more processors <NUM>, memory <NUM>, network interface(s) <NUM>, storage device(s) <NUM>, and software modules - media manager <NUM>, connection service router <NUM>, data organizer <NUM>, and database editor <NUM> - contained in memory <NUM>. The software modules are provided as being contained in memory <NUM>, but in certain embodiments, the software modules are contained in storage devices <NUM> or a combination of memory <NUM> and storage devices <NUM>. In certain embodiments, each of the components including the processor(s) <NUM>, memory <NUM>, network interface(s) <NUM>, storage device(s) <NUM>, media manager <NUM>, connection service router <NUM>, data organizer <NUM>, and database editor <NUM> are interconnected physically, communicatively, and/or operatively for inter-component communications.

Processor(s) <NUM>, analogous to processor(s) <NUM> in client device <NUM>, is configured to implement functionality and/or process instructions for execution within the server <NUM>. For example, processor(s) <NUM> executes instructions stored in memory <NUM> or instructions stored on storage devices <NUM>. Memory <NUM>, which may be a non-transient, computer-readable storage medium, is configured to store information within server <NUM> during operation. In some embodiments, memory <NUM> includes a temporary memory, i.e. an area for information not to be maintained when the server <NUM> is turned off. Examples of such temporary memory include volatile memories such as random access memories (RAM), dynamic random access memories (DRAM), and static random access memories (SRAM). Memory <NUM> also maintains program instructions for execution by processor(s) <NUM>.

Server <NUM> uses network interface(s) <NUM> to communicate with external devices via one or more networks depicted as network <NUM> and SIP network <NUM> in <FIG>. Such networks may also include one or more wireless networks, wired networks, fiber optics networks, and other types of networks through which communication between the server <NUM> and an external device may be established. Network interface(s) <NUM> may be a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device that can send and receive information.

Storage devices <NUM> in server <NUM> also include one or more non-transient computer-readable storage media. Storage devices <NUM> are generally configured to store larger amounts of information than memory <NUM>. Storage devices <NUM> may further be configured for long-term storage of information. In some examples, storage devices <NUM> include non-volatile storage elements. Non-limiting examples of non-volatile storage elements include magnetic hard discs, optical discs, floppy discs, flash memories, resistive memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories.

Server <NUM> further includes instructions that implement media manager <NUM> which is configured to provide media services to client device <NUM> or participant device <NUM>. Media manager <NUM> manages providing SMS, MMS, and email messages in connection with alerting the external devices of information relating to the status of a call. For example, media manager <NUM> provides a prompt to participant device <NUM> soliciting a voice or video message when client device <NUM> is dropped from a communication session. Media manager <NUM> also provides media service in cases where client device <NUM> receives guidance to stay within a certain area in order to avoid losing connection to the communication session. In certain embodiments, media manager <NUM> facilitates communication between client device <NUM> and participant device <NUM>. For example, media manager <NUM> filters, compresses, and encrypts voice or video data destined for each external device. In certain embodiments, when participant device <NUM> elects to leave a voice message, media manager <NUM> is further configured to transcribe the voice message, package, and send it to an email address. The transcribed voice message may be an email attachment or an email body. In certain aspects where the transcribed voice message is an email body, an attachment of the voice message may be included in the email. In certain embodiments, instead of email, an SMS or MMS format message may be composed and sent to at least one client device <NUM>. The manner to which voice messages are delivered to a disconnected user may be configured in preference settings of the user's profile.

Connection service router <NUM> is configured to manage the connection between client device <NUM> and participant device <NUM>. When client device <NUM> sends a communication signal to server(s) <NUM> in order to initiate a communication session with participant device <NUM>, connection service router <NUM> is configured to route client device <NUM> to appropriate participant device <NUM> based on the received communication signal. In certain examples not defined by the invention, connection service router <NUM> is further configured to prepare and provide a software service for auto-connecting client device <NUM> in the event client device <NUM> is disconnected from the communication session. For example, client device <NUM>-<NUM> is a smart phone in a communication session with participant device <NUM>. Connection service router <NUM> may provide or activate a software service running on client device <NUM>-<NUM> or a default second client device <NUM>-<NUM> that will cause one of the devices to send a communication signal to server(s) <NUM> in the event client <NUM>-<NUM> is disconnected from the communication session. In certain aspects of the disclosure, connection service router <NUM> is further configured to prepare a distinct identifier or number for the communication session between client device <NUM> and participant device <NUM>. Connection service router <NUM> then provides the distinct number or identifier to media manager <NUM> for packaging and sending to client device <NUM>.

The data organizer <NUM> configures server(s) <NUM> to organize device and network parameters from the plurality of networks <NUM> (see <FIG>) sent by the plurality of client devices <NUM>. Client devices <NUM> are configured to upload, to the server <NUM>, collected location information, when the device and network parameters were collected, and the actual parameters collected. The data organizer <NUM> will associate the received location information with the reported parameters such that the location information from the client device <NUM> is associated with corresponding device and network parameters. The data organizer <NUM> further associates a timestamp with the received location information and collected parameters. In certain embodiments, the timestamp is received from the client device <NUM>; however, in other embodiments, the timestamp is produced by the server <NUM>. The data organizer <NUM> is further configured to aggregate all of the received device and network parameters per location and per timestamp.

The database editor <NUM> configures the server <NUM> to build a database entry for each client device <NUM> associated with a user account during specific time windows. The database entries are stored in database <NUM>. In certain embodiments, for each specific time window, the database editor <NUM> will specify a default second client device to make a connection to in case client device <NUM> is dropped from the communication session. The default second client device is determined by analyzing the parameters collected by the data organizer <NUM>. In certain embodiments, the default second client device is determined by selecting a device closest in proximity to client device <NUM>. In certain embodiments, the capabilities of the device is taken into account. For example, if a video communication session is ongoing with client device <NUM>-<NUM>, the default second client device may be chosen as client device <NUM>-<NUM> which has the capability of providing and maintaining video calls. In certain embodiments, the performance characteristics of the second device are taken into account. For example, the network interface <NUM> of one device may have a higher speed than another device.

<FIG> provides steps for establishing a communication session performed by server(s) <NUM> in accordance to some embodiments of the disclosure. Steps <NUM> and <NUM> show that the voice or video communication session may be requested from either a client device <NUM> or a participant device <NUM>, respectively. In certain aspects of the disclosure, server(s) <NUM> obtains a request to establish a communication session from client device <NUM> in step <NUM>. In certain embodiments, server(s) <NUM> may provide a reconnect service to client device <NUM> as depicted in step <NUM>. Some examples of a reconnect service includes: starting a software service on client device <NUM> that contains credentials and program that automatically dials into or attempts to reconnect to the communication session when disconnect; an SMS, email, or MMS that contains a distinct number for the user to call in case a disconnection occurs; an SMS, email, MMS, or sound media that contains a PIN, password, or passcode associated with the communication session. In step <NUM>, server(s) <NUM> connects client device <NUM> to participant device <NUM> and establishes a communication session. After step <NUM>, client device <NUM> and participant device <NUM> may exchange information though the communication session. At step <NUM>, server(s) monitors the communication session between the client device and the participant device. Server(s) <NUM> collects information pertaining to the call.

<FIG> provides an example of how server(s) <NUM> collects and packages information with respect to certain embodiments of the disclosure. In step <NUM>, server(s) <NUM> receives location information from client device <NUM>. In certain embodiments, server(s) <NUM> receives multiple location information from a plurality of client devices <NUM> not involved in the communication session. In certain embodiments, the server uses the location information from the plurality of client devices not involved in the communication session in order to compile a ranking for choosing a client device <NUM> to connect to in the event of a disconnect with the already connected client device <NUM>. For example, if client device <NUM>-<NUM> is engaged in a communication session with participant device <NUM>, server(s) <NUM> may receive location data from client devices <NUM>-<NUM> through <NUM>-<NUM>. Additionally, server(s) <NUM> may determine based on the location of the client devices <NUM>-<NUM> to <NUM>-<NUM> that client device <NUM>-<NUM> is the closest device to client device <NUM>-<NUM>. In step <NUM>, location information may also be obtained from a database <NUM> for client devices not currently active on a network. For example, client device <NUM>-<NUM> is designated as a landline telephone with a specific, permanent location.

In step <NUM>, server(s) receives network performance parameters from the plurality of client devices <NUM>. In certain embodiments, server(s) receives network performance parameters from intermediate devices, nodes, and machines between the client devices <NUM> and server(s) <NUM>. For example, server(s) may receive coverage data from a set of base stations or other servers and databases associated with a cellular connection. In step <NUM>, server(s) receives client device <NUM> parameters. In certain embodiments, client device parameters include battery life, signal strength, data speeds, processor speed, etc. At step <NUM>, a timestamp is associated with the location information, received network performance parameters, and the received client device parameters. The timestamp indicates a time when the data, comprising the location information and the parameters, was collected by the collected by the client devices <NUM> or received by the server(s) <NUM>. If a timestamp represents the time when the data was collected by the client device, then the timestamp is applied by the client device <NUM> and sent along with the data to the server(s) <NUM>. If the timestamp represents the time when the data was received by the server(s) <NUM>, then the timestamp was applied by the server(s) <NUM> when the data was received.

In step <NUM>, server(s) <NUM> aggregate performance and device parameters based on location information and timestamp. Aggregation of the information from a plurality of client devices <NUM> provides performance and associated network parameters that are sorted based on the location they were collected from and a time during which they were collected/uploaded by the client device <NUM> or received by server(s) <NUM>. At step <NUM>, server(s) <NUM> analyzes the aggregated parameters and builds or updates database <NUM> entries for the user associated with the client devices <NUM>. In certain embodiments, the updates or changes to database <NUM> also changes one or more parameters in a user profile associated with the user.

<FIG> is a flow diagram illustrating steps performed by a server or cluster of servers for reconnecting a second device with the communication session in accordance with some example embodiments. Once a participant device <NUM> and a client device <NUM> are in a communication session, in step <NUM>, server(s) <NUM> monitors the communication session between both devices. In step <NUM>, server(s) <NUM> determines whether client device <NUM> has been dropped from the communication session. In the event that the client device <NUM> suddenly drops from the communication session, in step <NUM>, the server(s) <NUM> maintains connection to the participant device <NUM> and prevents the participant device <NUM> from disconnecting. The connection maintained is the active communication channel that existed between the client device <NUM> and participant device <NUM>. In certain embodiments, at step <NUM>, server(s) <NUM> plays a media message to participant device <NUM>. In certain instances, the media message may be in text or email form. The media message may inform participant device <NUM> that client device <NUM> is disconnected. The media message may also provide a participant device <NUM> with a timeout, a waiting period client device <NUM> has to reconnect before the communication session is terminated. The media message may also provide a prompt for participant device <NUM> to leave a message for client device <NUM>. In certain embodiments, the timing of the prompt may come at the end of a timeout. In some embodiments, the participant device <NUM> chooses to leave a message and after leaving a message, the communication session is terminated.

After playing a media to participant device <NUM>, at step <NUM>, server(s) <NUM> determines the reason for the disconnection of client device <NUM>. In certain embodiments, this determination is based on information contained in the database <NUM>. For example, information in database <NUM> may contain collected parameters that contain data showing a low battery level for client device <NUM>, low signal strength, etc. At step <NUM>, server(s) <NUM> retrieves the most recent location of client device <NUM>. At step <NUM>, server(s) uses the retrieved location and information from a user profile to determine a second device in close proximity to client device <NUM>. For example, client device <NUM>-<NUM> drops out of a communication session with participant device <NUM>, and server(s) <NUM> identifies client device <NUM>-<NUM> is the most eligible device to connect to the communication session. In another example, server(s) <NUM> takes into account the reason for the disconnection of client device <NUM>-<NUM>. For instance, after client device <NUM>-<NUM> drops out of a communication session on network <NUM>-<NUM> with participant device <NUM>, server(s) <NUM> identifies client device <NUM>-<NUM> was in an area of poor signal strength before being dropped from the communication session. So server(s) <NUM> determines that the reason for the dropped call is a lack of network coverage and then identifies client device <NUM>-<NUM> as the most eligible device to connect to the communication session based on the types of network available in the last location of client device <NUM>-<NUM>. Client device <NUM>-<NUM> on network <NUM>-<NUM> may then be selected to join the communication session. At step <NUM> and step <NUM>, server(s) <NUM> establishes a connection to the second device and connects the second device to the communication session with participant device <NUM>.

In certain embodiments, at step <NUM>, in order to establish a connection to the second device, server(s) <NUM> dials the second device. In certain embodiments, the user dials a number with the second device in order to connect to server(s) <NUM>. In certain embodiments, the determination of whether server(s) <NUM> initiates connection with the second device or the second device initiates connection with server(s) <NUM> is provided in a user profile associated with the different client devices <NUM>.

In certain embodiments, the nature of client device <NUM> dictates server(s) <NUM>'s connection method. For example, if client device <NUM>-<NUM> is an office landline phone and client device <NUM>-<NUM>'s last location before the disconnection was in the vicinity of the office building, server(s) <NUM> would attempt to connect to the office number for user device <NUM>-<NUM>. An analogous situation holds for home landline phones if client device <NUM>-<NUM>'s last location was at home. In certain embodiments, if client device <NUM>-<NUM> is an office computer or home computer, depending on the last known location of client device <NUM>-<NUM>, server(s) <NUM> may attempt a voice or video communication session to either computer. The computers would need to have either a wired or wireless network connectivity and programs that enable voice and/or video communication over such network. In certain instances, the computers are equipped with programs that support text to speech and speech to text, which allow text inputs from client device <NUM>-<NUM> to reach participant device <NUM> as an audio message and audio messages from participant device <NUM> to reach client device <NUM>-<NUM> as text messages. The term computer covers the case where client device <NUM>-<NUM> is a mobile device like a tablet computer or a laptop computer with wireless or wired connectivity.

<FIG> provides a flow diagram of steps performed by a server or cluster of servers for reconnecting either a second device or a client device with a participant device in certain embodiments of the disclosure. In step <NUM>, while server(s) <NUM> is monitoring the communication session between client device <NUM> and participant device <NUM>, server(s) <NUM> may determine in step <NUM> using aggregated data collected while monitoring the communication session that client device <NUM> will lose connectivity. This determination or prediction that client device <NUM> will lose connectivity is be based on historical data. For example, the user using client device <NUM> usually has spotty reception in a certain area while commuting to work, the user usually loses reception inside his/her work elevator, the user usually has spotty reception at certain parts of his/her home, etc. Using location based data to provide context, the server can collect information over time about user movement patterns and where disconnections to voice conversations usually occur. Additionally, the server can use information regarding mobile network congestion or documented poor network coverage in an area the user is entering in order to determine a probability of client device <NUM> losing connection.

At step <NUM>, server(s) <NUM> will provide a warning to both client device <NUM> and participant device <NUM>. The warning may take a form of an audio voice message or audio signals including beeps or sequence of beeps. In certain embodiments, the warning is only provided to client device <NUM>. For example, in the case client device <NUM> is a non-stationary mobile phone, the warning provided may be directions to the user of client device <NUM> that will keep client device <NUM> within an area of decent signal strength. In this example, if the user adheres to the directions, client device <NUM> will not be allowed to enter an area with low signal strength, therefore, avoiding a disconnection. In certain embodiments, the warning provides an estimated time until the communication session will be interrupted by a disconnection, where the estimated time is based on a distance between the client device <NUM> and the area of low signal strength and a velocity of the client device <NUM> computed from its location history. For example, client device <NUM> may receive a <NUM> second notice until being disconnected. With advanced warning, the parties in the communication session will have time to decide whether to wrap up the session or whether to hold until the party that is to be disconnected reconnects. In certain embodiments, the warning is a voice message asking the user to plug in client device <NUM> because the battery charge is low on the mobile device.

At step <NUM>, server(s) <NUM> determines whether client device <NUM> has been dropped from the communication session. Steps <NUM>, <NUM>, <NUM>, and <NUM> proceed as in <FIG>. In the event client device <NUM> was dropped from the communication session, server(s) <NUM> maintains connection to participant device <NUM>, and in some embodiments, plays a media to the participant device <NUM>. Server(s) <NUM> then retrieves most recent data for client device <NUM> and information from database <NUM> including a user profile and selects a second device to connect to the communication session.

At step <NUM>, server(s) provides a dialpad signal to the second device. For example, if client device <NUM>-<NUM> was dropped from the communication session and client device <NUM>-<NUM> is selected as the second device, then server(s) <NUM> will attempt to send a dialpad signal to client device <NUM>-<NUM>. If client device <NUM>-<NUM> attempts to connect to server(s) <NUM>, server(s) <NUM> will receive a communication signal. In certain embodiments, client device <NUM>-<NUM> is not available and server(s) <NUM> only receives a communication signal from client device <NUM>-<NUM>. At step <NUM>, server(s) establishes a communication session between participant device <NUM> and the selected device.

<FIG> provides an alternative to <FIG> in accordance with certain examples not defined by the invention. <FIG> shares steps <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> with <FIG>. At step <NUM>, after retrieving the most recent location of client device <NUM>, server(s) <NUM> determines in step <NUM> that client device <NUM> is available through an alternate network and sends a dialpad signal to client device <NUM> on the alternate network. For example, client device <NUM>-<NUM> was dropped from a communication session with participant device <NUM> through network <NUM>-<NUM> connection with server(s) <NUM>. Server(s) <NUM> determines and locates client device <NUM>-<NUM> through network <NUM>-<NUM> and provides a dialpad signal to client device <NUM>-<NUM> using network <NUM>-<NUM>. Server(s) then establishes a connection to client device <NUM>-<NUM> through network <NUM>-<NUM> and then joins client device <NUM>-<NUM> to the communication session with participant device <NUM> at step <NUM>. In certain embodiments, client device <NUM>-<NUM> is communicating over a cellular voice network and becomes disconnected. Through WiFi connectivity, server(s) <NUM> finds client device <NUM>-<NUM> and attempts to connect to client device <NUM>-<NUM> through the WiFi network. In certain embodiments, client device <NUM>-<NUM> is capable of connecting to multiple cellular networks operated by different cellular network carriers. When client device <NUM>-<NUM> loses connection over a first carrier's cellular network, server(s) <NUM> connects to client device <NUM>-<NUM> over a second carrier's cellular network. In certain embodiments where server(s) <NUM> reconnects to client device <NUM>-<NUM> through a different network, client device <NUM>-<NUM> plays the role of the second device or selected device (provided in <FIG>). In <FIG>, the disconnected client device <NUM> ends up being the selected device or the second device after server(s) <NUM> finds client device <NUM> on an alternate network.

<FIG> is a flow diagram illustrating steps performed by client device <NUM> for collecting and sending data to server(s) <NUM> in accordance with certain embodiments. In order to alleviate the burden of information gathering by server(s) <NUM>, client devices <NUM> may collect client device and network parameters. At step <NUM>, client device <NUM> communicates with network <NUM>. At step <NUM>, client device <NUM> measures network quality parameters from network <NUM>. Network quality parameters may include only a single parameter or a multitude of parameters. For example, the network quality parameters may include at least one of a bit error rate, a signal strength such as a received signal strength indicator (RSSI), a network latency, and network throughput.

At step <NUM>, client device <NUM> measures device parameters. At step <NUM>, client device <NUM> provides both parameters to storage devices on client device <NUM>. At step <NUM>, client device <NUM> collects network identification information, and at step <NUM>, appends the network identification information to collected parameter data in steps <NUM> and <NUM>. At step <NUM>, client device <NUM> appends location information to the collected parameter data. At step <NUM>, client device <NUM> sends the collected parameter data to server(s) <NUM>.

Claim 1:
A method for a server (<NUM>) to restore a communication session between a client device (<NUM>-<NUM>) and a participant device (<NUM>), wherein network connections (<NUM>, <NUM>) link the devices with the said server (<NUM>), the method comprising:
determining (<NUM>), by the server (<NUM>), based on at least one of client device's user historical information and location data, that the client device (<NUM>-<NUM>) is likely to lose connectivity; and
sending (<NUM>), from the server (<NUM>) to the client device (<NUM>-<NUM>) and to the participant device (<NUM>), a warning of the likely loss in connectivity;
detecting (<NUM>), by the server device (<NUM>), that the client device (<NUM>-<NUM>) has lost connection to the participant device (<NUM>), in dropping the client device (<NUM>-<NUM>) from a communication session between the client device (<NUM>-<NUM>) and the participant device (<NUM>) via the server device (<NUM>);
maintaining (<NUM>), by the server device (<NUM>), a network connection to the participant device (<NUM>);
retrieving (<NUM>, <NUM>), by the server device (<NUM>), from a database (<NUM>), a user profile and device statistics associated with the client device (<NUM>-<NUM>);
selecting (<NUM>), by the server device (<NUM>), based on the user profile and the device statistics, a second device (<NUM>-n) associated with the user profile and proximate to the client device (<NUM>-<NUM>); and
restoring (<NUM>, <NUM>; <NUM>, <NUM>, <NUM>; <NUM>, <NUM>, <NUM>), by the server device (<NUM>), the communication session between the second device (<NUM>-n) and the participant device (<NUM>).