Device Configuration File Determination and Policy Enforcement

By executing specific instructions on the computing device, determining the context of the communication session based on user information, and selecting a suitable configuration file, the problem of difficulty in efficient selection of configuration files in the prior art is solved, and optimized communication session quality and resource allocation are achieved.

CN114342340BActive Publication Date: 2025-06-10MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202080061844.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-09-06
Filing Date
2020-06-17
Publication Date
2025-06-10
Estimated Expiration
2040-06-17

AI Technical Summary

Technical Problem

Existing communication platforms are difficult to efficiently and accurately determine how to choose the right profile to handle communication sessions, especially to provide a good user experience under limited network resources and bandwidth.

Method used

By executing instructions on the computing device, receiving signals from the user device to initiate a communication session, determining the context of the communication session based on the contact information and calendar information associated with the user, and selecting a suitable configuration file from a plurality of configuration files to set communication parameters.

Benefits of technology

It realizes efficient selection of appropriate configuration files in different communication scenarios, ensures the quality of communication sessions and user experience, and optimizes the allocation of network resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114342340B_ABST
    Figure CN114342340B_ABST
Patent Text Reader

Abstract

A configuration file for selecting one or more parameters to be used for configuring a communication session can be used with the techniques for operating a communication platform described herein. These techniques include: receiving a signal from a user device to initiate a communication session between a first party and a second party via the communication platform; determining the context of the communication session based on contact information, calendar information, or both, associated with the first party, the second party, or both; selecting a configuration file from a plurality of configuration files based on the context; and handling the requested communication session according to the selected configuration file by setting one or more communication parameters based on the selected configuration file.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] A variety of communication platforms have been developed that provide support for communication sessions, which may include voice calls, video calls, and text-based chats. The communication platform can support many simultaneous users, and the communication platform needs to make intelligent decisions on how to allocate limited network resources and bandwidth while providing a good user experience at the same time. One way the communication platform can determine how to allocate resources is to define profiles that can be used to determine how to allocate these resources. There are important areas that require new and mature mechanisms to make efficient and accurate determinations on which profile to select for a communication session. Summary of the Invention

[0002] According to a first aspect of the present disclosure, a computing device includes a processor and a computer-readable medium. The computer-readable medium stores instructions for causing the processor to perform operations, the operations including: receiving a signal from a user device to initiate a communication session between a first party and a second party via the communication platform; determining a context of the communication session based on contact information, calendar information, or both associated with the first party, the second party, or both; selecting a profile from a plurality of profiles based on the context; and handling the requested communication session according to the selected profile by setting one or more communication parameters based on the selected profile.

[0003] According to a second aspect of the present disclosure, a method for operating a communication platform includes: receiving a signal from a user device to initiate a communication session between a first party and a second party via the communication platform; determining a context of the communication session based on contact information, calendar information, or both associated with the first party, the second party, or both; selecting a profile from a plurality of profiles based on the context; and handling the requested communication session according to the selected profile by setting one or more communication parameters based on the selected profile.

[0004] According to a third aspect of the present disclosure, a memory device stores instructions that, when run on a processor of a computing device, cause the computing device to operate the communication platform by: receiving a signal from a user device to initiate a communication session between a first party and a second party via the communication platform; determining a context of the communication session based on contact information, calendar information, or both associated with the first party, the second party, or both; selecting a profile from a plurality of profiles based on the context; and handling the requested communication session according to the selected profile by setting one or more communication parameters based on the selected profile.

[0005] The purpose of providing this Summary of the Invention is to introduce a series of concepts described further below in the Detailed Description in a simplified form. This Summary of the Invention is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additionally, the claimed subject matter is not limited to embodiments that solve any or all of the disadvantages noted in any part of this disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] The drawings illustrate by way of example, and not by way of limitation, one or more embodiments in accordance with this teaching. In the drawings, like reference numerals refer to the same or similar elements. Additionally, it should be understood that the drawings are not necessarily to scale.

[0007] Figure 1 An example of an operating environment is presented where a user can place a call to another user via a mobile wireless network;

[0008] Figure 2 An example of an operating environment is presented where a user can initiate a communication session with another user via a communication platform;

[0009] Figure 3 Another example of an operating environment is presented where a user can initiate a communication session with another user via a communication platform;

[0010] Figure 4 An illustration of an exemplary profile and profile context information is presented;

[0011] Figure 5 A flowchart of an exemplary process for selecting a profile at a communication platform to be used by the communication platform to handle a communication session is presented;

[0012] Figure 6 A flowchart of an exemplary process for selecting a profile at a user device to be used by a communication platform to handle a communication session is presented;

[0013] Figure 7 A flowchart of an exemplary process for selecting a profile at a user device to be used by a communication platform to handle a communication session is presented;

[0014] Figure 8 A flowchart of an exemplary process for selecting a profile at an edge network node to be used by a communication platform to handle a communication session is presented;

[0015] Figure 9 is a block diagram illustrating an exemplary software architecture, portions of which may be combined with various hardware architectures described herein and which may implement any of the features described herein; and

[0016] Figure 10 FIG. is a block diagram of components of an exemplary machine configured to read instructions from a machine-readable medium and perform any of the features described herein. DETAILED DESCRIPTION

[0017] In the following detailed description, numerous specific details are set forth by way of example in order to provide a thorough understanding of the relevant teachings. However, it will be apparent that the teachings may be practiced without such details. In other instances, well-known methods, procedures, components, and / or circuits have been described at a higher level of generality without detail in order to avoid unnecessarily obscuring aspects of the teachings.

[0018] Figure 1 An exemplary operating environment 100 is illustrated, which includes client devices 101, 102, and 103, a cellular network 125, one or more other networks 130, and a last mile infrastructure 135. The cellular network 125 is a communication network that facilitates wireless communication with user devices 101, 102, and 103. The cellular network 125 may provide two-way wireless transmission to the client devices 101, 102, and 103. For example, the cellular network may provide voice call support via a first wireless link 105 and data uplink and downlink support via a second wireless link 110. For purposes of discussion, the wireless links 105 and 110 are illustrated as separate wireless links. However, the cellular network 125 may utilize the same wireless frequency, bandwidth, channel, etc. to support data and voice communication.

[0019] One or more other networks 130 may be one or more networks separate from the cellular network 125. One or more other networks 130 may include one or more networks associated with other cellular network providers. One or more other networks 130 may include a public switched telephone network (PSTN) that typically provides telephone service for fixed-location telephone devices. The cellular network 125 is configured to communicate with one or more other networks 130 to facilitate communication between subscribers of the cellular network and subscribers of one or more other networks 130. The cellular network 125 may also be connected to other networks, such as the Internet, to facilitate data access for subscribers of the cellular network 125.

[0020] The last-mile infrastructure 135 includes equipment that facilitates communication between user devices 101, 102, and 103 and the cellular network 125 and / or one or more other networks 130. The last-mile infrastructure 135 can include components of the cellular network 125, such as radio base stations that facilitate wireless communication with wireless-enabled user devices. The last-mile infrastructure 135 can include macro-cellular base stations, small-cell radio base stations, such as micro-cellular base stations, pico-cellular base stations, and femto-cellular base stations, or combinations thereof. The last-mile infrastructure 135 can also include Wi-Fi and / or other types of wireless local area network (WLAN) access points. The last-mile infrastructure 135 can also include a wired connection from one or more other networks 130 to the location of the user device. The wired connection can include subscriber lines that connect landline telephones to local telephone switches, coaxial cables that connect user devices to the networks of cable providers, and / or other types of wired network connections.

[0021] User devices 101, 102, and 103 can generally be included in mobile computing devices, such as cell phones, smartphones, wearable devices (e.g., smartwatches), gaming and / or entertainment systems, tablet computers, laptop computers, or other portable computing devices. In some embodiments, the user device can be other types of communication devices that are not generally considered portable but may still rely on the cellular network 125 to provide two-way communication, such as server computers, personal computers (PCs), set-top boxes (STBs), or Internet of Things (IoT) devices. This list is intended to provide examples of the types of computing devices that can be found in a typical computing environment but is not intended to be exhaustive.

[0022] In a first example that illustrates how the operating environment can be utilized, a user of user device 101 initiates a voice call to a user of user device 102. The call request can include the telephone number associated with user device 102. The telephone number can be assigned to user device 102 by a cellular provider. The call request can be transmitted via a first wireless link 105 to the cellular network 125. The cellular network 125 can include components configured to look up the called number and the network with which it is associated and route the call to the appropriate network. In this example, the called number is on the same network as user device 101, i.e., the cellular network 125. The cellular network 125 is capable of routing the call request via a third wireless link 115 to user device 102 and establishing a call session between user device 101 and user device 102 in response to user device 102 accepting the call request.

