Server initiated communication session join after endpoint state check failure
By analyzing user connection data and historical records through a communication server, the system automatically identifies and switches to backup devices or applications, solving the connection difficulties users face when joining network-based communication sessions and improving efficiency and resource utilization.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- MICROSOFT TECHNOLOGY LICENSING LLC
- Filing Date
- 2021-10-29
- Publication Date
- 2026-04-10
AI Technical Summary
When users attempt to join a network-based communication session, they may encounter connection difficulties due to malfunctions of specific devices or applications, resulting in delays and wasted resources.
The communication server automatically identifies problematic devices by analyzing users' connection data and history, and sends a connection request to another communication application of the user to quickly join the session.
It improves the efficiency of users joining network-based communication sessions, reduces the waste of network and processor resources, and reduces user waiting time.
Smart Images

Figure CN116569537B_ABST
Abstract
Description
[0001] CLAIM OF PRIORITY
[0002] This application claims priority to Luxembourg Patent Application No. LU102277, filed December 11, 2020, which is incorporated by reference herein in its entirety. TECHNICAL FIELD
[0003] Embodiments relate to network-based communication sessions. Some embodiments relate to sending, by a communication server providing a network-based communication session, a connection request to a second communication application registered to a user when a first communication application registered to the user is unavailable to join the network-based communication session. BACKGROUND
[0004] Network-based communication sessions provided by network-based communication services allow two or more participants to interact with one another using various different media such as audio, video, applications, files, content of computer screens, and the like. These sessions can feature real-time or near real-time communication using these media. Exemplary communication sessions include online meetings, Voice over Internet Protocol (VoIP) telephone calls, chat sessions, and the like. These sessions allow users to interact remotely in a manner that is sometimes more efficient than face-to-face interaction. BRIEF DESCRIPTION OF DRAWINGS
[0005] In the drawings, which are not necessarily drawn to scale, like numerals can describe similar components in different views. Like numerals having different letter suffixes can represent different instances of similar components. The drawings illustrate generally, by way of example, various embodiments discussed in the present document.
[0006] Figure 1 A diagram of a system for server-initiated communication session joining after endpoint failure is illustrated in accordance with some examples of the present disclosure.
[0007] Figure 2 A message sequence chart for server-initiated communication session joining after endpoint failure is illustrated in accordance with some examples of the present disclosure.
[0008] Figure 3 A diagram of a graphical user interface (GUI) of a communication application is illustrated.
[0009] Figure 4 A diagram of a GUI of a communication application of a mobile phone is illustrated.
[0010] Figure 5 A logical diagram of a communication application and a communication server is illustrated in accordance with some examples of the present disclosure.
[0011] Figure 6 Exemplary machine learning components are shown in accordance with some examples of the present disclosure.
[0012] Figure 7 FIGURE 1 illustrates a flow diagram of a method of server initiated communication session join after endpoint state check failure by a communication server, in accordance with some examples of this disclosure.
[0013] Figure 8 FIGURE 1 illustrates a block diagram of an example machine upon which any one or more of the techniques (e.g., methodologies) discussed herein can perform. DETAILED DESCRIPTION
[0014] As technology has evolved, computing devices have become cheaper, smaller, and more powerful. As a result, computing devices play a more important role in people's daily lives. The combination of increasing importance of computing devices to users and decreasing cost of these devices has enabled users to have multiple disposable computing devices. For example, a user can use one or more different desktop computing devices, smart phone computing devices, laptop computing devices, wearable computing devices, and other devices in the course of a day.
[0015] A user can install a communication application that allows the user to participate in network based communication sessions on more than one of these computing devices. After installing each communication application, the communication application can be registered with a communication service. As part of the registration process, the communication service can record information about the application, the device on which the application is executed, and the account to which the application is authenticated. In this way, the communication service can establish a profile of devices and applications that the user has used in the past to connect to the communication service. Additionally, a user can register a device with the network based communication service through one or more graphical user interfaces (GUIs), such as registering a phone number (e.g., a smart phone, a VoIP number, etc.) of a user's mobile device.
[0016] Particular software problems, network connection problems, or user errors can cause a user to have difficulty connecting to a scheduled network-based communication session. This can cause the user to become frustrated and, in some cases, can cause the user to experience a delay in joining the network-based communication session. Methods, systems, and machine-readable media are disclosed in some examples that automatically initiate a connection to a network-based communication session using a second communication application in response to a communication service detecting that a user is unable to join the network-based communication session using a first communication application. The first communication application and the second communication application can be on the same or different computing devices. For example, if a user's desktop device is unavailable or experiencing connection problems, a communication server can automatically request a communication application on the user's mobile phone to join the network-based communication session. The user can accept the connection on their mobile phone and be allowed to enter the communication session using their mobile phone. More generally, if a communication server providing a communication service detects that a first registered communication application that the communication service predicts the user will attempt to use to join a scheduled meeting is unavailable, the communication server can attempt to initiate a connection to a second registered communication application.
[0017] In this way, the present disclosure solves the technical problem with a technical solution. Specifically, the present disclosure includes automatically identifying a technical problem that is preventing a user from joining a network-based communication session, and then, in response to identifying the technical problem, sending a join message to a different communication application of the user. This allows the user to quickly join the network-based communication session. Additionally, the present disclosure solves the technical problem of automatically determining that the user has a technical problem by using a technical solution that analyzes one or more signals such as a lack of response to a polling message; a response to a polling message that indicates an error; or by attempting to join the network-based communication session multiple times.
[0018] Further, the system solves other technical problems with a technical solution; such as by using one or more signals such as connection data to determine: which application the user will attempt to use to connect to the network-based communication session, and which device the system should attempt in the event that the primary application encounters a technical problem. The current technical solution improves the functioning of computer systems and networks. For example, by increasing the effectiveness of meeting joins through applications; by eliminating or reducing network traffic, processor usage, and memory usage that occurs when a user attempts to join a network-based communication session on a first communication application continuously and unsuccessfully; and by reducing network traffic, processor usage, memory usage, and network-based communication system resources that occur when other attendees need to wait for the user to join the meeting.
[0019] As previously described, the communication service can determine a first registered communication application that the user is predicted to use to join the scheduled meeting. The communication service can use one or more factors to determine the first registered communication application. The system can use the user's connection data, which specifies connection preferences or past connection information, such as past application usage. The connection data can include unsuccessful attempts to use the first communication application to connect to a network-based communication session in the past. For example, the user can have attempted to join a communication session using the application. That application can be selected as the first application.
[0020] In some examples, the connection data can include the user's preferences, which can specify an ordering of the user's preferred registered applications. The first registered communication application can be identified as the highest ranked application according to the user's preferences. The preferences can be context-specific. For example, the user can have a particular preferred device if the user is in a particular location (determined by the user's mobile device). Similarly, the context can include the time of day, the day of the week, and so on.
[0021] In some examples, the user's historical application usage can be used to select the first registered communication application. Examples of using the user's history to select the first registered communication application can include selecting the application that the user last interacted with; the application that the user uses the most; the application that the user typically uses for communication sessions; the application that the user typically uses for that communication session (e.g., for recurring sessions or sessions with particular other users or sets of users); the application that the user typically uses given the user's current context; other past history of the user; and so on. The user's current context can include the user's location, the time of day, the user's velocity, and so on. For example, the system can dynamically select the application based on the user's habits, such as based on the application that the user typically uses for a given location, time of day, velocity, and / or other information about the user. In other examples, the system can determine the user's location through a location sensor (e.g., a global positioning system (GPS) sensor) on their mobile device or through calendar entries or usage data. This location information can be used to select the application. For example, if it is determined that the user's location is at their home, the system can select the application with the last known IP address that resolves to a location closest to the user's home.
[0022] In some examples, the system can limit the selection of the first registered communication application to a list of registered communication applications that are known to be executing and / or authenticated with the communication service.
[0023] In some examples, only one of the above-noted factors can be used, but in other examples, multiple ones of the above-noted factors can be used in combination. For example, the system can first use the last used registered communication application, unless the last used time is greater than a threshold time, in which case the system can use a registered communication application that the user has used in the past for a similar or same length, with similar or same attendees, and at a similar or same time of day, network-based communication session. In other examples, each application can be scored according to one or more of the above factors, and the application with the highest total score can be selected as the first application. Thus, an application can be given a score based on how long ago the user used the application, whether the last known network address for the application matches the user's location, and so on.
[0024] The second registered communication application is a communication application different from the first communication application, and can be on the same or different computing device as the first registered communication application. The communication system can determine the second registered application in a variety of ways. For example, as described above, the communication system can use the user's connection data, such as the user's preferences, which can specify an ordering of registered applications that the user prefers. According to the user's preferences, the second registered communication application can be the second ranked application (after the first registered communication application). In other examples, the system can use connection data, such as the user's history, to select the second registered communication application. Examples of using the user's history to select the second registered communication application can include selecting an application from a list of registered communication applications that the user last interacted with (excluding the first communication application); the application that the user uses the most; the application that the user typically uses for a communication session; the application that the user typically uses for that communication session (e.g., for recurring sessions or sessions with a particular other user or set of users); the application that the user typically uses given the user's current context; other past history of the user; and so on. The user's current context can include the user's location, time of day, the user's velocity, and so on. For example, the system can dynamically select the second communication application based on the user's habits, such as based on the applications (excluding the first communication application) that the user typically uses for a given location, time of day, velocity, and / or other information about the user. In other examples, the system can determine the user's location through a location sensor on their mobile device (e.g., a global positioning system (GPS) sensor) or through calendar entries or usage data. This location information can be used to select an application. For example, if it is determined that the user's location is at their home, the system can select the application with the last known IP address that resolves to a location near the user's home.
[0025] In some examples, the system can limit the selection of the second registered communication application to a list of registered communication applications that does not include the first registered communication application and that are known to be executing and / or authenticated to the communication service.
[0026] As with the selection of the first registered communication application, the selection of the second registered communication application can use only one of the above-mentioned factors, but in other examples, multiple ones of the above-mentioned factors can be used. For example, the system can first use the last used registered communication application (excluding the first communication application) unless the time of last use is greater than a threshold time, in which case the system can use the registered communication application (excluding the first communication application) that the user used in the past for a similar or same length, with similar or same attendees, and at a similar or same time of day, network-based communication session. In other examples, each application can be scored according to one or more of the above factors, and the application with the highest total score (excluding the first application) can be selected as the second application. Thus, an application can be given a score based on how long ago the user used the application, whether the last known network address of the application matches the user's location, etc. The selection of the second communication application can use the same, similar, or different factors as the selection of the first application.
[0027] The communication server can determine that the first registered application is having problems in a variety of ways. For example, the user can have attempted to join a network-based communication session with the first registered communication application more than a threshold number of times within a particular time period. In other examples, the server can send one or more poll or ping messages to the first communication application. These messages can request a response from the first registered application. If no response is received, the communication server can infer that the first registered application is having problems. These messages can be sent before, when, or after the scheduled start of the online communication session. In yet other examples, the communication service can specify that authenticated and executing communication applications send status update messages at a particular periodicity. If no status message is received from the first registered communication application within a threshold time period, the communication service can infer that the first registered communication application is not functioning.
[0028] The communication server can initiate a connection to the second registered application by sending a connection request to the second registered application. This can result in the second registered application alerting the user. If the user accepts the connection request, the user can be joined to the network-based communication session using the second communication application. As previously described, the second registered application can be on the same or a different device than the first registered application. The connection request can be a call setup request (to connect a mobile phone to audio for a conference); a SIP-INVITE request, any other protocol setup request; etc. If the user does not respond to the request, the communication server can continue to attempt different registered communication applications (selected using the same or similar criteria for selecting a second registered application as described above), until the user joins the network-based communication session from a communication application, the system has attempted all registered communication applications, or until the user rejects the connection request.
[0029] Figure 1 A diagram of a system 100 for server-initiated communication session joining after endpoint failure is illustrated in accordance with some examples of the present disclosure. A communication service can be provided by one or more communication servers 130. Example communication services can include MICROSOFT SKYPE FOR AMAZON GOOGLE etc. The same user can install a communication application for the same communication service on one or more computing devices. For example, Figure 1 Three computing devices 110, 115, and 120 that can execute one or more communication applications of a communication system and can be registered with a communication service are illustrated. The communication applications on computing devices 110, 115, and 120 can register with the communication service by passing messages to the communication server 130. In some examples, registration can initially occur when the communication application is installed and the user is authenticated, and can be periodically updated or refreshed.
[0030] In some examples, after registration, when the communication application on a computing device starts executing, it contacts the communication server 130 for authentication. The communication application periodically provides status updates indicating that the communication application is executing and can be contacted. For example, the communication application can provide network reachability information, such as a network address, to the communication server 130. In addition, the communication application can provide user status information, such as whether the user is busy, free, unavailable, etc. The communication server 130 can track a list of registered applications used by the user, and store a record of the status updates including network reachability information.
[0031] At a predetermined time period relative to a predetermined network-based communication session, the communication service can determine whether a first communication application on a first device that the communication service predicts the user will use joins the communication session. The time period relative to the predetermined network-based communication session can be before, at, or after the predetermined time of the network-based communication session. As described above, the communication service can determine the first communication application in a variety of ways. For example, in Figure 1 In some examples, the communication service can determine that an application executing on the computing device 120 will be used to join the communication session. For example, the computing device 120 can be executing a communication application that was recently used to access the communication service.
[0032] As used herein, a communication application is any computing device application that can be used to access a communication service or a feature of a communication service. Communication applications include desktop applications, mobile applications, internet browsers, telephone applications, and the like. A communication application can allow a user to utilize all forms of communication and media provided by a communication service, or only some forms of media. For example, a telephone call application on a mobile phone used to make and / or receive telephone calls on a mobile phone is considered a communication application herein.
[0033] The communication service can perform a health check to determine whether the first registered communication application is having problems as described above. In some examples, the communication service can perform a health check by sending a poll message to the first registered communication application. If the first communication application does not respond within a specified time period, or the response indicates that there is a problem, the communication service can determine that there is a problem. In other examples, a health check can determine that there is a problem if a required status update message is not received from the first registered communication application within a threshold amount of time. In yet other examples, the communication service can send a poll message if a required status update message is not received from the first registered communication application within a threshold amount of time, and the communication service can determine that there is a problem if a reply is not received within a threshold amount of time. If the communication service determines that there is a problem, and if the user has not joined a network-based communication session, the communication service can attempt to join the user to a second communication application - which can be on the first computing device or a second computing device.
[0034] As described above, the communication application can respond to the poll message, but can report problems in joining the network-based communication session. The problems can include difficulty in setting up media streams, difficulty in utilizing audio recording or playback devices, etc. Additionally, if the user has joined and left the same network-based communication session more than a threshold amount of time in a specified time period, the first communication application can determine that the user perceives a problem despite the application being unable to detect any problems. If the first communication application has difficulty joining the network-based communication session in response thereto, the communication service can attempt to initiate a connection of the user to a second communication application - which can be on the first computing device or a second computing device. It should be noted that the multiple attempts to join the network-based communication session can be detected at either or both of the first registered communication application or the communication service.
[0035] For example, if the first communication application is executing on computing device 120 and computing device 120 does not respond to the poll message or responds that the first communication application has difficulty connecting to the network-based communication session, the communication server 130 can send a connection request to another application registered with the user to join the network-based communication session, e.g., an application executing on computing device 110 or 115. The request can be sent to the last known network address of the application determined from status updates sent by those applications. In some examples, the request can be sent to an application known to be executing and authenticated to the network-based communication service. In other examples, the request can be sent to any registered application. In yet other examples, the request can be sent to an application known to be executing and authenticated first; if the application known to be executing and authenticated does not respond, other registered applications known to be executing and authenticated can be attempted.
[0036] Figure 2 A message sequence chart 200 illustrating server-initiated communication session joining after endpoint failure is illustrated in accordance with some examples of the present disclosure. In a device registration phase, a first communication application 232 can send one or more registration messages 236 to a communication server 230 providing a communication service or a portion of a communication service. The registration messages can register the first communication application 232 with the communication server 230. The communication server 230 can provide an acknowledgement message 238. Similarly, a second communication application 234 sends a registration message 240 and receives an acknowledgement 242. During the registration phase, the communication server 230 can add the first communication application 232 and the second communication application 234 to a list of applications associated with a particular user account. In some examples, the registration can occur before, between, or after user authentication.
[0037] During the status update phase, the first communication application 232 can send a status update message 244. The status update message can update the user's status and can provide the current network address of the first communication application 232. The communication server 230 can provide an acknowledgement message 246. In some examples, status update messages, such as the status update message 244, can be sent periodically from the first communication application 232 at defined intervals. In other examples, status update messages can only be sent when a change in status in the user or application is detected.
[0038] Within a specified time, the communication server 230 can determine that the first communication application 232 is to be used to connect to a scheduled network-based communication session, relative to the scheduled network-based communication session. This can be determined as previously described. The communication server 230 can perform a health check. For example, by sending a health check message 248. When the health check message 248 is sent, the communication server 230 can set a timer. If the timer times out or a response is sent indicating an error 250 (and the user is not currently joined to the communication session), the communication server 230 can determine that the user can be having difficulty joining the scheduled network-based communication session. As previously described, other health checks can include determining whether the user is attempting to join a particular application.
[0039] If the communication server 230 determines that the user is having difficulty joining the scheduled network-based communication session, the communication server 230 can determine a second registered application, such as the second communication application 234 as previously described. The communication server 230 can send a connect message 252 to the second communication application 234. The connect message 252 can be a Session Initiation Protocol (SIP) message, such as a SIP invite message, a phone dial-out message that connects the application to an audio channel of the network-based communication session, or some other message that can initiate a connection to the network-based communication session. The second communication application 234 can display a prompt to the user to determine whether the user wishes to connect using the second communication application 234. If the user accepts, the second communication application 234 sends an accept message 254. Once the communication server 230 receives the accept message 254, the communication server 230 can begin streaming media 256 of the network-based communication session to the second communication application 234.
[0040] Figure 3A diagram illustrates a graphical user interface (GUI) 300 of a communication application. A pop-up notification 310 notifies a user that a scheduled network-based communication session (in the form of an online meeting) is already in progress and asks the user if they would like to join the network-based communication session on the application. The user can accept the offer by clicking a "Yes" button 312 - at which point they join the network-based communication session. As used herein, joining a network-based communication session means being authenticated and receiving audio, video, and / or other media of the network-based communication session (depending on the media shared and the capabilities of the application). If the user selects a "No" button 314, the user is not connected to the network-based communication session. If the user rejects the offer, in some examples, additional applications are attempted, but in other examples, the explicit rejection terminates further attempts at the application and other applications.
[0041] Figure 4 A diagram illustrates a GUI 410 of a communication application of a mobile phone 400. The communication application in this example is a phone application. At 412, the GUI indicates that a communication service is calling. The user can accept the call by tapping, swiping, or otherwise interacting with an accept button 420, or can reject the call by tapping, swiping, or otherwise interacting with a reject button 415.
[0042] Figure 5 A diagram illustrates a logical diagram of an example communication application 505 and an example communication server 550, in accordance with some examples of the present disclosure. In some examples, the communication application 505 and the communication server 550 can have fewer or more components than shown in Figure 5
[0043] The communication application 505 can include a registration component 510, which can send one or more registration messages to the communication server 550. The registration component 555 of the communication server 550 can receive these messages and record information about the device executing the communication application 505 in a device registry 585. This can include network addresses and other network reachability information. This can further include associating the device and the communication application 505 with a particular user that is using the communication application 505; for example, a user that is authenticated to the communication services provided by the communication server 550.
[0044] The authentication component 520 can authenticate the user of the communication application 505 to the communication services by sending credentials to the authentication component 580 of the communication server 550. Once authenticated, the communication server 550 can provide one or more communication services to the authenticated user based on the level of access granted to the user. For example, a user's account can be authorized for audio calls or audio conferences, but not for video.
[0045] The status component 525 can update the status of the communication application 505. For example, the current network address of the device executing the communication application 505, the availability status of the user (e.g., free, busy, do not disturb), etc. The status reporting handler component 582 of the communication server 550 can receive status messages from the communication application 505 and update information in the status data store 590, such as the availability of the user. In some examples, the network address or other reachability information can be updated. The network address or other reachability information can be stored in the device registry 585 or the status data store 590.
[0046] The GUI and notification component 530 can provide one or more GUIs that display the interface of the communication application 505. The GUI and notification component 530 can provide one or more GUIs that allow the user to schedule and / or participate in network-based communication sessions, set various options including ordering of communication application preferences, etc. The GUI and notification component 530 can provide one or more notifications, such as a notification that a communication service is attempting to initiate a connection. For example, the GUI and notification component 530 can provide a GUI such as the one shown in FIGS. 1-3. Figure 3 and Figure 4 The GUI and notification component 530 can provide one or more GUIs that display the interface of the communication application 505. The GUI and notification component 530 can provide one or more GUIs that allow the user to schedule and / or participate in network-based communication sessions, set various options including ordering of communication application preferences, etc. The GUI and notification component 530 can provide one or more notifications, such as a notification that a communication service is attempting to initiate a connection. For example, the GUI and notification component 530 can provide a GUI such as the one shown in FIGS. 1-3.
[0047] The communication session component 515 provides a communication session to the user via the GUI and notification component 530. This includes displaying, playing, or otherwise rendering media of the communication session as well as capturing and sending media provided by the user of the communication application. The media can be captured, played, or rendered through the input and output component 535, which can interface with a microphone, speaker, etc. to capture and / or play the media. The communication session components 515 and 575 can use one or more protocols to implement and communicate with each other, such as the Real-Time Transport Protocol (RTP), the Transmission Control Protocol (TCP), the Session Initiation Protocol (SIP), etc.
[0048] The communication server 550 can provide the functionality of the communication service. For one or more particular participants of a network-based communication session, the application selection component 565 can determine a first communication application; a first communication application determined by the system to be likely to be used by the user to connect to the network-based communication session.
[0049] As previously described, this determination can use user connection data such as user preference data. User preference data can include user-entered application rankings entered by the user into a GUI provided by the GUI and notification component 530 of the communication application 505. These preferences can then be provided to the communication service and stored in, for example, the device registry 585 or the state data store 590, in these examples, the selection of the first communication application can be the highest ranked communication application. In some examples, the selection can be the highest ranked application that the user is authenticated to the communication service. In yet other examples, the selection can be the highest ranked application that the user is authenticated to the communication service and that has recently sent a status update.
[0050] In other examples, the system can select the first communication application based on repeated successes (from the perspective of the communication service) or unsuccessful attempts to join a network-based communication session. For example, the communication session component 575 can monitor the communication applications and their statuses. If the same application attempts to join a network-based communication session unsuccessfully, the application used can be selected as the first communication application.
[0051] In other examples, the connection data can include a user's historical activity that can be used to select the first registered communication application. Examples include selecting the application that the user last interacted with. For example, if the user last used a particular registered application to join another network-based communication session, that application can be selected. Other activities can be considered, such as chat activity, activity with the GUI of the network-based communication application (e.g., monitored by the GUI and notification component 530 sent to the communication service), network-based communication scheduling activity, calendar queries, status updates, etc.
[0052] In other examples, the first communication application can be the application that the user uses the most. In yet further examples, the system can select the application that the user typically uses for a communication session; the application that the user typically uses for that communication session (e.g., for recurring sessions); the application that the user typically uses given the user's current context; other past history of the user; etc. The user's current context can include the user's location, the time of day, the user's speed, etc. In some examples, the system can limit the selection of the first registered communication application to a list of registered communication applications that are known to be executing and / or authenticated to the communication service.
[0053] In some examples, the selection of the first communication application using one or more of the above connection data items can be used as input to a machine learning model that can predict the application. This will be described in more detail in the discussion of Figure 6
[0054] One of the first communication applications is selected, and then the address determination component 570 can determine a network address of the first communication application. For example, an Internet Protocol (IP) address of a device on which the first communication application is executing can be determined. The network address can be observed from one or more status updates sent by the application.
[0055] The health check component 560 can determine whether the first communication application is executing and in proper working order by sending one or more polling messages to the first communication application. Once a polling message is sent, the health check component 560 can set a timer for a specified duration. If a response is received before the timer expires, the health check component 560 can determine that the first communication application is healthy and is not experiencing any problems. In some examples, even if the application is healthy, the initiation component 567 can send a connection request to the first communication application within a predetermined time of the start of the meeting in the event that the user has not joined. In some examples, the application can respond to the polling message by indicating that the application is having problems. For example, the user can have attempted to connect with the network-based communication session and is experiencing problems. For example, by repeatedly joining and leaving the network-based communication session a threshold number of times within a particular time period. In other examples, the response can indicate problems with the user's audio / visual devices— such as problems with a speaker, microphone, or other devices. The response can also indicate problems with sending or receiving packets, synchronizing with a communication server, etc.
[0056] If the polling message times out or if the response indicates problems, the status check component can cause the application selection component to select a second registered application of the user that is different from the first communication application of the user. The selection can use the same or different factors as used to select the first communication application. As already noted, the health check component 560 can determine that the user has unsuccessfully attempted to join the network-based communication session instead of or in addition to using polling messages.
[0057] The initiation component 567 can send a connection request to the second communication application for the network-based communication session. If the user accepts, the second communication application can join into the network-based communication session. The second communication application can join by allowing the application to the network-based communication session, which results in the media of the network-based communication session being delivered to the second communication application, as well as receiving media from the second communication application and delivering to other computing devices that are part of the network-based communication session.
[0058] As previously noted, the process can be performed for a single participant, multiple participants, or all participants of the network-based communication session. As also noted, if the second communication application does not join, the system can select a third application and send a connection request to the third application, and so on.
[0059] Figure 6 An example machine learning module 600 is shown in accordance with some examples of the disclosure. The machine learning module 600 can be implemented in whole or in part by one or more computing devices. In some examples, the training module 610 can be implemented by a different device than the prediction module 620. In these examples, the model 680 can be created on a first machine and then sent to a second machine. For example, one or more of the training module and the prediction module 620 can be implemented as part of the application selection component 565 to select a registered application that a user can use to join a network-based communication session and / or to select a second communication application to which to send a connection request.
[0060] The machine learning component 600 utilizes a training component 610 and a prediction component 620. The training component 610 inputs training data 630 to a selector component 650. The training data 630 can include user connection data, such as a user’s historical application selections, a user’s usage history, a user’s application rankings, a user’s context when the user selects a particular application, etc. A user’s current context can include a user’s location, a time of day, a user’s velocity, etc.
[0061] The training data 630 can be labeled with the selected application that the user used given the context. In other examples, the training data can not be labeled and a model can be trained using feedback data— such as through a reinforcement learning approach. The feedback data can be an acceptance rate by a user of connection requests sent by a network-based communication service. In some examples, the training data (and resulting model) can be per user— i.e., a model is built using only a user’s connection data. In other examples, connection data of a group of communication service users can be used.
[0062] The selector component 650 converts and / or selects training vectors 660 from the training data 630. For example, the selector component 650 can filter, select, or otherwise convert the training data. For example, the selector component 650 can apply one or more feature selection algorithms to find features in the training data. The selected data can populate the training vectors 660 and include a training data set that is determined to predict an application that a user will select to join a network-based communication session. The information selected to be included in the training vectors 660 can be all of the training data 630, or in some examples, a subset of all of the training data 630. The machine learning algorithm 670 can utilize the training vectors 660 (along with any applicable labels) to produce a model 680. In some examples, other data structures can be used in addition to vectors. The machine learning algorithm 670 can learn one or more layers of the model. Example layers can include convolutional layers, dropout layers, pooling / upsampling layers, SoftMax layers, and the like. An example model can be a neural network, where each layer includes a plurality of neurons that accept a plurality of inputs, weight the inputs, input the weighted inputs into an activation function to produce an output, which is then sent to another layer. Example activation functions can include rectified linear units (ReLu), and the like. Layers of the model can be fully connected or partially connected. In other examples, the model can be a decision tree, a decision stump, a Bayesian network, a support vector machine, logistic regression, and the like.
[0063] In the prediction component 620, features 690 are input to a selector component 5. The features 690 can be or include the user's current connection data and / or the user's current context. The selector component 695 can operate the same as or differently from the selector component 650. In some examples, the selector components 650 and 695 are the same component or different instances of the same component. The selector component 695 produces a vector 697 that is input into the model 680 to produce an application selection 699. For example, by applying the vector 697 to a first layer of the model 680 to produce an input to a second layer of the model 680, the weights and / or network structure learned by the training component 610 can be performed on the vector 697, and so on until an output encoding. As previously described, other data structures can be used in addition to vectors (e.g., matrices).
[0064] The training component 610 can operate in an offline manner to train the model 680. However, the prediction component 620 can be designed to operate in an online manner. It should be noted that the model 680 can be periodically updated via additional training and / or user feedback. For example, additional training data 630 can be collected when a user accepts or rejects a join request (for a second communication application selection), or when a user joins a network-based communication session with an application that is different from the selection of the first communication application that the system predicted the user would attempt to join from.
[0065] The machine learning algorithm 670 can be selected from many different potential supervised or unsupervised machine learning algorithms. Examples of learning algorithms include artificial neural networks, convolutional neural networks, Bayesian networks, instance-based learning, support vector machines, decision trees (e.g., Iterative Dichotomiser 3, C4.5, Classification and Regression Trees (CART), Chi-squared Automatic Interaction Detector (CHAID), etc.), random forests, linear classifiers, quadratic classifiers, k-nearest neighbors, linear regression, logistic regression, region-based CNNs, fully CNNs (for semantic segmentation), Mask R-CNN algorithm for instance segmentation, and Hidden Markov Models. Examples of unsupervised learning algorithms include expectation maximization algorithms, vector quantization, and information bottleneck methods.
[0066] Figure 7 A flowchart of a method 700 of server-initiated communication session joining after an endpoint status check failure performed by a communication server is illustrated in accordance with some examples of the present disclosure. At operation 710, the system determines that the current time is a predetermined time relative to a start time of a network-based communication session. At this time, the remaining operations of Figure 7 are performed. At operation 715, the system can identify a first communication application of a participant executing on a first computing device. In some examples, this device can simply be the last application used by the user, the last application to send a status update, etc. In other examples, this can be the highest ranked application in a prioritized list of applications, or can be based on historical data or other connection data of the user, as previously described.
[0067] At operation 720, the system can determine a network address of the first computing device. For example, an Internet Protocol (IP) address is determined from a status update message or registration message sent by the first communication application on the first device to the network-based communication service. At operation 725, the system can perform a health check on the first computing device. For example, the server can send a poll packet to the first computing device. If the first communication application on the first computing device receives the poll packet, the first communication application on the first computing device sends a response packet. If the server receives the response packet and the response packet indicates that the first communication application is OK, then at operation 730, the health check does not indicate a problem and the flow ends. If the server does not receive a response after the end of a timeout period, or if the server receives a response that indicates a problem in the response (e.g., a response code in the response packet), then at operation 730, the health check indicates a problem. Other health checks are possible, as previously discussed.
[0068] At operation 735, a second communication application can be selected if the health check indicates a problem. The second communication application can be a registered communication application of the user that is not the first communication application. The second communication application can be selected as previously described, e.g., using the user's connection data.
[0069] At operation 740, the system can send a connection request to the second communication application. The request is a connection request to join a network-based communication session using the second communication application. The connection request can be a phone call, a SIP INVITE request, or some other message. The second communication application can be on the first or second computing device. The second communication application can be an integral function of the computing device, such as a phone call function. For example, the server can invoke the first or second device to connect its audio to the network-based communication session. The application can be an application that provides a phone function (which can be provided by a combination of hardware and / or software) on the first or second device. The request can cause the second communication application to notify the user. At operation 745, it is determined whether the user accepts the request. For example, by answering the call, by clicking a button to accept the request, etc. If the user does not accept, the flow can return to operation 735, in which a different application can be tried. Otherwise, the flow proceeds to operation 750, in which the second communication application is joined to the network-based communication session. When the second communication application joins, media packets such as audio, video, or both can be sent to the second communication application for display and / or play to the user.
[0070] Figure 8 FIG. illustrates a block diagram of an example machine 800 upon which one or more techniques (e.g., methods) discussed herein can perform. In alternative embodiments, the machine 800 can operate as a standalone device or can be connected (e.g., networked) to other machines. In a networked deployment, the machine 800 can operate in the capacity of a server machine, a client machine, or both in server-client network environments. In an example, the machine 800 can act as a peer machine in peer-to-peer (P2P) (or other distributed) network environment. The machine 800 can be a computing device that executes a communication application, such as computing devices 110, 115, 120, 410; a device that provides a communication service, such as communication servers 130, 230, 550. The machine 800 can implement or provide the GUIs shown in FIGS. 300, Figure 4 Figure 5 The machine 800 can be in the form of a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile telephone, a smart phone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines whether
[0071] Examples, as described herein, can include or can operate on logic or a number of components, modules, or mechanisms (hereinafter “modules”). Modules are tangible entities (e.g., hardware) capable of performing specified operations and can be configured or arranged in a certain manner. In an example, circuits can be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a module. In an example, the whole or part of one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware processors can be configured by firmware or software (e.g., instructions, an application portion, or an application) as a module that operates to perform specified operations. In an example, software can reside on a machine readable medium. In an example, the software, when executed by the underlying hardware of the module, causes the hardware to perform the specified operations.
[0072] Accordingly, the term“module” is understood to encompass a tangible entity, be that entity hardware, firmware, or software, that is specifically configured to perform portions or all of any operation described herein. In examples in which multiple modules are present (for example, as in a general-purpose computer system), one or more of the modules can be configured to operate together to permit different portions of the different modules to perform some operations while other portions of the different modules perform other operations. In examples in which software is employed, a hardware processor can be configured to execute the software to operate in a certain manner, where the software can include, but is not limited to, firmware, resident software, microcode, hardware description language, or either source code or object code written in any combination of one or more programming languages. As such, in examples in which multiple modules are present (for example, as in a general-purpose computer system), one or more of the modules can be configured to operate together to permit different portions of the different modules to perform some operations while other portions of the different modules perform other operations. The software can configure a hardware processor to operate in a certain manner, such as to constitute a particular module at one instance of time, and to constitute a different module at a different instance of time.
[0073] The machine (e.g., computer system) 800 can include a hardware processor 802 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a hardware processor core, or any combination thereof), a main memory 804 and a static memory 806, some or all of which can communicate with one another via an interlink (e.g., bus) 808. The machine 800 can further include a display unit 810, an alphanumeric input device 812 (e.g., a keyboard), and a user interface (UI) navigation device 814 (e.g., a mouse). In an example, the display unit 810, input device 812 and UI navigation device 814 can be a touch screen display. The machine 800 can additionally include a storage device (e.g., drive unit) 816, a signal generation device 818 (e.g., a speaker), a network interface device 820, and one or more sensors 821, such as a global positioning system (GPS) sensor, compass, accelerometer, or other sensor. The machine 800 can include an output controller 828, such as a serial (e.g., universal serial bus (USB), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC), etc.) connection to communicate or control one or more peripheral devices (e.g., a printer, card reader, etc.).
[0074] The storage device 816 can include a machine readable medium 822 on which is stored one or more sets of data structures or instructions 824 (e.g., software) embodying or utilized by any one or more of the techniques or functions described herein. The instructions 824 can also reside, completely or at least partially, within the main memory 804, within static memory 806, or within the hardware processor 802 during execution thereof by the machine 800. In an example, one or any combination of the hardware processor 802, the main memory 804, the static memory 806, or the storage device 816 can constitute machine readable media.
[0075] While the machine readable medium 822 is illustrated as a single medium, the term“machine readable medium” can include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) configured to store the one or more instructions 824.
[0076] The term“machine-readable medium” can include any medium that is capable of storing, encoding, or carrying instructions for execution by the machine 800 and that cause the machine 800 to perform any one or more of the techniques of the present disclosure, or that is capable of storing, encoding or carrying data structures used by or associated with such instructions. Non-limiting machine-readable medium examples can include solid-state memories, and optical and magnetic media. Specific examples of machine-readable media can include: non-volatile memory, such as semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; Random Access Memory (RAM); Solid State Drives (SSDs); and CD-ROM and DVD-ROM disks. In some examples, machine-readable media can include non-transitory machine-readable media. In some examples, machine-readable media can include machine- readable media that is not a transitory propagating signal.
[0077] The instructions 824 can further be transmitted or received using a transmission medium via the network interface device 820 on a communication network 826. The machine 800 can communicate with one or more other machines utilizing any one of multiple transfer protocols (e.g., frame relay, internet protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), etc.). Example communication networks can include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), mobile telephone networks (e.g., cellular networks), plain old telephone (POTS) networks, and wireless data networks (e.g., Institute of Electrical and Electronics Engineers (IEEE) 802.11 family of standards known as Wi-Fi®, IEEE 802.16 family of standards known as WiMax®), IEEE 802.15.4 family of standards, a Long Term Evolution (LTE) family of standards, a Universal Mobile Telecommunication System (UMTS) family of standards, peer-to-peer (P2P) networks, among others. In an example, the network interface device 820 can include one or more physical jacks (e.g., Ethernet, coaxial, or phone jacks) or one or more antennas to connect to the communications network 826. In an example, the network interface device 820 can include a plurality of antennas to wirelessly communicate using at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) techniques. In some examples, the network interface device 820 can wirelessly communicate using Multiple User MIMO techniques. The instructions 824 can further be transmitted or received using a transmission medium via the network interface device 820 on a communication network 826. The machine 800 can communicate with one or more other machines utilizing any one of multiple transfer protocols (e.g., frame relay, internet protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), etc.). Example communication networks can include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), mobile telephone networks (e.g., cellular networks), plain old telephone (POTS) networks, and wireless data networks (e.g., Institute of Electrical and Electronics Engineers (IEEE) 802.11 family of standards known as Wi-Fi®, IEEE 802.16 family of standards known as WiMax®), IEEE 802.15.4 family of standards, a Long Term Evolution (LTE) family of standards, a Universal Mobile Telecommunication System (UMTS) family of standards, peer-to-peer (P2P) networks, among others. In an example, the network interface device 820 can include one or more physical jacks (e.g., Ethernet, coaxial, or phone jacks) or one or more antennas to connect to the communications network 826. In an example, the network interface device 820 can include a plurality of antennas to wirelessly communicate using at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) techniques. In some examples, the network interface device 820 can wirelessly communicate using Multiple User MIMO techniques.
[0078] Other notes and examples
[0079] Example 1 is a computing device that provides a communication service, the computing device comprising: a processor; a memory storing instructions that, when executed by the processor, cause the computing device to perform operations comprising: automatically, at a pre-designated time relative to a start time of a network-based communication session, at the computing device that hosts the communication service of the network-based communication session: identifying a first communication application from a plurality of registered communication applications of a participant, the first communication application executing on a first computing device of the participant; determining a network address of the first computing device based on a previously received packet received from the first computing device; sending a poll packet to the first communication application on the first computing device, the poll packet requesting a response packet and addressed to the network address of the first computing device; determining that no response packet for the poll packet is received from the first communication application after a threshold amount of time has elapsed since the poll packet was sent; in response to determining that no response packet is received: selecting a second communication application from the plurality of registered applications using connection data of the participant; causing a connection request to be sent to the second communication application; receiving a connection acknowledgement from the second communication application; and in response to receiving the connection acknowledgement, joining the second communication application to the network-based communication session by sending media packets of the network-based communication session to the second communication application.
[0080] In Example 2, the subject matter of Example 1 includes, wherein the second communication application executes on the first computing device.
[0081] In Example 3, the subject matter of Examples 1-2 includes, wherein the second communication application executes on a second computing device, and wherein the operation of sending the connection request to the second communication application comprises: determining a network address of the second computing device based on a previously received packet from the second computing device.
[0082] In Example 4, the subject matter of Examples 1-3 includes, wherein the previously received packet is sent by the first computing device as part of an authentication process or as part of a status update process.
[0083] In Example 5, the subject matter of Examples 1-4 includes, wherein the second communication application is a phone application on a mobile phone that provides a phone communication function, and the connection request is a phone call.
[0084] In Example 6, the subject matter of Examples 1-5 includes, wherein the operation of identifying the first communication application from the plurality of registered applications of the participant comprises providing the participant's connection data and context data as input to a machine learning model that was previously trained using the participant's historical connection data, the participant's historical context data, and an identification of an application used by the participant for a previous communication request.
[0085] In Example 7, the subject matter of Examples 1-6 includes, wherein the operation of selecting the second communication application from the plurality of registered applications comprises providing the participant's connection data and context data as input to a machine learning model that was previously trained using the participant's historical connection data, the participant's historical context data, and an identification of an application used by the participant for a previous communication request.
[0086] In Example 8, the subject matter of Examples 1-7 includes, wherein the connection data comprises an ordered ranking of application preferences of the participant, and wherein the operation of identifying the first communication application comprises selecting a highest ranked application, and wherein the operation of selecting the second communication application comprises selecting a second ranked application.
[0087] In Example 9, the subject matter of Examples 1-8 includes, wherein the operation of identifying the first communication application from the plurality of registered applications of the participant comprises selecting the first communication application for joining the network-based communication session based on connection data for the participant.
[0088] Example 10 is a method for connecting a user to a network-based communication session, the method comprising: at a pre-designated time relative to a start time of a network-based communication session, automatically, at a computing device hosting the network-based communication session: identifying, from a plurality of registered communication applications of a participant, a first communication application, the first communication application executing on a first computing device of the participant; determining a network address of the first computing device based on previously received packets received from the first computing device; sending a poll packet to the first communication application on the first computing device, the poll packet requesting a response packet and addressed to the network address of the first computing device; determining that no response packet for the poll packet is received from the first communication application after a threshold amount of time has elapsed since sending the poll packet; in response to determining that no response packet is received: selecting a second communication application from the plurality of registered applications using connection data of the participant; causing a connection request to be sent to the second communication application; receiving a connection acknowledgement from the second communication application; and in response to receiving the connection acknowledgement, joining the second communication application to the network-based communication session by sending media packets of the network-based communication session to the second communication application.
[0089] In Example 11, the subject matter of Example 10 includes, wherein the second communication application executes on the first computing device.
[0090] In Example 12, the subject matter of Examples 10-11 includes, wherein the second communication application executes on a second computing device, and wherein sending the connection request to the second communication application comprises determining a network address of the second computing device based on previously received packets from the second computing device.
[0091] In Example 13, the subject matter of Examples 10-12 includes, wherein the previously received packets are sent by the first computing device as part of an authentication process or as part of a status update process.
[0092] In Example 14, the subject matter of Examples 10-13 includes, wherein the second communication application is a phone application on a mobile phone that provides phone communication functionality, and the connection request is a phone call.
[0093] In Example 15, the subject matter of Examples 10-14 includes, wherein identifying the first communication application from a plurality of registered applications of a participant comprises providing connection data and context data of the participant as input to a machine learning model, the machine learning model previously trained using historical connection data of the participant, historical context data of the participant, and an identification of an application used by the participant for a previous communication request.
[0094] In Example 16, the subject matter of Examples 10-15 includes, wherein selecting the second communication application from the plurality of registered applications comprises providing the participant’s connection data and context data as input to a machine learning model that was previously trained using the participant’s historical connection data, the participant’s historical context data, and an identification of an application used by the participant for a previous communication request.
[0095] In Example 17, the subject matter of Examples 10-16 includes, wherein the connection data includes an ordered ranking of the participant’s application preferences, and wherein identifying the first communication application comprises selecting a highest ranked application, and wherein selecting the second communication application comprises selecting a second ranked application.
[0096] In Example 18, the subject matter of Examples 10-17 includes, wherein identifying the first communication application from the participant’s plurality of registered applications comprises selecting the first communication application for joining the network-based communication session based on connection data for the participant.
[0097] Example 19 is a computing device that provides a communication service, the computing device comprising: at a pre-designated time relative to a start time of a network-based communication session, automatically, at the computing device that hosts the network-based communication session of the communication service: means for identifying a first communication application from a plurality of registered communication applications of a participant, the first communication application executing on a first computing device of the participant; means for determining a network address of the first computing device based on a previously received packet received from the first computing device; means for sending a poll packet to the first communication application on the first computing device, the poll packet requesting a response packet and addressed to the network address of the first computing device; means for determining that no response packet for the poll packet is received from the first communication application after a threshold amount of time has elapsed since sending the poll packet; in response to determining that no response packet is received: means for selecting a second communication application from the plurality of registered applications using connection data of the participant; means for causing a connection request to be sent to the second communication application; means for receiving a connection confirmation from the second communication application; and in response to receiving the connection confirmation, means for joining the second communication application to the network-based communication session by sending media packets of the network-based communication session to the second communication application.
[0098] In Example 20, the subject matter of Example 19 includes, wherein the means for identifying the first communication application from the plurality of registered applications of the participant comprises: means for selecting the first communication application for joining the network-based communication session based on connection data for the participant.
[0099] Example 21 is at least one machine readable medium including instructions that, when executed by processing circuitry, cause the processing circuitry to perform operations to implement any of Examples 1-20.
[0100] Example 22 is an apparatus including means for implementing any of Examples 1-20.
[0101] Example 23 is a system implementing any of Examples 1-20.
[0102] Example 24 is a method implementing any of Examples 1-20.
Claims
1. A computing device for providing communication services, the computing device comprising: processor; The memory stores instructions that, when executed by the processor, cause the computing device to perform operations including: At a pre-specified time relative to the start time of the network-based communication session, automatically at the computing device hosting the communication service for the network-based communication session: Identify a first communication application from among the participant's multiple registered communication applications, the first communication application running on the participant's first computing device; The network address of the first computing device is determined based on previously received packets received from the first computing device; A polling packet is sent to the first communication application on the first computing device. The polling packet requests a response packet and is addressed to the network address of the first computing device. It is determined that no response packet for the polling packet has been received from the first communication application since a threshold amount of time has elapsed since the polling packet was sent; In response to the determination that no response packet was received: Select a second communication application from the plurality of registered communication applications using the participant's connection data; This causes a connection request to be sent to the second communication application; Receive connection confirmation from the second communication application; as well as In response to receiving the connection confirmation, the second communication application is added to the network-based communication session by sending a media packet of the network-based communication session to the second communication application.
2. The computing device according to claim 1, wherein, The second communication application runs on the first computing device.
3. The computing device according to claim 1, wherein, The second communication application runs on the second computing device, and the operation of sending the connection request to the second communication application includes: determining the network address of the second computing device based on previously received packets from the second computing device.
4. The computing device according to claim 1, wherein, The previously received packets were sent by the first computing device as part of an authentication process or as part of a status update process.
5. The computing device according to claim 1, wherein, The second communication application is a telephone application on a mobile phone that provides telephone communication functions, and the connection request is a telephone call.
6. The computing device according to claim 1, wherein, The operation of identifying the first communication application from a participant’s multiple registered communication applications includes: providing the participant’s connection data and context data as input to a machine learning model, which has been previously trained using the participant’s historical connection data, the participant’s historical context data, and an identifier of the application used by the participant for previous communication requests.
7. The computing device according to claim 1, wherein, The operation of selecting the second communication application from the plurality of registered communication applications includes: providing the participant's connection data and context data as input to a machine learning model, which has been previously trained using the participant's historical connection data, the participant's historical context data, and an identifier of the application used by the participant for previous communication requests.
8. The computing device according to claim 1, wherein, The connection data includes an ordered ranking of the participants' application preferences, wherein the operation of identifying the first communication application includes selecting the application with the highest ranking, and wherein the operation of selecting the second communication application includes selecting the application with the second ranking.
9. The computing device according to claim 1, wherein, The operation of identifying the first communication application from a participant’s multiple registered communication applications includes: selecting the first communication application for joining the network-based communication session based on connection data for the participant.
10. A method for connecting a user to a network-based communication session, the method comprising: At a pre-specified time relative to the start time of the network-based communication session, automatically at the computing device hosting the communication service for the network-based communication session: Identify a first communication application from among the participant's multiple registered communication applications, the first communication application running on the participant's first computing device; The network address of the first computing device is determined based on previously received packets received from the first computing device; A polling packet is sent to the first communication application on the first computing device. The polling packet requests a response packet and is addressed to the network address of the first computing device. It is determined that no response packet for the polling packet has been received from the first communication application since a threshold amount of time has elapsed since the polling packet was sent; In response to the determination that no response packet was received: Select a second communication application from the plurality of registered communication applications using the participant's connection data; This causes a connection request to be sent to the second communication application; Receive connection confirmation from the second communication application; as well as In response to receiving the connection confirmation, the second communication application is added to the network-based communication session by sending a media packet of the network-based communication session to the second communication application.
11. The method according to claim 10, wherein, The second communication application runs on the first computing device.
12. The method according to claim 10, wherein, The second communication application runs on the second computing device, and sending the connection request to the second communication application includes determining the network address of the second computing device based on previously received packets from the second computing device.
13. The method according to claim 10, wherein, The previously received packets were sent by the first computing device as part of an authentication process or as part of a status update process.
14. A computing device for providing communication services, the computing device comprising: At a pre-specified time relative to the start time of the network-based communication session, automatically at the computing device hosting the communication service for the network-based communication session: A unit for identifying a first communication application from among a participant’s multiple registered communication applications, the first communication application running on the participant’s first computing device; A unit for determining the network address of the first computing device based on previously received packets received from the first computing device; A unit for sending polling packets to the first communication application on the first computing device, the polling packets requesting response packets and being addressed to the network address of the first computing device; A unit for determining that no response packet for the polling packet has been received from the first communication application after a threshold amount of time has elapsed since the polling packet was sent; In response to the determination that no response packet was received: A unit for selecting a second communication application from the plurality of registered communication applications using the participant's connection data; A unit for enabling the sending of a connection request to the second communication application; A unit for receiving connection confirmation from the second communication application; as well as A unit for adding the second communication application to the network-based communication session by sending a media packet of the network-based communication session to the second communication application in response to receiving the connection confirmation.
15. The computing device according to claim 14, wherein, The unit for identifying the first communication application from multiple registered communication applications of a participant includes: a unit for selecting the first communication application for joining the network-based communication session based on connection data for the participant.
Citation Information
Patent Citations
Call switching in packet-based communication networks
CN102792643A
Mobile device polling for media content selection and presentation control
US20100296505A1