Advances in computer and software technology have provided a wide range of tools that enhance collaboration amongst people who are distributed across a wide geographical area. One tool that has facilitated this collaboration is the digital workspace. A digital workspace delivers and manages software applications, data, and desktop working environments to collaborating users regardless of their physical location. Among other advantages, digital workspaces facilitate collaboration by providing a unified path for incoming message notifications received from the various software applications that collaborators use.
In at least one example, a method of pushing a message notification to a message recipient is provided. The method comprises capturing a message that is sent to a message recipient. The method further comprises extracting a first set of one or more message keywords from the message. The method further comprises extracting a second set of one or more recipient keywords from one or more digital resources associated with the message recipient. The method further comprises evaluating a correspondence between the first set and the second set. The method further comprises pushing, to the message recipient, at a notification time, a notification of the message. The notification time depends on the evaluated correspondence.
Examples of the method can incorporate one or more of the following features.
In the method, the correspondence is evaluated as a binary parameter that is selected from (a) a first value indicating that the message has greater than a threshold semantic similarity to the one or more digital resources, or (b) a second value indicating that the message has less than the threshold semantic similarity to the one or more digital resources.
In the method, the notification is pushed to the message recipient upon evaluating the correspondence as the first value.
In the method, the notification is pushed to the message recipient upon (a) evaluating the correspondence as the second value and (b) determining that the message recipient is in an idle state.
In the method, the notification is pushed to the message recipient upon (a) evaluating the correspondence as the second value and (b) determining that a maximum delay threshold has been reached.
In the method, evaluating the correspondence further comprises (a) generating a message vector representation of each of at least some of the one or more message keywords; (b) generating a recipient vector representation of each of at least some of the one or more recipient keywords; and (c) counting message vector representations that are similar to at least one of the recipient vector representations, wherein two vector representations are considered to be similar if they have a cosine similarity that exceeds a threshold.
In the method, the one or more digital resources associated with the message recipient are digital resources accessed by the message recipient in a time period before the message was sent to the message recipient.
In the method, the one or more digital resources associated with the message recipient are digital resources accessed by the message recipient within twenty-four hours of when the message was sent to the message recipient.
The method can further comprise (a) generating a first vector that represents a particular one of the message keywords; and (b) generating a second vector that represents a particular one of the recipient keywords; wherein evaluating the correspondence includes evaluating a similarity between the first and second vectors.
The method can further comprise receiving a message notification preference from a sender of the message, wherein the correspondence is evaluated in response to the message notification preference indicating that immediate notification of the message to the message recipient is optional.
In at least one example, a computer system is provided. The computer system comprises a memory and at least one processor coupled to the memory. The at least one processor is configured to capture a message that is sent to a message recipient. The at least one processor is further configured to extract a first set of one or more message keywords from the message. The at least one processor is further configured to extract a second set of one or more recipient keywords from one or more digital resources associated with the message recipient. The at least one processor is further configured to evaluate a correspondence between the first set and the second set. The at least one processor is further configured to, in response to making a first determination that the correspondence indicates that the message has greater than a threshold semantic similarity to the one or more digital resources, push a timely notification of the message to the message recipient. The at least one processor is further configured to, in response to making a second determination that the correspondence indicates that the message has less than the threshold semantic similarity to the one or more digital resources, push a delayed notification of the message to the message recipient.
Examples of the computer system can incorporate one or more of the following features.
In the computer system, the processor is further configured to, in response to making the second determination, (a) determine a minimum actions per time parameter APMmin associated with the message recipient during a first time period after the message recipient receives the message; (b) determine, at a time after the first time period has elapsed, a current actions per time parameter APMcur for the message recipient; and (c) push the delayed notification to the message recipient in response to either (i) APMcur being less than or equal to APMmin, or (ii) a maximum delay threshold being exceeded.
In the computer system, the processor is further configured to, in response to making the second determination, (a) make a third determination that (i) the message recipient has an inactive webcam, (ii) the message recipient has an inactive microphone, and (iii) the message recipient has not provided keyboard input during an input time threshold; and (c) push the delayed notification to the message recipient after making the third determination.
In the computer system, the processor is further configured to, in response to making the second determination, (a) make a third determination that the message recipient is in an idle state; and (b) push the delayed notification to the message recipient after making the third determination.
In the computer system, the processor is further configured to, in response to making the second determination, (a) make a third determination that a maximum delay threshold has been reached; and (b) push the delayed notification to the recipient after making the third determination.
In the computer system, the delayed notification indicates a time at which the message recipient received the message.
In at least one example, a non-transitory computer readable medium stores processor-executable instructions to push a message notification to a message recipient. The processor-executable instructions comprise instructions to determine, for a recipient of a message, a minimum actions per time parameter APMmin associated with the recipient during a first time period after the recipient receives the message. The processor-executable instructions comprise instructions to determine, at a time after the first time period has elapsed, a current actions per time parameter APMcur for the recipient. The processor-executable instructions comprise instructions to push a notification of the message to the recipient in response to either (a) APMcur being less than or equal to APMmin, or (b) a maximum delay threshold being exceeded, the maximum delay threshold being measured from when the recipient receives the message.
Examples of the non-transitory computer readable medium can incorporate one or more of the following features.
In the non-transitory computer readable medium, the maximum delay threshold is greater than or equal to two times the first time period.
In the non-transitory computer readable medium, the APMmin and APMcur parameters are measured by counting how many actions the recipient takes per unit of time, wherein the actions include one or more of keyboard inputs and pointing inputs.
In the non-transitory computer readable medium, the processor-executable instructions further comprise instructions to determine that the recipient, during an entirety of the first time period, was performing at least one of (a) using a webcam; (b) using a microphone; or (c) using an input device without letting the input device remain idle for more than an input time threshold.
Various aspects of at least one example are discussed below with reference to the accompanying figures, which are not intended to be drawn to scale. The figures are included to provide an illustration and a further understanding of the various aspects and are incorporated in and constitute a part of this disclosure. However, the figures are not intended as a definition of the limits of any particular example. The figures, together with the remainder of this disclosure, serve to explain principles and operations of the described and claimed aspects. In the figures, each identical or nearly identical component that is illustrated is represented by a like reference numeral. For purposes of clarity, every component may not be labeled in every figure.
As noted above, one way that a digital workspace facilitates collaboration is by providing a unified path and notification host for messages that are received from the various software applications managed by the digital workspace. A digital workspace can be used to access a wide range of software applications, many of which may provide their own communication and notification services. Examples of software applications that provide notification services include email clients (for instance, as may be provided by Microsoft Outlook or Mozilla Thunderbird), instant messaging services (for instance, as may be provided by Google Hangouts or Microsoft Teams), and project management software applications (for instance, as may be provided by Slack or Jira). The messaging services provided by software applications such as these have grown so ubiquitous that many users prefer to use such services instead of face-to-face or telephone communication. A digital workspace can provide a unified notification center where a user can view notifications received from software applications such as these. This allows a collaborator to view, record, track, and manage all of his/her notifications in single location.
While a digital workspace notification center provides advantages with respect to the organization of a user's notifications, the fact remains that an incoming notification can still interrupt a user's immediate task at hand. In general, as digital workspaces become more ubiquitous and integrated with larger numbers of applications, and as the number of software applications that provide customized notifications increases, the frequency and variety of these incoming notifications will likely increase as well. People necessarily have a finite attention span, and for a user who is fully engaged in intense work, or who is attempting to actively engage with others via videoconference, being interrupted with notifications of messages that do not require immediate attention can be an overwhelming burden. If the recipient is engaged in screen sharing, incoming notifications that are unrelated to the task at hand raise the risk of exposing sensitive information to unintended recipients. And even if the user mutes or otherwise ignores unwanted notifications, the risk of ultimately forgetting to reply still lingers in the background.
The burden associated with these interruptions can manifest in a number of ways. For example,
To provide another example,
While some software tools allow incoming notifications to be muted or delivered silently, the fact remains that some notifications may be relevant to the recipient's immediate task at hand and should be delivered immediately. Other notifications are less urgent and can be delayed, delivered silently, or otherwise presented in a way that is less likely to interrupt the recipient's immediate task at hand. Thus many users wish to mitigate the burden associated with incoming notifications without missing messages that call for immediate attention. Ideally, the message recipient 14 would be able to selectively mute notifications associated with messages that are not related to the recipient's immediate task at hand, at least for a specified period of time.
To address these competing interests, disclosed herein is a framework for manipulating delivery of message notifications based on a recipient's activity at the time a message is received. In particular,
While cloud computing environment 100 can be configured to deliver all messages without delay, cloud computing environment 100 will only generate a notification 23 for relevant message 22. Other messages will be delivered with only a silent notification 25. Thus cloud computing environment 100 does not affect message transmission provided by the underlying communication software (for example, as provided by Microsoft Outlook, Google Hangouts, or Slack), but instead only manipulates the message notification activity. For messages that are delivered silently, a push notification 26 can be sent to recipient 14 later, for example, when recipient 14 is detected to have idle time 34, when recipient 14 is no longer occupied with busy time 32, or when a maximum delay is reached. This allows further communication between sender 12 and recipient 14, for example response 27 and rejoinder 28, to occur when such communication is less likely to cause recipient 14 to incur substantial productivity loss.
The framework illustrated in
The framework illustrated in
The communications that occur between sender 12, recipient 14, cloud computing environment 100, communication applications 200, and resources 300 occur via one or more communication networks. When multiple networks are used, the various networks can be of the same type or different type. For example, in some embodiments the one or more networks are a private network such as a local area network or a corporate intranet; a public network such as a metropolitan area network or a wide area network; or the Internet. Each of the one or more networks can employ one or more types of physical networks and/or network topologies, such as wired and/or wireless networks, and can employ one or more communication transport protocols, such as transmission control protocol, internet protocol, user datagram protocol, or other similar protocols. In some embodiments, each of the one or more networks include one or more mobile telephone networks that use various protocols to communicate amongst mobile devices. In some embodiments, each of the one or more networks include one or more wireless local area networks (WLANs). Short range communication within a WLAN can be achieved using 802.11, Bluetooth, and/or near field communication.
Cloud computing environment 100 delivers shared computing services and/or resources to multiple users, including sender 12 and recipient 14. The shared resources and services can include, but are not limited to, networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, databases, software, hardware, analytics, intelligence, and message notification services. Cloud computing environment 100 may encompass backend platforms such as servers, storage resources, server farms, and/or data centers. In one example implementation, cloud computing environment 100 provides a private cloud serving a single organization (for example, an enterprise cloud), while in another example implementation cloud computing environment 100 provides a community or public cloud serving multiple organizations. In general, servers providing the underlying functionality associated with cloud computing environment 100 can be located in distributed geographical locations.
In certain implementations cloud computing environment 100 provides resource pooling to serve multiple users through a multitenant model with different physical and virtual resources dynamically assigned and reassigned responsive to different user demands. The multitenant model can include a system or architecture that provides a single instance of software that serves multiple users. In some embodiments, cloud computing environment 100 provides on-demand self-service to unilaterally provision computing capabilities (for example, server time or network storage) across a network for multiple users. By way of example, provisioning services may be provided through a system such as Citrix Provisioning Services (Citrix PVS). Citrix PVS is a software-streaming technology that delivers patches, updates, and other configuration information to multiple virtual desktop endpoints through a shared desktop image. Cloud computing environment 100 can provide an elasticity that scales in response to different demands from one or more clients. In some embodiments, cloud computing environment 100 provides monitoring services to monitor, control, and/or generate reports corresponding to the provided shared services and resources.
In some implementations, cloud computing environment 100 provides cloud-based delivery of different types of cloud computing services, such as software as a service (SaaS), platform as a service (PaaS), infrastructure as a service (IaaS), and desktop as a service (DaaS). IaaS refers, for example, to a user renting the use of infrastructure resources that are needed during a specified time period. IaaS providers may offer storage, networking, servers, or virtualization resources from large pools, allowing users to quickly scale up by accessing more resources as needed. Examples of IaaS include Amazon Web Services, Rackspace Cloud, Google Compute Engine, and RightScale.
PaaS providers offer functionality provided by IaaS, including, for example, storage, networking, servers, or virtualization, as well as additional resources such as, for example, the operating system, middleware, or runtime resources. Examples of PaaS include Windows Azure, Google App Engine, and Heroku.
SaaS providers offer resources similar to those offered by PaaS providers, including storage, networking, servers, virtualization, operating system, middleware, or runtime resources. In some cases, SaaS providers may offer additional resources including, for example, data and application resources. Examples of SaaS include Google Apps, Salesforce, and Office 365. Examples of SaaS also include data storage providers such as Citrix ShareFile, Dropbox, Microsoft OneDrive, Google Drive, and Apple iCloud.
DaaS, which is also known as hosted desktop services, is a form of virtual desktop infrastructure in which virtual desktop sessions are typically delivered as a cloud service along with the applications used on the virtual desktop. Citrix Cloud is one example of a DaaS delivery platform. DaaS delivery platforms may be hosted on a public cloud computing infrastructure such as Azure Cloud or Amazon Web Services. In the case of Citrix Cloud, the Citrix Workspace application can be used as a single-entry point for bringing applications, files, and desktops together, either on-premises or in the cloud, to deliver a unified experience.
One or more resource management services can be used to manage and streamline user access to one or more resource feeds via one or more gateway services and/or one or more SaaS applications. A resource management service optionally employs an identity provider to authenticate the user and, following authentication, identify one of more resources the user is authorized to access. In response to the user selecting one of the identified resources, the resource management service sends appropriate access credentials to the requesting user. The requesting user can then use those credentials to access the selected resource. The one or more resource feeds can include systems or services for providing virtual applications and/or desktops to users, one or more file repositories and/or file sharing systems, one or more secure browser services, one or more access control services for SaaS applications, one or more management services for local applications executing on user computers, one or more Internet enabled devices or sensors, and the like.
Examples of the services provided by a cloud-based resource management service include a client interface service, an identity service, a resource feed service, and a single sign-on service. A resource access application can be used to communicate with the client interface service as well as to present a user interface that a user can operate to access resource feeds and/or SaaS applications. A resource application can be installed on the user's computer, or can be executed by the client interface service within cloud computing environment 100 and accessed by, for example, a web browser executing on the user's computer. In general, the resource access application can be understood as providing the user with a personalized, all-in-one interface that enables instant and seamless access to the user's SaaS applications, web applications, files, virtual Windows applications, virtual Linux applications, desktops, mobile applications, Citrix Virtual Apps and Desktops, local applications, file repositories, file sharing systems, and other data. Resource access application can also be understood as providing access to communication applications 200.
Event notifications in a resource activity feed may be accompanied by a discrete set of user-interface elements—for example, “approve”, “deny”, and “see more detail” buttons—that allow a user to take one or more simple actions with respect to each event right within the user's feed. In some embodiments, such a streamlined, intelligent resource activity feed may be enabled by one or more “microapps” that can interface with underlying associated resources using application programming interfaces (APIs) or the like. The responsive actions may be user-initiated activities that are taken within the microapps and that provide inputs to the underlying applications through the API or other interface. The actions a user performs within the microapp may, for example, be designed to address specific common problems and use cases quickly and easily (for example, request personal time off, submit a help desk ticket, and the like), thus adding to increased user productivity. Notifications from such event-driven microapps may additionally or alternatively be pushed to users to provide notification of something that requires the user's attention, such as approval of an expense report, availability of a new course for registration, and the like. The various techniques disclosed herein for manipulating how notifications are pushed to recipient 14 can likewise be applied to notifications generated by event-driven microapps or other notification services hosted by cloud computing environment 100.
A notification service can process and store notifications received from a user's digital resources, and can also store notifications in a database to be later served in an activity feed. The notification service can additionally or alternatively send notifications out immediately to a user as a push notification. The various techniques disclosed herein can be used to determine whether a particular notification should be pushed to recipient 14 immediately or deferred. Furthermore, while the various techniques disclosed herein can be applied to message notifications, it will be appreciated that in alternative embodiments such techniques can be applied to a wide variety of different notifications generated by resources administered by cloud computing environment 100. As used herein, the term “push” encompasses functionality that causes a notification to be provided or otherwise delivered to a message recipient 14, such as by causing a notification to be sent to and presented at one or more computing devices associated with recipient 14. The presentation can be made visually, aurally, haptically, or using any other suitable technique to draw the recipient's attention to the notification.
As noted above,
Sender 12 invokes one or more communication applications 200 to send a message to recipient 14. Sender workspace application 110 includes a sender monitoring agent 112 that is configured to interface with, and provide supplemental functionality to, communication applications 200. In certain implementations sender monitoring agent 112 is invoked in response to sender 12 accessing his/her digital workspace via cloud computing environment 100. Sender monitoring agent 112 can be verified using client credentials via a “RESTful” API that obeys representational state transfer (REST) constraints. In an example implementation, sender monitoring agent 112 provides sender 12 with the option to send his/her message with “instant notification” or “automatic notification”. If sender 12 chooses instant notification, recipient 14 will be notified of the sender's message upon receipt. On the other hand, if sender 12 elects “automatic notification”, recipient workspace application 140 will attempt to determine the degree to which the incoming message relates to recipient's current activity and will manipulate the message notification accordingly. Providing sender 12 with the option of selecting instant or automatic notification allows the framework illustrated in
Recipient workspace application 140 similarly includes a recipient monitoring agent 142 that is also configured to interface with, and provide supplemental functionality to, communication applications 200. Recipient monitoring agent 142 is likewise invoked in response to recipient 14 accessing his/her digital workspace via cloud computing environment 100. Recipient monitoring agent 142 can also be verified using client credentials via a RESTful API. In an example implementation, and as illustrated in
As illustrated in
Analysis service 120 further includes a data extraction module 124 configured to extract keywords from the sender's captured message as well as from the data that characterizes the recipient's current activity. Analysis service 120 also further includes a similarity evaluation module 126 configured to make a determination with respect to whether the message semantically relates to the recipient's current activity. Specific techniques for making this evaluation will be described in turn. In one implementation, this evaluation results in a binary label, for example yes/no, that indicates whether sufficient correlation has been established. In this context, “sufficient” correlation refers to a degree of similarity that is deemed sufficient such that recipient 14 should be notified of the incoming message without delay. As illustrated in
As illustrated in
In one implementation, method 3000 starts when sender 12 invokes one or more of communication applications 200 to send a message. See reference numeral 3100 in
Recipient monitoring agent 142 can be configured to deliver the message silently. See reference numeral 3110 in
In addition to the aforementioned processing that occurs at recipient workspace application 140, further processing is carried out by sender workspace application 110. In particular, sender monitoring agent 112 captures the message and forwards it to analysis service 120. See reference numeral 3150 in
At any arbitrary time, including at the time the message is sent, recipient 14 can be understood as either being idle or engaged with a task at hand using one or more resources 300. The resources that recipient 14 accesses as he/she works can provide insight into the substance of the recipient's activity. Analysis service 120 therefore includes interface module 122, which is configured to query resources 300, and/or the recipient's workflows that exchange data with resources 300, to obtain data that characterizes the recipient's current activity. See reference numeral 3160 in
Analysis service 120 includes data extraction module 124 which is configured to extract keywords from both the sender's captured message as well as the aforementioned data that characterizes the recipient's current activity. See reference numeral 3170 in
Turning now to
Applying the machine learning topic model to message data 12 results in the words included in message data 12 being distributed across the K topics, with a message score being generated for each topic. A higher message score for a given topic indicates that the given topic is, from a semantic standpoint, more closely related to message data 12. The topics with the highest message scores can be selected as being representative of message data 12. This set of topics with the highest message scores is referred to herein as the set of message keywords Gm 14. In one implementation the set Gm includes nm message keywords, wherein nm is an integer greater than one.
Likewise, applying the machine learning topic model to recipient data 22 results in the words included in recipient data 22 being distributed across the K topics, with a recipient score being generated for each topic. Again, a higher recipient score for a given topic indicates that the given topic is, from a semantic standpoint, more closely related to recipient data 22. The topics with the highest recipient scores can be selected as being representative of recipient data 22. This set of topics with the highest recipient scores is referred to herein as the set of recipient keywords Gr 24. In one implementation the set Gr includes nr recipient keywords, wherein nr is an integer greater than one.
Once the set of message keywords Gm 14 and the set of recipient keywords Gr 24 have been generated, the similarity between these keyword sets can be evaluated. To facilitate this comparison, data extraction module 124 is further configured to vectorize each of the nm message keywords in Gm and to also vectorize each of the nr recipient keywords in Gr. See reference numeral 5110 in
The neural network model is pretrained to learn word associations from a large training corpus and, once trained, is capable of representing individual words with a particular list of numbers that form a vector. These vectors, referred to herein as word vectors, allow a mathematical function, such as cosine similarity, to be used to evaluate similarity between two words represented by their respective two vectors. In one specific implementation the Word2vec technique is used to generate m-dimension word vectors for each keyword in Gm and Gr. In one specific implementation m=300, although other dimension vectors can be used in other embodiments. Thus the result of the aforementioned vectorization is a first set of nm word vectors 16 representing the message, and a second set of nr word vectors 26 representing the recipient's current activity.
Similarity evaluation module 126 is configured to compare each of the nm word vectors 16 with each of the nr word vectors 26. In one implementation this is accomplished by evaluating the cosine similarity between one of the nm word vectors associated with the message and one of the nr word vectors associated with the recipient's activity. See reference numeral 5120 in
After an established portion (for example, 100%, 80%, 75%, 50% or other portion) of the nm×nr possible vector combinations are evaluated, similarity evaluation module 126 is further configured to determine whether the similarity count associated with the message is greater than or equal to a similarity count threshold T2. See reference numeral 5160 in
If the similarity count associated with the message is greater than or equal to similarity count threshold T2, the message can be considered to be related to the recipient's current activity. See reference numeral 5162 in
In certain embodiments, once the correlation data has been generated, interface module 122 sends the message and the correlation data to recipient workspace application 140. See reference numeral 3200 in
On the other hand, for messages that are considered to be unrelated to the recipient's current activity, notification can be withheld until the recipient is evaluated to be idle or relatively idle. To this end, recipient workspace application 140 includes idle detection module 146 which is configured to identify an appropriate time for notifying recipient 14 of a message evaluated to be unrelated to the recipient's current activity. More specifically, idle detection module 146 is configured to query and retrieve data characterizing the recipient's current activity. See reference numeral 3220 in
A determination is then made with respect to whether the time elapsed since the recoded start time exceeds an initial stage threshold T3. See reference numeral 6110 in
If the time elapsed since the recorded start time does not exceed the initial stage threshold T3, idle detection module 146 determines whether recipient 14 is using a webcam and/or a microphone. See reference numeral 6120 in
On the other hand, if recipient 14 is not using a webcam or microphone, then idle detection module 146 determines whether recipient 14 has been observed to have provided input within an input time threshold T4. See reference number 6140 in
If recipient 14 is observed to have been inactive for less than input time threshold T4, recipient 14 is designated as busy. See reference numeral 6122 in
In some cases recipient 14 may be actively engaged in webcam, microphone, and/or input activity for a time period greater than initial stage threshold T3. In this case, idle detection module 146 is configured to determine a minimum action per unit time (APMmin) value for recipient 14 during the period spanning the initial stage threshold T3. See reference numeral 6160 in
A determination can then be made with respect to whether APMcur is less than or equal to APMmin. See reference numeral 6170 in
If recipient 14 is still designated as being busy after initial stage threshold T3 has elapsed and after APMcur and APMmin have been compared, a determination is made with respect to whether the time elapsed since the recoded start time exceeds a subsequent stage threshold T5. See reference numeral 6190 in
If the time elapsed since the recorded start time does not exceed the subsequent stage threshold T5, idle detection module 146 redetermines APMcur. See reference numeral 6162 in
In cases where subsequent stage threshold T5 is a relatively long period of time, the recipient's current activity is optionally periodically reevaluated. This can be accomplished by, for example, advancing operations from reference numeral 6190 in
The evaluation of recipient's activity before and after initial stage threshold T3 is illustrated in
In certain implementations the appearance of the push notification provided to recipient 14 varies depending on whether the push notification was delivered pursuant to the aforementioned “instant notification” framework or the “automatic notification” framework.
Nonvolatile memory 628 can include one or more hard disk drives or other magnetic or optical storage media. Nonvolatile memory 628 can additionally or alternatively include one or more solid state drives, such as a flash drive or other solid-state storage media. Nonvolatile memory 628 can additionally or alternatively include one or more hybrid magnetic and solid-state drives. Nonvolatile memory 628 can additionally or alternatively include one or more virtual storage volumes, such as a cloud storage, or a combination of such physical storage volumes and virtual storage volumes or arrays thereof.
User interface 670 can include a graphical user interface, examples of which include controls presented on a touchscreen, a display, or the like. User interface 670 can additionally or alternatively include one or more input/output devices, examples of which include a mouse, a keyboard, a microphone, one or more speakers, one or more cameras, one or more biometric scanners, one or more environmental sensors, one or more accelerometers, one or more visors, and the like.
Nonvolatile memory 628 stores an operating system 615, one or more applications or programs 616, and data 617. Operating system 615 and programs 616 include sequences of instructions that are encoded for execution by processor 603. Execution of these instructions results in manipulated data. Prior to their execution, the instructions can be copied to volatile memory 622. In some examples, volatile memory 622 can include one or more types of RAM and/or a cache memory that can offer a faster response time than a main memory. Data 617 can be entered through user interface 670 or received from the input/output devices such as communication interface 618. The various elements of computing device 600 described above can communicate with one another via communication bus 650.
Processor 603 can be implemented by one or more programmable processors to execute one or more executable instructions, such as a computer program, to perform functionality disclosed herein. The term “processor” describes circuitry that performs a function, an operation, or a sequence of operations. The function, operation, or sequence of operations can be hard coded into the circuitry or soft coded by way of instructions held in a memory device and executed by the circuitry. Processor 603 can perform the function, operation, or sequence of operations using digital values and/or using analog signals. In some examples, processor 603 can be embodied in one or more application specific integrated circuits, microprocessors, digital signal processors, graphics processing units, microcontrollers, field programmable gate arrays, programmable logic arrays, multicore processors, or general-purpose computers with associated memory. Processor 603 can be analog, digital, or mixed. In some examples, processor 603 can be one or more local physical processors or one or more remotely-located physical processors. A processor including multiple processor cores and/or multiple processors can provide functionality for parallel, simultaneous execution of instructions or for parallel, simultaneous execution of one instruction on more than one piece of data.
Communication interface 618 can include one or more interfaces to enable computing device 600 to access a computer network 680 such as a local area network, a wide area network, a personal area network, or the Internet through a variety of wired and/or wireless connections, including cellular connections and Bluetooth connections. In some examples, network 680 may allow for communication with other computing devices 690 to enable distributed computing. Examples of other computing devices 690 include devices used by message sender 12 and/or message recipient 14. Network 680 can include, for example, one or more private and/or public networks over which computing devices can exchange data.
In described examples, computing device 600 can execute an application on behalf of a user of a client device. For example, computing device 600 can execute one or more virtual machines managed by a hypervisor. Each virtual machine can provide an execution session within which applications execute on behalf of a user or a client device, such as a hosted desktop session. Computing device 600 can also execute a terminal services session to provide a hosted desktop environment. Computing device 600 can provide access to a remote computing environment including one or more applications, one or more desktop applications, and one or more desktop sessions in which one or more applications can execute.
The foregoing description and drawings of various embodiments are presented by way of example only. These examples are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Alterations, modifications, and variations will be apparent in light of this disclosure and are intended to be within the scope of the invention as set forth in the claims. In addition, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. Any references to examples, components, elements, or acts of the systems and methods herein referred to in the singular can also embrace examples including a plurality. Likewise, any references in plural to any example, component, element, or act herein can also embrace examples including only a singularity. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements. The use herein of “including”, “comprising”, “having”, “containing”, “involving”, and variations thereof is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. References to “or” can be construed as inclusive so that any terms described using “or” can indicate any of a single, more than one, and all of the described terms.
This application is a continuation of International Application PCT/CN2021/138715 (filed 16 Dec. 2021), the entire disclosure of which is hereby incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/CN2021/138715 | Dec 2021 | US |
Child | 17648842 | US |