[0023] In a second example that illustrates how an operating environment can be utilized, a user of user device 101 initiates a call to a user of user device 103. User device 103 is associated with one or more other networks 130 and can be a landline telephone, an Internet Protocol (IP) voice (VOIP) telephone, or a mobile device associated with a different cellular network provider. The call request is received by cellular network 125, and cellular network 125 determines that the called number is associated with one or more other networks 130. The call request can be routed to the other network via communication link 140, and one or more other networks 130 can send signal 201 to user device 103 via link 120 to indicate an incoming call request. If user device 103 accepts the call request, cellular network 125 and one or more other networks 130 can facilitate the establishment of a call session.

[0024] Figure 2 An exemplary operating environment 200 is illustrated, which includes client devices 201, 202, and 203, a cellular network 225, one or more other networks 230, and a last mile infrastructure 235. Exemplary operating environment 200 also includes a communication platform 260. User devices 201, 202, and 203 can be similar to those discussed in the previous example. Additionally, cellular network 225, one or more other networks 230, last mile infrastructure 235, and the wireless links can be similar to those discussed in the previous example.

[0025] Communication platform 260 can facilitate communication sessions between users. Communication sessions can include voice calls, video calls, text message sessions, or a combination thereof. Communication platform 260 can also facilitate file sharing and application integration for creating, modifying, and sharing content among users. Communication platform 260 can be a service provider that supports communication sessions for subscribers. In other embodiments, communication platform 260 can be a service provided by a company that facilitates communication among the company's employees and can be used by the company's employees to communicate with third parties outside the company. Communication platform 260 can be a cloud-based system implemented on a network of servers hosted on the Internet and can be accessed by user devices such as user devices 201, 202, and 203 via a network connection.

[0026] The user device 201 may include a communication application configured to operate with the communication platform 260 to provide communication services to a user of the user device 201. The application may be assigned a telephone number that can be used to contact the user of the user device 201. In some cases, a user of the user device 201 may have multiple devices on which the communication application can be installed. For example, a user may install one version of the communication application on their mobile phone, one version on their tablet computer, and another version on their laptop computer. The communication application can provide a user interface in which the user can provide login information and / or other authentication credentials that can be used to authenticate the user to the communication platform 260. The communication application on each of these devices can be associated with the same telephone number or a unique identifier associated with the user. In the case where the user has multiple user devices and the communication application has been installed on each user device, the communication platform 260 can be configured to determine which device to route an incoming call to based on user activity on the device, a profile associated with the user, and / or other criteria. The telephone number associated with the application can be assigned by an administrator of the communication platform 260. For example, in the case where the communication platform 260 is associated with a company, a network administrator of the company can assign a telephone number to the application from a pool of available numbers associated with the company. In the case where the communication platform 260 is a subscription service provider, the administrator can assign a number to the user from a pool of available numbers associated with the service provider.

[0027] A user of the communication platform 260 may be associated with one or more profiles. The profiles include configuration information that the communication platform 260 can use to determine how to handle specific aspects of a communication session for the user. Each profile can be used in a specific situation. For example, a user may have a profile associated with personal communication, a profile associated with client communication, a profile associated with non-client work-related communication, and a profile for initiating communication from a specific geographical location and / or an untrusted network. These examples are provided to illustrate some possible types of profiles that can be associated with a user. These examples are not intended to limit the types of profiles that a user may have to these specific examples or combinations thereof. Each profile can include configuration information indicating how the communication platform will handle a communication session for which the profile has been selected. Examples of some types of information that can be included in a profile are illustrated in Figure 4 and will be discussed in detail in the following examples.

[0028] User equipment 201 includes a communication application associated with communication platform 260 and, thus, can have two telephone numbers associated with the device. A first telephone number can be associated with cellular network 225, and a second telephone number can be the telephone number associated with the communication application associated with communication platform 260. If the user initiates a regular call via an application on user equipment 201 (which can be referred to as the "local dialer" application), the call request signal is routed via first wireless link 105 to cellular network 225, and the call request is processed in a manner similar to that discussed in the previous example. However, if the user initiates a call from user equipment 101 via the communication application associated with communication platform 260, the call request can be processed as data and routed as data via second data link 210 to cellular network 225. A call via the communication application can, for example, utilize the Session Initiation Protocol (SIP), H.323, or another Internet Protocol Voice (VoIP) messaging protocol to send the call request. The call request signal can include the originating number, i.e., the telephone number associated with the communication application on user equipment 101. Cellular network 225 can be configured to determine that the originating number is associated with communication platform 260 and route the call request to communication platform 260 via connection 245. Connection 245 can be via the Internet and / or via one or more other networks.

[0029] Communication platform 260 can process the call request signal and extract the called number information to determine how the call request should be processed. How the call should be processed can be determined at least in part based on a profile associated with the user of user equipment 101. The profile can indicate that the call should be routed via communication platform 260 for various reasons. Communication platform 260 can be provided by a company and can determine that the call is business-related and, thus, should be routed via communication platform 260. For example, if it is determined that the call is personal and the called number is the number of user equipment 202, the communication platform can alternatively switch the call to cellular network 225. Additional examples of how communication platform 260 can dispose of routing of calls will be discussed in more detail in subsequent examples.

[0030] Figure 3An exemplary operating environment 300 is illustrated, which includes client devices 301, 302, and 303, a cellular network 325, one or more other networks 330, a last-mile infrastructure 335, and a communication platform 360. The exemplary operating environment also includes an edge network node 370. The user devices 301, 302, and 303 may be similar to those discussed in the previous example. Additionally, the cellular network 325, one or more other networks 330, the last-mile infrastructure 335, and the wireless links may be similar to those discussed in the previous example.

[0031] The communication platform 360 may be associated with one or more edge network nodes capable of handling tasks that would otherwise consume the processing power of the communication platform 360, such as the edge network node 370. In Figure 3 the example illustrated, the edge network node 370 is capable of making a profile selection decision on behalf of the communication platform 360. By distributing this task to one or more edge network nodes, the communication platform 360 can utilize the processing and network resources that would otherwise be dedicated to profile selection for handling communication sessions. Other tasks such as user authentication can also be offloaded to the edge network nodes to allow the communication platform 360 to utilize the processing and network resources that would otherwise be dedicated to user authentication for other tasks. The edge network nodes may be geographically distributed, and the user devices may be configured to connect to an edge network node located close to the location of the user device to reduce the network latency associated with communicating with the communication platform 360.

[0032] The edge network node 370 can be configured to select a profile for a communication session. The edge network node 370 can receive a signal routed through the cellular network 325, which indicates that an application on the user device 301 is attempting to initiate a communication session via the communication platform 360. The edge network node 370 can select a profile from the profiles associated with the user using various criteria, such as those discussed in the subsequent example. The edge network node 370 can provide an indication to the user device 301 and the communication platform 360 for which the profile has been selected for the communication session, and the communication platform 360 can handle the communication session according to the selected profile.

[0033] Figure 4Examples of some of the parameters that can be included in the configuration file are provided. As discussed in the previous examples, a user can be associated with multiple configuration files that indicate how a communication platform (such as communication platforms 260 or 360 of the previous examples) should handle a communication session targeted by the selection of that configuration file. A configuration file can have two aspects: configuration file configuration information and configuration file context information. The configuration file configuration information defines a set of parameters that the communication platform sets when handling the communication session. The configuration file context information defines a set of information that defines the conditions ("context") appropriate for the selection of the configuration file. In some embodiments, a network administrator can define a set of configuration files associated with a user. In an enterprise environment where the communication platform is a service provided to employees, the network administrator can set the configuration files based on the user's role within the organization. In embodiments where the communication platform is provided as a subscription service, the network administrator can set the set of configuration files based on the subscription type associated with the user.

[0034] In Figure 4 the exemplary configuration file illustrated, the configuration file configuration information can include calling line identity (CLI) information, quality of service (QoS) information, network routing information, policies, and feature permissions. These parameters can be used by the communication platform to set one or more parameters or settings that are used to establish the requested communication session via the communication platform.

[0035] The configuration file configuration information may include calling line identification (CLI) information, and if this configuration file is selected, the calling line identification (CLI) information will be displayed to the recipient of the call. The CLI information may include the telephone number and name or other identifier of the caller of the call to the recipient. The communication platform can be configured to determine which CLI information should be provided to the recipient of the call. By default, the telephone number and name associated with the calling device may be presented to the recipient. However, in some cases, it may be desirable to provide alternative CLI information to the recipient. For example, a user may be a front-line worker dealing with customers of their employees. The front-line worker may have a customer contact profile, and when the user makes a call to a customer, the customer contact profile can be selected. The customer contact profile may specify that the CLI information includes a number associated with the company, such as a telephone number for a switchboard or a contact number associated with the company. The CLI information may also include the name of the company. When the user makes a call to a customer using this configuration file, the CLI information presented to the customer indicates that the call originated from the company, rather than the name and / or number associated with the user initiating the call. The user may also be associated with a personal profile and select the personal profile when it is determined that the user is making a personal call. Such a profile may provide the actual name of the caller and the user's personal number. These exemplary profiles are intended to illustrate some examples of the types of profiles that may be associated with a user, but are not intended to be exhaustive or to limit the profiles to the examples discussed herein.

[0036] The configuration profile configuration information may include Quality of Service (QoS) information. If the configuration profile is selected, the QoS information specifies how the communication platform will provide network prioritization and allocate bandwidth to a communication session. The communication platform may handle numerous communication sessions simultaneously and will need to decide which communication sessions have priority for receiving when allocating limited network resources and bandwidth. A particular configuration profile may specify that the communication platform provides high QoS, while other configuration profiles may only require low or medium QoS. For example, a first configuration profile may be a customer contact profile used by a company's front-line employees to communicate with customers who require high QoS. The communication platform will prioritize allocating network traffic and bandwidth to communication sessions associated with this user profile to ensure that customer communications have good audio and / or video quality and experience minimal latency. In contrast, a second configuration profile may be a personal contact profile that requires low QoS. When a user makes a personal call that is not related to work or customer communication, the personal contact profile may be selected. The communication platform may allocate less bandwidth to the communication and assign lower priority to the network traffic associated with the communication session. As a result, the audio and / or video quality provided for the communication session may be worse than that provided in the customer contact profile example.

[0037] The configuration profile configuration information may include network routing information. If the configuration profile is selected, the network routing information can specify whether a call, video chat, or other communication associated with a communication session should be routed through the communication platform or through another network, such as a cellular network or the Public Switched Telephone Network (PSTN). For example, in the case where the communication platform is associated with a company, work-related and customer-related calls may be associated with a configuration profile that requires calls to be routed through the communication platform to ensure that the communication platform can control access to the provided features. However, in the case where a call or other communication is of a personal nature, a configuration profile for personal calls may be selected, and the call is routed through another network, such as a cellular network or the PSTN, rather than through the communication platform.

[0038] The configuration profile configuration information may include policy information. Policies can be used to control whether a user can access specific features, such as text-based chat, voice calls, and video calls, or specific aspects of these features. Configuration profiles can be used to group sets of feature permissions together, and the configuration profiles can act as shortcuts for allocating the set of feature permissions to users of the communication platform. The policy information can identify the policies that should be applied if a configuration profile is selected for a communication session.

[0039] The configuration file configuration information may include feature license information. The feature licenses may be individually assigned in the user profile rather than grouped together in the configuration file. For example, the configuration file may indicate that if the configuration file is selected, a particular call forwarding feature cannot be used. The configuration file may also define whether an auto attendant can be used to transfer callers to extensions without going through a telephone operator. These features may be features other than those assigned to the user via the configuration file. When the feature licenses individually assigned to the configuration file conflict with the feature licenses associated with the policies associated with the configuration file, the communication platform can be configured to use the individually assigned feature licenses and ignore the feature licenses that conflict with the individually assigned feature licenses. For example, a network administrator may assign a general user policy to a configuration file that prohibits the use of video calls. However, a supervisor profile may include an override of the general user policy and a feature license that permits the use of video calls. This example is intended to illustrate one way in which feature licenses can be used and is not intended to limit the scope of feature licenses and policies to this specific example.

[0040] The configuration file may also be associated with configuration file context information that can be used to determine when the particular configuration file can be selected from the set of configuration files associated with the user. The configuration file context information may be used by a server associated with the communication platform, a user device, or an edge node to select the configuration file to be used for a communication session. In some embodiments, the configuration file context information may be used by the device that selects the configuration file for the communication session to determine the "context" for the communication session. The context can be at least partially understood as the relationship or association between the caller and the callee in the communication session. For example, the caller may be calling a customer, a work colleague, a family member, a friend, a service provider, or some other party with whom the caller has some relationship or association. The context of the communication session can be derived from the configuration file context information discussed in the following examples. This context can be used to determine the appropriate configuration file for the communication platform to use to determine how to handle the communication session.

[0041] The configuration file context information may include one or more of the following types of information: the telephone number being dialed, a range of telephone numbers, location, service plan (voice, data, SMS), and time of day. These examples illustrate only a few of the types of configuration file context information that may be associated with a configuration file. However, this example is not intended to limit the context information to these specific examples.

[0042] One type of profile context information that can be used to determine the context for a particular communication session is the called telephone number. A profile can have a set of one or more telephone numbers associated with the profile. If a caller calls one of these numbers, the profile can be selected. The set of telephone numbers can be defined as one or more ranges of numbers. The range of telephone numbers can be defined based on country code, area code, local exchange number, and / or other ranges of telephone numbers that can be associated with a particular region. The range of telephone numbers can also be defined as being associated with a particular entity, such as a government entity, enterprise, or other entity. If the called number falls within the range of telephone numbers associated with a particular entity, the profile associated with that entity can be selected.

[0043] The profile context information can also include location-based information, including but not limited to: the location of the user equipment from which the call is initiated (also referred to herein as the "initiating device"), the location of the user equipment being contacted (also referred to herein as the "target device"), or both. Location-based profile context information can be used to enforce geographical constraints by associating geographical regions with profiles that restrict or permit the use of specific call features based on the location of the user equipment from which the call is initiated, the target device, or both. Trusted geographical locations (such as corporate headquarters) can be associated with profiles that provide access to a larger set of call features and high QoS. In contrast, public spaces or spaces defined as untrusted geographical locations can be associated with profiles that provide access to a limited set of features and low QoS.

[0044] The location-based context information can also specify restrictions on the initiating network, the target device network, or both. For example, information identifying the network to which the user equipment is initiating a call, the target device, or both can be obtained by the communication platform when determining the context for the communication session. In some embodiments, the user equipment can include a communication application associated with the communication platform installed on the device, and the communication application can supply network information to the communication platform such that the communication platform can locate and route calls to the user equipment. Different profiles can be set based on the network to which the user equipment is connected to provide different sets of features and QoS. Profile context information can be associated with each profile, which indicates when that profile should be selected based on the network information. For example, in the case where one or more user equipment are connected to a trusted corporate network, the profile that provides the widest set of features and the highest level of QoS can be selected. In contrast, when one or both of the users are connected via an untrusted or public network, a profile that provides a limited set of features and low QoS can be selected to limit the potential exposure of sensitive information.

[0045] The profile context information may also include time-based context information, including but not limited to: the time of day at the location of the originating device, the time of day at the location of the target user device being contacted, or both. The profile context information may define typical business hours at the location of the originating device, the target device, or both. Business-related profiles may provide a higher quality of service and a wider set of features to calls that fall within business hours at the location of the originating or target device. In another example, an administrator of the communication platform may define peak and off-peak profiles by adding time-based context information to a profile indicating when the profile should be selected. The peak profile may limit the use of certain features that require high bandwidth and network resources during peak hours, and the off-peak profile may permit the utilization of additional high-bandwidth features, but may not provide QoS guarantees for those features.

[0046] The profile context information may also include an indication of the type of relationship or association between the caller and the callee for which a particular profile may be selected. A user may have multiple associated profiles that define different profile context information that indicates when each of these profiles may be selected. For example, a user may have a first profile, a second profile, and a third profile, where in the first profile, the profile context information indicates that the profile should be selected for customer-related communication sessions, in the second profile, the profile context information indicates that the profile should be selected for communication sessions between work colleagues, and in the third profile, the context information indicates that the profile should be selected for personal communication sessions. The communication platform or other entity that determines which profile to select for a particular communication session may analyze information associated with the caller, the callee, or both to determine the context for the communication session. For example, the called number may be associated with a directory entry or contact entry, a calendar entry, or both, to determine how the caller and the callee are related or associated with each other.

[0047] The following examples illustrate these concepts: A network administrator can set the following set of profiles for first-line employees interacting with customers: (1) a customer contact profile, (2) a company-internal profile; (3) a company-priority profile; (4) a personal profile; and (5) a travel profile. The customer contact profile can be associated with the called number or a range of numbers associated with the customer, a set of geographical locations of the target device, a set of geographical locations of the originating device, and a set of business hours associated with the client device. The company-internal profile can be associated with a range of numbers included in the company or in an organizational directory associated with the user. The company-priority profile can be associated with a subset of the company or organizational directory that are senior managers and executives of the company. The communication platform can determine the context for a particular communication session based on contact information, directory information, and / or calendar information associated with the caller and / or the callee. This information can be used to determine the relationship or association between the caller and the callee, and a profile can be selected at least in part based on this relationship or association.

[0048] The following exemplary embodiments discuss how a profile can be selected for a user for a particular communication session. In some embodiments, the communication platform 260 or 360 can select which user profile should be used in a server-based scenario. In other embodiments, using a client-based approach, the communication application on the user device can determine which profile to select. In still other embodiments, the communication platform 260 or 360 can delegate the responsibility for selecting a profile to the communication application on the user device in a particular context. In yet another scenario, an edge network node such as the edge network node 370 can select which profile to use for a communication session.

[0049] Server-based profile selection

[0050] Figure 5 is a flowchart that illustrates an embodiment of an exemplary process 500 run by a data processing system, the exemplary process 500 for selecting a profile to be used by a communication platform to handle a communication session. In some examples, some or all of the processes of process 500 can be performed in conjunction with any of the features discussed with reference to Figures 1-4 Process 500 can be implemented by a data processing system such as the communication platform described in the exemplary software architecture 900 illustrated in the foregoing examples or Figure 9 and / or the exemplary machine 1000 illustrated in Figure 10 Process 500 is a server-based profile selection scheme where the communication platform determines which profile to use in the communication session.

[0051] Process 500 may include a first operation 510 in which a signal is received from a user device to initiate a communication session via the communication platform. Referring to the example illustrated in Figure 2 , a user of user device 101 may initiate a call via a communication application on the user device. The mobile application is associated with communication platform 260 and is capable of sending a request to establish a communication session with another user, such as a user of user device 202 or user device 203. A signal including a request to establish a communication session is received by communication platform 260. The signal may be routed through one or more intermediate networks, such as cellular network 225. The one or more intermediate networks may determine that the signal should be routed to communication platform 260 based on a telephone number associated with the communication application on user device 201. As discussed in the foregoing example, the telephone number associated with the user application may be mapped or assigned to the communication platform, and the one or more intermediate networks can be configured to access the mapping information to determine where to route the signal. In other embodiments, network addresses and / or other information included in the request signal may be used to route the signal from user device 201 to communication platform 260.

[0052] Process 500 may include a second operation 520 that includes determining the context of the communication session based on contact information, calendar information, or both, associated with a first party, a second party, or both. The context of the communication session may indicate the relationship or association between the caller and the callee, which may be derived from the contact information and the calendar information. The context of the communication session may, for example, indicate that the communication session is work-related, customer-related, or in some embodiments, personal. The communication platform can use this context information to select an appropriate profile for handling the communication session.

[0053] Contact list information is one source of information that can be used to determine context for a communication session. A user can be associated with a contact list. The contact list includes contact list entries that identify a party with whom the user can interact or has interacted in the past. A contact list entry can include one or more telephone numbers, fax numbers, screen names, social media identifiers, email addresses, or other means by which the user can communicate with the contact. A contact list entry can include information identifying the relationship or association between the party in the contact list and the user associated with the contact list. For example, the contact list entry can indicate that the contact list entry is a friend, family member, or other personal entry. The contact list entry can alternatively indicate that the contact is a work-related or customer-related entry. In some embodiments, the contact list entry may not include an explicit indication of the relationship or association between the user and the contact. However, the communication platform can infer whether the contact is a personal contact, work contact, customer contact, or other type of contact based on the information included in the contact list entry. For example, an entry that includes a home number or personal mobile phone number can be inferred to be a personal contact, while an entry that includes only a work number associated with a company's switchboard can be inferred to be a customer contact. The communication platform can correlate the contact information included in the contact list entry with an organizational directory of the company or organization that employs the user to determine whether the contact is a work-related contact.

[0054] Calendar information is another source of information that can be used to determine context for a communication session. A user can have calendar information that includes appointment and meeting information for the user, and the user can have multiple calendar entries. For example, a user can have a personal calendar and a work-related calendar, where personal appointments, meetings, and events can be scheduled in the personal calendar and work-related appointments, meetings, and events can be scheduled in the work-related calendar. The appointment, meeting, and / or event information can include information associated with one or both of the parties to the communication session. The communication platform can correlate the number associated with the calling party (e.g., CLI information) and / or the dialed number associated with the called party with the calendar information of the calling party, the called party, or both (if available) to determine whether any appointment, meeting, or event information is associated with the calling party's number or the dialed number.

[0055] The communication platform can determine the context for the communication session based on relevant calendar information. If one or more entries on the work calendar are related to the caller and / or the callee, the communication platform can infer that the context of the call is business-related, or if one or more entries on the personal calendar are related to the caller and / or the callee, the communication platform can infer that the context of the call is personal. The date and time of the calendar entry can also be used by the communication platform to determine the context for the communication session. If a meeting, appointment, or event occurs outside of a predefined set of working hours, on a weekend or holiday, the communication platform can determine that the meeting, appointment, or event is likely to be personal and determine that the context of the communication session is personal.

[0056] Process 500 can include a third operation 540 that includes selecting a profile for the user from the plurality of profiles based on the context. As discussed in the foregoing example, the communication platform can associate a plurality of profiles with the user, and the communication platform can select a profile for use in the communication session based on the context determined in the previous step. For example, if it is determined that the context for the communication session is business-related, a profile can be selected whose profile context information indicates that the profile is for a business-related communication session. Conversely, if it is determined that the context for the communication session is personal, a profile can be selected whose profile context information indicates that the profile is for a personal communication session. In other embodiments, other types of relationships or associations between the parties can be defined. In embodiments where more than one profile with profile context information that matches the profile context information determined in the previous stage is associated with the user, other profile context information, such as the called phone number, range of phone numbers, location, service plan (voice, data, SMS), time of day can be used to select a profile from those profiles that match the context type.

[0057] Process 500 can include a fourth operation 540 that includes handling the requested communication session according to the selected profile by setting one or more communication parameters based on the selected profile. Communication platform 260 is capable of establishing the communication session based on the parameters of the profile selected in the previous operation.

[0058] The communication platform 260 may first determine whether the selected features or services associated with the request to establish the communication session are permitted according to the selected configuration file. For example, if a video call is requested but the feature service is not supported under the selected configuration file, the communication platform 260 may send a signal indicating that the requested service is not supported to the user equipment of the user who initiated the request to establish the communication session. For example, such a situation may occur in the following circumstances: the communication platform is an enterprise communication platform, and the user has attempted to access a service that the user is not permitted to access, or the user has attempted to make a call to a personal contact and has requested a service that is not accessible for non-work-related communication sessions. The company may not want to allocate network resources and bandwidth for services that are not related to the user's role in the company, and thus prevent the user from using those features when determining that the context of the communication session is personal. In other embodiments, the communication platform 260 may be a subscribed service, and the user may have requested a service that is not available to the subscriber or is not available under certain conditions (e.g., according to the user's subscription, video calls are permitted only during off-peak hours on weekdays and on weekends).

[0059] If the request for the communication session is a request to establish a voice call, the communication platform 260 may determine the target number associated with the requested communication session and route the call to the network associated with the target number. The communication platform 260 may look up the dialed number in a database to determine which network is associated with the dialed number, and then route the call to the appropriate network. For example, the target number associated with the user equipment 202 may be associated with the cellular network 225, and the communication platform may route the call back to the cellular network 225 to establish a voice call with the user equipment 202 for the cellular network 225. Similarly, the target number associated with the user equipment 203 may be associated with the network(s) of the other network(s) 230, and the communication platform 260 may route the call to the other network(s) 230 to establish a voice call with the user equipment of another user.

[0060] If the request for the communication session is a request to establish a video call and / or other types of communication sessions (such as a text messaging session), the communication platform 260 may determine the network associated with the target number and attempt to route the request to the appropriate network. The communication platform 260 may determine that the requested service may not be available for a particular target user equipment. For example, the user equipment 203 may be a landline phone, and the phone can be reached via the PSTN of the phone service provider for the landline phone. The communication platform 260 may send a signal to the user equipment that initiated the request to establish a video call, and the signal indicates that the requested service is not available.

[0061] If the communication platform 260 is able to establish a communication session in response to the request, the communication platform can apply the configuration parameters to the communication session based on the selected configuration file. As discussed in connection with Figure 4 the exemplary configuration files of, the configuration parameters may include CLI information, QoS information, policy information, and feature permissions. In addition to or as an alternative to one or more of the examples discussed herein, other configuration information may be included in the configuration file.

[0062] In some situations, a new configuration file can be selected during an already established communication session. One situation in which this may occur is when a participant in the communication session invites a new user to participate in the already established communication session. The communication platform can be configured to re-determine the context for the communication session in response to an invitation to a new user to join the communication session. If the context changes due to the addition of a new user, the communication platform can select a new configuration file and begin handling the communication session according to the newly selected configuration file.

[0063] Persistent user device-based profile selection

[0064] Figure 6 is a flowchart that illustrates an implementation of an exemplary process 600 run by a data processing system, the exemplary process 600 for selecting a configuration file used by a communication platform to handle a communication session. In some examples, some or all of process 600 may be performed in conjunction with any of the features discussed in reference to Figures 1-4 Process 600 may be implemented by a user device such as the user device described in the exemplary software architecture 900 illustrated in the previous example or in Figure 9 and / or the exemplary machine 1000 illustrated in Figure 10 Process 600 is a configuration file selection scheme based on a user device, in which the user device determines which configuration file to use in a communication session. The communication platform may permanently delegate the decision of which configuration file to use for a communication session to an application on the client device. In the case of having more than one user device, the communication application on the user device used by the user to initiate the communication session can determine which configuration file to use.

[0065]

[0066] ​Process 600 may include a first operation 610 in which a signal is received from a user device to initiate a communication session via a communication platform. As described in the previous example, the user device may include a communication application associated with the communication platform. The user may attempt to initiate a communication session via the application. For example, the user may access the user interface of the communication application and attempt to initiate a communication session with another party by entering the phone number of the other party into the user interface, by selecting contact information for the other party from a directory or contact information.

[0067] Process 600 may include a second operation 620 in which profile information associated with the user is accessed. In this example, the communication application on the user device may access profile information associated with the user. As discussed in the previous example, the user can be authenticated to the communication platform via a communication application on the user device. In response to the user being authenticated, the communication profile may provide one or more profiles associated with the authenticated user to the client device. In some embodiments, the communication platform may send a profile associated with the user to the communication application in response to the user being authenticated. In other embodiments, the communication application on the user device may request a profile from the communication platform in response to the user being authenticated.

[0068] Process 600 may include a third operation 630 in which the communication application of the user device is able to select a profile to be used for the communication session. As discussed in the previous example, the profile may be selected based on various criteria, including but not limited to: the dialed number or a number range associated with the dialed number, the location of the initiating device and / or the target device, service plan information (voice, data, SMS), the time of day at the location associated with the initiating device and / or the target device, the relevance of the dialed number to directory entries and / or calendar entries may also be used by the communication platform to select a profile from the plurality of profiles. The communication application may determine the context of the communication session based on one or more of these criteria as discussed in the previous example and select the profile for the communication session based on that context.

[0069] Procedure 600 may include a fourth operation 640, in which the communication application of the user equipment can send a signal identifying the selected profile to the communication platform. The communication application of the user equipment can send a message to the communication platform to notify the communication platform that a specific profile has been selected by the user equipment. The communication application may send an indicator identifying the selected profile to the communication platform. The communication platform may alternatively send the profile or a subset thereof to the communication platform. The communication platform can use the selected profile to handle the communication session on behalf of the user, as discussed in the previous example.

[0070] Procedure 600 may include a fifth operation 650, in which the communication application on the user equipment establishes a communication session with the communication platform. The communication application on the user equipment can establish a communication session with the communication platform according to the previous example. The communication platform can coordinate the settings of one or more voice, data, and / or text communications with one or more other users according to the selected profile.

[0071] In some situations, a new profile can be selected during an established communication session. One situation in which this may occur is when a participant in the communication session invites a new user to participate in the established communication session. The communication platform can send a signal to the user equipment to re-determine the selected profile for the communication session in response to the invitation to a new user to join the communication session. If the profile changes due to the addition of a new user, the user equipment can send a signal identifying the newly selected profile to the communication platform, and the communication platform can start handling the communication session according to the newly selected profile.

[0072] Transient user device-based profile selection

[0073] Figure 7 is a flowchart that illustrates an implementation of an exemplary procedure 700 run by a data processing system. The exemplary procedure 700 is for selecting a profile to be used by a communication platform to handle a communication session. In some examples, some or all of procedure 700 can be performed in combination with any of the features discussed with reference to Figures 1-4 Any of the features discussed. Procedure 700 can be implemented by a user equipment, such as the user equipment described in the exemplary software architecture 900 illustrated in the previous example or in Figure 9 and / or the exemplary machine 1000 illustrated in Figure 10

[0074] Process 700 is a profile selection scheme based on the configuration of the user device, in which the user device determines which profile to use in a communication session. In this example, in a specific environment, the communication platform can delegate the decision of which profile to use for the communication session to an application on the client device. The communication platform is capable of providing the user device with delegation criteria to indicate in which environments the user device is responsible for profile selection. In the case of more than one user device, a copy of the communication application on the user device used by the user to initiate the communication session can determine which profile to use and can provide the delegation criteria to the communication applications on each of the user devices in the user device.

[0075] Process 700 may include a first operation 710 in which a first signal is received from the communication platform, the first signal indicating that profile selection is delegated to the user device according to the delegation criteria. The predetermined criteria may include one or more of the following: (1) the user device is located at one or more predetermined locations, (2) the user device is delegated the ability to perform profile selection for a limited time period, (3) the user device is delegated the ability to perform profile selection according to a deferral schedule (which may define a predetermined time period for delegating the ability to perform profile selection to the user device); and (4) when a profile selection is requested from the communication platform and / or an edge network node, the response to the profile request times out. The communication platform may periodically provide delegation information to the user device via a network connection between the user device and the communication platform. The communication platform may periodically push the delegation criteria to the user device(s) associated with the user. In some embodiments, the communication platform may provide delegation information to the user device in response to the user authenticating to the communication platform. The communication application may store the delegation criteria in the persistent memory of the user device and access the delegation criteria in response to the user attempting to establish a communication session with the communication platform via the communication application on the user device.

[0076] Process 700 may include a second operation 720 in which a second signal is received from the user device to initiate a communication session via the communication platform. As discussed in the previous example, the user device may include a communication application associated with the communication platform. The user may attempt to initiate a communication session via the application. For example, the user may access the user interface of the communication application and attempt to initiate a communication session with another party by entering the phone number of the other party into the user interface, by selecting contact information for the other party from a directory or contact information.

[0077] Procedure 700 may include a third operation 730, in which it is determined that delegation conditions for determining a profile to be used for a communication session at a user device are met. The communication platform conditionally delegates profile selection to the user device under certain conditions. If the conditions defined in the delegation criteria are not met, the communication platform may alternatively select a profile to be used to handle the communication session, and the procedure illustrated in Figure 5 may alternatively be used to select the user profile. Otherwise, if one or more of the conditions of the delegation criteria are met, procedure 700 may continue with step 740.

[0078] Procedure 700 may include a fourth operation 740, in which profile information associated with a user is accessed. In this example, the communication application on the user device may access profile information associated with the user. As discussed in the previous example, the user can be authenticated to the communication platform via the communication application on the user device. In response to the user being authenticated, the communication profile may provide one or more profiles associated with the authenticated user to the client device. In some embodiments, the communication platform may send a profile associated with the user to the communication application in response to the user being authenticated. In other embodiments, the communication application on the user device may request the profile from the communication platform in response to the user being authenticated.

[0079] Procedure 700 may include a fifth operation 750, in which the communication application of the user device is able to select a profile to be used for the communication session. As discussed in the previous example, the profile may be selected based on various criteria, including but not limited to: the dialed number or the number range associated with the dialed number, the location of the originating device and / or the target device, service plan information (voice, data, SMS), the time of day at the location associated with the originating device and / or the target device. The relevance of the dialed number to directory entries and / or calendar entries may also be used by the communication platform to select a profile from the multiple profiles. The communication device may determine the context of the communication session based on one or more of these criteria as discussed in the previous example and select a profile for the communication session based on that context.

[0080] Procedure 700 may include a sixth operation 760, in which, as discussed in the previous example, the communication application of the user device is able to send a signal to the communication platform identifying the selected profile.

[0081] Procedure 700 may include a seventh operation 770, in which a communication application on a user device establishes a communication session with a communication platform, as discussed in the previous example.

[0082] In some situations, a new profile can be selected during an already established communication session. One situation in which this can occur is when a participant in the communication session invites a new user to join the already established communication session. The communication platform may send a signal to the user device to re-determine the selected profile for the communication session in response to the invitation to the new user to join the communication session. If the profile changes due to the addition of the new user, the user device may send a signal identifying the newly selected profile to the communication platform, and the communication platform can begin to handle the communication session according to the newly selected profile.

[0083] Edge network node-based profile selection

[0084] Figure 8 is a flowchart that illustrates an implementation of an exemplary procedure 800 run by a data processing system, the exemplary procedure 800 for selecting a profile used by a communication platform to handle a communication session. In some examples, some or all of procedure 800 may be performed in combination with any of the features discussed with reference to Figures 1-4 Procedure 800 may be implemented by an edge network node, such as the edge network node 370 described in the exemplary software architecture 900 illustrated in the previous example or in Figure 9 and / or the exemplary machine 1000 illustrated in Figure 10 .

[0085] Procedure 800 is an edge network node-based profile selection scheme in which the edge network node determines which profile to use in the communication session. In this example, the communication platform may delegate to the edge network node the determination of which profile to use for the communication session in a particular environment, while in other embodiments, the communication platform may delegate profile selection to the network node without any restrictions. The communication platform can provide the edge network node with delegation criteria to indicate in which environments the edge network node is responsible for profile selection.

[0086] Process 800 may include a first operation 810, in which a first signal is received from the communication platform, the first signal indicating that the profile selection is delegated to the edge server according to the delegation criteria. The delegation criteria may be similar to the criteria discussed in the previous example and may provide an indication of the conditions under which the communication platform delegates the responsibility of profile selection to the edge network node. In an implementation where the communication platform delegates all profile selections to the edge network node, this stage may be omitted.

[0087] Process 800 may include a second operation 820, in which a signal is received from the user equipment to initiate a communication session via the communication platform. Referring to the example illustrated in Figure 3 , a user of user equipment 301 may initiate a call via a communication application on the user equipment. The mobile application is associated with the communication platform 360 and is capable of sending a request to establish a communication session with another user, the other user being a user such as user equipment 302 or user equipment 303. A signal including a request regarding the establishment of the communication session is received by the edge network node 370. The signal may be routed through one or more intermediate networks such as the cellular network 325. The one or more intermediate networks may determine that the signal should be routed to the edge network node 370 based on the telephone number associated with the communication application on the user equipment 301. As discussed in the previous example, the telephone number associated with the user application may be mapped or assigned to the communication platform, and the one or more intermediate networks can be configured to access the mapping information to determine where to route the signal. In other implementations, the network address and / or other information included in the request signal may be used to route the signal from the user equipment 301 to the communication platform 260.

[0088] Process 800 may include a third operation 830, in which it is determined that the delegation conditions for determining the profile to be used for the communication session at the user equipment are met. In the case where the communication platform delegates all profile determination decisions to the edge network node, this operation is omitted. If the communication platform conditionally delegates profile selection to the user equipment under specific conditions and the conditions defined in the delegation criteria are not met, the communication platform may alternatively select the profile to be used to handle the communication session, and the process illustrated in Figure 5 may alternatively be used to select the user profile. Otherwise, if one or more of the conditions of the delegation criteria are met, process 800 may continue with step 840.

[0089] Process 800 may include a fourth operation 840, in which profile information associated with a user is accessed. Edge network node 370 may access a database of profile information maintained by the communication platform to access the profile information of the user requesting to establish a communication session. As discussed in the previous example, the profile may be associated with a telephone number and / or other identifier associated with the user. Edge network node 370 may maintain a local copy of the profile database for at least a subset of the users of the communication platform to reduce the latency associated with remotely accessing the database. The local copy of the profile database may include profile information for users authorized to utilize the edge network node. For example, the edge network node may be associated with users from a particular geographic region, a particular office of a company, or other such subset of users of the communication platform.

[0090] Process 800 may include a fifth operation 850, in which the edge network node may select a profile to be used for the communication session. As discussed in the previous example, the profile may be selected based on various criteria, including but not limited to: the dialed number or number range associated with the dialed number, the location of the originating device and / or the target device, service plan information (voice, data, SMS), the time of day at the location associated with the originating device and / or the target device, and the relevance of the dialed number to directory entries and / or calendar entries may also be used by the communication platform to select a profile from multiple profiles. Edge node 370 may be configured to obtain location information for the originating device from the device. Calendar and directory information may be stored in a database associated with communication platform 360 accessible by edge node 370. Edge node 370 may also be configured to request calendar and contact list information associated with the dialed number from user device 301 that initiated the request for the communication session. The edge network node may determine the context of the communication session based on one or more of these criteria as discussed in the previous example and select the profile for the communication session based on the context.

[0091] Process 800 may include a sixth operation 860, in which the edge network node may send a third signal to the user device identifying the selected user profile. Edge network node 370 may send a signal to user device 301 over a network connection, the signal including an indication of the selected profile. In some embodiments, the profile or a subset of the information included therein may be sent to the user device.

[0092] Process 800 may include a seventh operation 870 in which the edge network node may send a fourth signal to the communication platform identifying the user equipment and the selected profile. The edge network node 370 may send a signal to the user equipment 301 over a network connection, the signal including an indication of the selected profile. In some embodiments, the profile or a subset of the information included therein may be sent to the communication platform.

[0093] The edge network node 370 may then route a request to establish a communication session to the communication platform 360, or provide an indication of the selected profile to the client device and / or the communication platform 360 and comply with the communication application on the user equipment 301 to route a request to establish communication and the selected profile to the communication platform 360.

[0094] In some situations, a new profile may be selected during an established communication session. One situation in which this may occur is when a participant in the communication session invites a new user to participate in the established communication session. The communication platform may send a signal to the edge network node to re-determine the selected profile for the communication session in response to the invitation of the new user to join the communication session. If the profile changes due to the addition of the new user, the edge network node may send a signal to the communication platform and the user equipment(s) identifying the newly selected profile, and the communication platform may begin to handle the communication session according to the newly selected profile.

[0095] In combination with Figures 1-4 Examples of operations illustrated in the flowchart shown in Figures 5-8 are described. It should be understood that the specific order or hierarchy of the elements and / or operations disclosed in Figures 5-8 is an exemplary scenario. Based on design preferences, it should be understood that the specific order or hierarchy of the elements and / or operations in Figures 5-8 can be rearranged while remaining within the scope of the present disclosure. Figures 5-8 The elements of the various operations are given in sample order and are not intended to be limited to the specific order or hierarchy given. Similarly, the appended claims give the various elements of the various elements and / or operations in sample order and are not intended to be limited to the specific elements, order, or hierarchy given.

[0096] Examples are given herein in combination with Figures 1-8Detailed examples of the systems, devices, and techniques described are used to illustrate the present disclosure and its benefits. Such examples of use should not be construed as limiting the embodiments of the logical processes of the present disclosure, nor should variations of the user interface methods described herein be considered outside the scope of the present disclosure. It should be understood that references to displaying or presenting an item (such as, but not limited to, presenting an image on a display device, presenting audio via one or more speakers, and / or causing the device to vibrate) include issuing instructions, commands, and / or signals that cause or reasonably expect to cause the device or system to display or present the item. In some embodiments, the various features described in Figures 1-8 are implemented in corresponding modules, which may also be referred to as and / or include logic units, components, units, and / or mechanisms. A module may constitute a software module (e.g., code embodied on a machine-readable medium) or a hardware module.

[0097] In some examples, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic configured to perform a particular operation. For example, a hardware module may be a dedicated processor, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). A hardware module may also include a programmable logic unit or circuit temporarily configured by software to perform a particular operation and may include a portion of machine-readable medium data and / or instructions for such configuration. For example, a hardware module may include software embodied within a programmable processor configured to run a set of software instructions. It should be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost, time, support, and engineering considerations.

[0098] Thus, the phrase "hardware module" should be understood to encompass a tangible entity that is capable of performing a particular operation and can be configured or arranged in a particular physical manner, i.e., an entity that is physically constructed, permanently configured (e.g., hardwired), and / or temporarily configured (e.g., programmed) to operate in a particular manner or perform particular operations described herein. As used herein, "hardware-implemented module" refers to a hardware module. Considering an example where a hardware module is temporarily configured (e.g., programmed), not every hardware module needs to be configured or instantiated at any given moment. For example, in the case where a hardware module includes a programmable processor that is configured by software to be a dedicated processor, the programmable processor can be configured to be different dedicated processors (e.g., including different hardware modules) at different times. Software can accordingly configure one or more processors, e.g., to constitute a particular hardware module at one moment and different hardware modules at different moments. A hardware module implemented using one or more processors can be referred to as "processor-implemented" or "computer-implemented".

[0099] Hardware modules are capable of providing information to and receiving information from other hardware modules. Thus, the described hardware modules can be considered to be communicatively coupled. In the case where multiple hardware modules are present simultaneously, communication can be achieved through signal transmission (e.g., via appropriate circuitry and buses) between two or more of the hardware modules. In embodiments where multiple hardware modules are configured or instantiated at different times, for example, communication between such hardware modules can be achieved by storing and retrieving information in a memory device accessible to the multiple hardware modules. For example, one hardware module can perform an operation and store the output in a memory device, and another hardware module can then access the memory device to retrieve and process the stored output.

[0100] In some examples, at least some of the operations of a method can be performed by one or more processors or processor-implemented modules. Additionally, the one or more processors can also operate to support the performance of related operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some of the operations can be performed by multiple computers (as an example of machines including processors) and / or between multiple computers, where the operations can be accessed via a network (e.g., the Internet) and / or via one or more software interfaces (e.g., application programming interfaces (APIs)). The performance of particular operations can be distributed among processors, not only residing within a single machine but deployed across several machines. Processor-implemented modules can be in a single geographical location (e.g., within a home or office environment or within a server farm), or can be distributed across multiple geographical locations.

[0101] Figure 9 FIG. 900 is a block diagram that illustrates an exemplary software architecture 902, portions of which may be combined with the various hardware architectures described herein to implement any of the features described above. Figure 9 This is a non-limiting example of a software architecture, and it should be appreciated that many other architectures may be implemented to facilitate the functions described herein. The software architecture 902 may run on hardware such as Figure 10 a machine 1000 that includes a processor 1010, a memory 1030, and input / output (I / O) components 1050, among other things. A representative hardware layer 904 is illustrated and can represent, for example, Figure 10 a machine 1000. The representative hardware layer 904 includes a processing unit 906 and associated executable instructions 908. The executable instructions 908 represent the executable instructions of the software architecture 902, which include implementations of the methods, modules, etc. described herein. The hardware layer 904 also includes a memory / storage 910, which also includes executable instructions 908 and accompanying data. The hardware layer 904 may also include other hardware modules 912. The instructions 908 held by the processing unit 908 may be a portion of the instructions 908 held by the memory / storage 910.

[0102] The exemplary software architecture 902 may be conceptualized as layers, each layer providing various functionality. For example, the software architecture 902 may include layers and components such as an operating system (OS) 914, libraries 916, frameworks 918, applications 920, and a presentation layer 944. Operationally, the applications 920 and / or other components within a layer may make API calls 924 to other layers and receive corresponding results 926. The illustrated layers are representative in nature, and other software architectures may include additional layers or different layers. For example, some mobile or specialized operating systems may not provide a framework / middleware 918.

[0103] The OS 914 can manage hardware resources and provide common services. The OS 914 can include, for example, a kernel 928, services 930, and drivers 932. The kernel 928 can act as an abstraction layer between the hardware layer 904 and other software layers. For example, the kernel 928 can be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. The services 930 can provide other common services for other software layers. The drivers 932 can be responsible for controlling the lower-level hardware layer 904 or for interfacing with the lower-level hardware layer. For example, depending on the hardware and / or software configuration, the drivers 932 can include a display driver, a camera driver, a memory / storage device driver, a peripheral device driver (e.g., via Universal Serial Bus (USB)), a network and / or wireless communication driver, an audio driver, etc.

[0104] The library 916 can provide common infrastructure that can be used by the application 920 and / or other components and / or layers. The library 916 typically provides functions for other software modules to perform tasks, rather than directly interacting with the OS 914. The library 916 can include system libraries 934 (e.g., C standard library) that can provide functions such as memory allocation, string manipulation, file operations. Additionally, the library 916 can include API libraries 936, such as media libraries (e.g., supporting the presentation and manipulation of image, sound, and / or video data formats), graphics libraries (e.g., OpenGL library for rendering 2D and 3D graphics on a display), database libraries (e.g., SQLite or other relational database functions), and web libraries (e.g., WebKit that can provide web browsing functionality). The library 916 can also include a wide variety of other libraries 938 to provide many functions for the application 920 and other software modules.

[0105] The framework 918 (sometimes also referred to as middleware) provides a higher level of common infrastructure that can be used by the application 920 and / or other software modules. For example, the framework 918 can provide various Graphical User Interface (GUI) functions, advanced resource management, or advanced location services. The framework 918 can provide a wide range of other APIs for the application 920 and / or other software modules.

[0106] The application 920 includes built-in applications 940 and / or third-party applications 942. Examples of built-in applications 940 can include, but are not limited to, a contacts application, a browser application, a location application, a media application, a messaging application, and / or a gaming application. Third-party applications 942 can include any application developed by an entity other than the vendor of a particular platform. The application 920 can use the functions available via the OS 914, library 916, framework 918, and presentation layer 944 to create a user interface to interact with the user.

[0107] Some software architectures use virtual machines, as illustrated by virtual machine 948. The virtual machine 948 provides a runtime environment in which applications / modules can run as if they were running on a hardware machine (such as Figure 10 machine 1000). The virtual machine 948 can be hosted by a host OS (e.g., OS 914) or a hypervisor, and can have a virtual machine monitor 946 that manages the operation of the virtual machine 948 and its interoperability with the host operating system. The software architecture can be different from the software architecture 902 outside the virtual machine and runs within the virtual machine 948, such as OS 914, libraries 952, frameworks 954, applications 956, and / or presentation layer 958.

[0108] Figure 10 is a block diagram illustrating components of an exemplary machine 1000 configured to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any of the features described herein. The exemplary machine 1000 is in the form of a computer system within which instructions 1016 (e.g., in the form of software components) can run to cause the machine 1000 to perform any of the features described herein. Thus, the instructions 1016 can be used to implement the modules or components described herein. The instructions 1016 cause the unprogrammed and / or unconfigured machine 1000 to operate as a specific machine configured to perform the described features. The machine 1000 can be configured to operate as a stand-alone device or can be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1000 can operate as a server machine or a client machine in a server-client network environment, or as a node in a peer-to-peer or distributed network environment. The machine 1000 can be embodied as, for example, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a gaming and / or entertainment system, a smart phone, a mobile device, a wearable device (e.g., a smart watch), and an Internet of Things (IoT) device. Additionally, although only a single machine 1000 is illustrated, the term "machine" includes a collective of machines that run the instructions 1016 individually or jointly.

[0109] Machine 1000 may include a processor 1010, a memory 1030, and / or I / O components 1050, which may be communicatively coupled, for example, via a bus 1002. The bus 1002 may include multiple buses that couple the various elements of machine 1000 via various bus technologies and protocols. In an example, the processor 1010 (e.g., including a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, or a suitable combination thereof) may include one or more processors 1012a through 1012n that may execute instructions 1016 and process data. In some examples, one or more processors 1010 may execute instructions provided or identified by one or more other processors 1010. The term "processor" includes multi-core processors, which include cores that may execute instructions simultaneously. Although Figure 10 multiple processors are shown, machine 1000 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors each with a single core, multiple processors each with multiple cores, or any combination thereof. In some examples, machine 1000 may include multiple processors that are distributed among multiple machines.

[0110] The memory / storage device 1030 may include a main memory 1032, a static memory 1034, or other memories, and a storage unit 1036, both of which may be accessed by the processor 1010, such as via the bus 1002. The storage unit 1036 and the memories 1032, 1034 store instructions 1016 embodying any one or more of the functions described herein. The memory / storage device 1030 may also store temporary, intermediate, and / or long-term data for the processor 1010. During the execution of the instructions 1016, the instructions 1016 may also reside, wholly or partially, within the memories 1032, 1034, within the storage unit 1036, within at least one of the processors within the processor 1010 (e.g., within an instruction cache or a cache memory), within the memory of at least one of the I / O components 1050, or in any suitable combination thereof. Accordingly, the memories 1032, 1034, the storage unit 1036, the memories within the processor 1010, and the memories within the I / O components 1050 are examples of machine-readable media.

[0111] As used herein, "machine-readable medium" refers to a device that can store instructions and data that cause a machine 1000 to operate in a specific manner, either temporarily or permanently, and can include, but is not limited to: random access memory (RAM), read-only memory (ROM), cache memory, flash memory, optical storage media, magnetic storage media and devices, cache memory, network-accessible or cloud storage devices, other types of storage devices, and / or any suitable combination thereof. The term "machine-readable medium" applies to a single medium or a combination of multiple media used to store instructions (e.g., instruction 1016) for execution by a machine 1000 such that, when executed by one or more processors 1010 of the machine 1000, the machine 1000 performs any one or more of the features described herein. Thus, "machine-readable medium" can refer to a single storage device as well as a "cloud-based" storage system or storage network that includes multiple storage devices or apparatuses. The term "machine-readable medium" does not include the signal itself.

[0112] The I / O components 1050 can include a wide variety of hardware components suitable for receiving input, providing output, generating output, transmitting information, exchanging information, capturing measurement results, and the like. The specific I / O components 1050 included in a particular machine will depend on the type and / or function of the machine. For example, a mobile device such as a mobile phone may include a touch input device, while a headless server or IoT device may not include such a touch input device. The specific examples of I / O components illustrated Figure 10 are in no way limiting, and other types of components may be included in the machine 1000. Grouping the I / O components 1050 is merely for the purpose of simplifying this discussion, and the grouping is in no way limiting. In various examples, the I / O components 1050 can include output components 1052 and user input components 1054. The user output components 1052 can include, for example, display components for displaying information (e.g., liquid crystal display (LCD) or projector), acoustic components (e.g., speakers), tactile components (e.g., vibration motors or force feedback devices), and / or other signal generators. The user input components 1054 can include, for example, alphanumeric input components (e.g., keyboard or touch screen), pointing components (e.g., mouse device, touchpad, or another pointing instrument), and / or tactile input components configured to receive various user inputs, such as user commands and / or selections (e.g., physical buttons or touch screens that provide the location and / or force of a touch or touch gesture).

[0113] In some examples, the I / O component 1050 may include a biometric component 1056, a motion component 1058, an environmental component 1060, and / or a positioning component 1062 along with a variety of other physical sensor components. The biometric component 1056 may include, for example, components that detect body expressions (e.g., facial expressions, vocal expressions, gestures, or body postures, or eye tracking), measure biometric signals (e.g., heart rate or brain waves), and identify people (e.g., via voice, iris, fingerprint, and / or face-based recognition). The motion component 1058 may include, for example, an acceleration sensor (e.g., an accelerometer) and a rotation sensor (e.g., a gyroscope). The environmental component 1060 may include, for example, a lighting sensor, a temperature sensor, a humidity sensor, a pressure sensor (e.g., a barometer), a sound sensor (e.g., a microphone for detecting ambient noise), a proximity sensor (e.g., infrared sensing of nearby objects), and / or other components that can provide signals indicative of, measuring, or corresponding to the surrounding physical environment. The positioning component 1062 may include, for example, a position sensor (e.g., a Global Positioning System (GPS) receiver), an altitude sensor (e.g., a pressure sensor from which altitude can be derived), and / or an orientation sensor (e.g., a magnetometer).

[0114] The I / O component 1050 may include a communication component 1064 that implements a variety of techniques capable of coupling the machine 1000 to the network 1070 and / or the device 1080 via respective communication couplings 1072 and 1082. The communication component 1064 may include one or more network interface components or other suitable devices to interface with the network 1070. The communication component 1064 may include, for example, components suitable for providing wired communication, wireless communication, cellular communication, near field communication (NFC), Bluetooth communication, Wi-Fi, and / or communication via other modalities. The device 1080 may include other machines or various peripheral devices (e.g., coupled via USB).

[0115] In some examples, the communication component 1064 may detect an identifier or may include components suitable for detecting an identifier. For example, the communication component 1064 may include a radio frequency identification (RFID) tag reader, an NFC detector, an optical sensor (e.g., a one-dimensional or multi-dimensional barcode, or other optical code), and / or a sound detector (e.g., a microphone that identifies tagged audio signals). In some examples, location information may be determined based on information from the communication component 1062, such as, but not limited to, a geographical location via an Internet Protocol (IP) address, a location via Wi-Fi, NFC, Bluetooth, or other wireless station identifier, and / or signal triangulation.

[0116] Although various embodiments have been described, the specification is intended to be exemplary, not limiting, and it is understood that many other embodiments and implementations are possible within the scope of the embodiments. Although many possible combinations of features are shown in the drawings and discussed in this detailed description, many other combinations of the disclosed features are possible. Unless specifically restricted, any feature of any embodiment can be used in combination with or substituted by any other feature or element in any other embodiment. Thus, it should be understood that any feature shown and / or discussed in this disclosure can be implemented by any suitable combination. Accordingly, the embodiments are not limited except as considered in the appended claims and their equivalents. Moreover, various modifications and changes can be made within the scope of the appended claims.

[0117] Although the foregoing describes what is considered to be the best mode and / or other examples, it is understood that various modifications can be made therein and the subject matter disclosed herein can be implemented in various forms and examples, and the teachings can be applied to numerous applications, only some of which are described herein. The following claims are intended to claim any and all applications, modifications, and variations that fall within the true scope of this teaching.

[0118] Unless otherwise indicated, all measurements, values, ratios, positions, sizes, dimensions, and other specifications set forth in this specification, including those in the following claims, are approximate and not exact. They are intended to have a reasonable range compatible with the functions they relate to and the customary practices in the art to which they pertain.

[0119] The scope of protection is limited only by the presently appended claims. This scope is intended to and should be construed to be consistent with the ordinary meaning of the language used in the claims when considered in light of this specification and the prosecution history hereinafter appended, and to cover all structural and functional equivalents. Nevertheless, no claim is intended to cover subject matter that fails to meet the requirements of Sections 101, 102, or 103 of the Patent Act, nor should it be construed in such a way. Any inadvertent coverage of such subject matter herein is hereby disclaimed.

[0120] Except as set forth immediately above, nothing that has been stated or illustrated is intended or should be construed to cause any component, step, feature, object, benefit, advantage, or equivalent to be dedicated to the public, whether or not recited in the claims.

[0121] It should be understood that the terms and expressions used herein have the ordinary meanings ascribed to such terms and expressions in the corresponding fields of study and learning, except where specific meanings are otherwise set forth herein. Relational terms such as first and second may be used solely to distinguish one entity or action from another, without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms "comprising," "including," or any other variation thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element preceded by the article "a" or "an" does not exclude the presence of additional identical elements in the process, method, article, or apparatus that includes the element.

[0122] A summary of the specification is provided to allow the reader to quickly understand the essence of the technical disclosure. The submission of the summary is recognized and will not be used to interpret or limit the scope or meaning of the claims. Additionally, in the foregoing detailed description, it can be seen that various features are grouped together in each example to streamline the disclosure. This method of the disclosure should not be construed as reflecting an intention that the claims require more features than are expressly recited in each claim. On the contrary, as reflected in the following claims, the inventive subject matter lies in less than all of the features of a single disclosed example. Accordingly, the following claims are hereby incorporated into the detailed description, where each claim stands on its own as a separately asserted subject matter.

Claims

1. A computing device, comprising: a processor; and a computer-readable medium storing executable instructions for causing the processor to perform operations including: storing, in a data storage device, a plurality of configuration files associated with a first user of a communication platform, and the plurality of configuration files includes a first configuration file, each configuration file including: configuration file context information that defines the situation for selecting the configuration file; and configuration file configuration information that includes a set of parameters used by the communication platform to establish a requested communication session, wherein the set of parameters defines the quality or type of the requested communication session; receiving, from a first device associated with the first user, a request to initiate a communication session using contact information associated with a second user; in response to receiving the request, determining whether the contact information associated with the second user satisfies the situation defined in the configuration file context information of the first configuration file; and in response to determining that the contact information associated with the second user satisfies the situation defined in the configuration file context information of the first configuration file, establishing the communication session using the set of parameters of the configuration file configuration information of the first configuration file, wherein, to determine whether the contact information associated with the second user satisfies the situation defined in the configuration file context information of the first configuration file, the instructions further cause the processor to perform the following operation: determining whether the contact information associated with the second user corresponds to an entry in a contact list associated with the first user.

2. The computing device according to claim 1, wherein, to determine whether the contact information associated with the second user satisfies the situation defined in the configuration file context information of the first configuration file, the computer-readable medium further includes instructions for causing the processor to perform operations including: determining whether the contact information associated with the second user corresponds to an entry in the calendar information associated with the first user.

3. The computing device according to claim 2, wherein, the contact information associated with the second user includes the called number of the second user, and to determine whether the contact information associated with the second user satisfies the situation defined in the configuration file context information of the first configuration file, the computer-readable medium further includes instructions for causing the processor to perform operations including: determining whether the called number of the second user falls within a number range associated with an entry in the contact list associated with the first user.

4. The computing device according to claim 1, wherein, each set of parameters includes a bandwidth or network traffic priority that defines the quality of the requested communication session, and to establish the communication session, the computer-readable medium further includes instructions for causing the processor to perform operations including: Allocate to the communication session a bandwidth or network traffic priority defined by the set of the parameters of the profile configuration information of the first profile.

5. The computing device according to claim 1, wherein, the computer-readable medium further comprises instructions for causing the processor to perform operations including the following: determine the originating network associated with the request received from the first device; and determine whether the first profile is permitted to be utilized with the originating network.

6. The computing device according to claim 1, wherein, the type of the requested communication session defined by each set of parameters includes one of the following: communication via a cellular network, communication via a public switched telephone network, text-based chat type communication session, voice call type communication session, and video call type communication session, and for establishing the communication session, the computer-readable medium further comprises instructions for causing the processor to perform operations including the following: implement the type of the requested communication session defined by the set of the parameters of the profile configuration information of the first profile.

7. A method for operating a communication platform, the method comprises: store in a data storage device a plurality of profiles associated with a first user of the communication platform, and the plurality of profiles includes a first profile, each profile includes: profile context information, which defines the situation for selecting the profile; and profile configuration information, which includes a set of parameters used by the communication platform to establish a requested communication session, wherein the set of parameters defines the quality or type of the requested communication session; receive from a first device associated with the first user a request to initiate a communication session using contact information associated with a second user; in response to receiving the request, determine whether the contact information associated with the second user satisfies the situation defined in the profile context information of the first profile; and in response to determining that the contact information associated with the second user satisfies the situation defined in the profile context information of the first profile, establish the communication session using the set of the parameters of the profile configuration information of the first profile, wherein determining whether the contact information associated with the second user satisfies the situation defined in the profile context information of the first profile includes: determining whether the contact information associated with the second user corresponds to an entry in the contact list associated with the first user.

8. The method according to claim 7, wherein, determining whether the contact information associated with the second user satisfies the situation defined in the profile context information of the first profile further includes: determining whether the contact information associated with the second user corresponds to an entry in the calendar information associated with the first user.

9. The method according to claim 7, wherein, The contact information associated with the second user includes the called number of the second user, and determining whether the contact information associated with the second user meets the condition defined in the profile context information of the first profile further includes: Determining whether the called number of the second user falls within a number range associated with an entry in the contact list associated with the first user.

10. The method according to claim 7, wherein, Each set of parameters includes a bandwidth or network traffic priority that defines the quality of the requested communication session, and establishing the communication session further includes: Allocating to the communication session a bandwidth or network traffic priority defined by the set of parameters of the profile configuration information of the first profile.

11. The method according to claim 7, further including: Determining the originating network associated with the request received from the first device; and Determining whether the first profile is permitted to be utilized with the originating network.

12. The method according to claim 7, wherein, The type of the requested communication session defined by each set of parameters includes one of the following: communication via a cellular network, communication via a public switched telephone network, text-based chat type communication session, voice call type communication session, and video call type communication session, and establishing the communication session includes: Implementing the type of the requested communication session defined by the set of parameters of the profile configuration information of the first profile.

Citation Information

Patent Citations

  • Method and apparatus for multiple personality support and dynamic personality selection

    CN103797887A