Intelligent task suggestions based on automatic learning and contextual analysis of user activities

By automatically identifying and pushing tasks in the collaborative system, the problem of low task recognition and pushing efficiency in the existing system is solved, and the delivery of tasks at the correct time and place is realized, which improves collaboration efficiency and productivity.

CN113614765BActive Publication Date: 2025-04-29MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202080021000.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-03-15
Filing Date
2020-03-05
Publication Date
2025-04-29
Estimated Expiration
2040-03-05

AI Technical Summary

Technical Problem

Existing collaboration systems are difficult to effectively identify and push tasks created during meetings, resulting in loss of productivity and inefficient use of computing resources.

Method used

By automatically identifying tasks and task owners in multiple collaborative user activities, the system compiles and pushes tasks to the user's personalized task list, supporting a variety of delivery options and schedules, optimizing the effectiveness of task delivery.

Benefits of technology

The ability to deliver tasks in the right location and at the right time is realized, the collaboration efficiency of users is improved, productivity loss is reduced, and the use of computing resources is optimized.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113614765B_ABST
    Figure CN113614765B_ABST
Patent Text Reader

Abstract

The technology disclosed in this article improves existing systems by automatically identifying tasks from multiple different types of user activities and providing suggestions for tasks to one or more defined delivery mechanisms. The system compiles the tasks and pushes each task to the user's personalized task list. The delivery of each task can be based on any suitable user activity, which may include communication between one or more users or interaction between a user and a specific file or system. The system can identify the timeline, performance parameters and other relevant contextual data associated with the task. The system can identify the delivery schedule for the task to optimize the effectiveness of the task delivery. The system can also provide intelligent notifications. When a task conflicts with an individual's calendar, the system can resolve scheduling conflicts based on the priority of calendar events.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] There are many different software applications that allow users to collaborate. In one example, some applications provide a collaborative environment that enables users to exchange live video, live audio, and other forms of data within a communication session. In another example, some systems allow users to post messages to a board with access permissions for a selected group of individuals to enable team-centric or topic-centric conversations.

[0002] Although there are many different types of systems and applications that allow users to collaborate, users may not always benefit from a particular information exchange or meeting using these systems. For example, although participants in a meeting may discuss specific tasks and goals, multiple manual steps are required to actually follow up on each task and goal. For example, for a specific follow-up task created during a meeting, meeting participants may be required to set one or more calendar events to ensure that the relevant participants participate in the task after the meeting. And, even if such a task can be recorded, it may not be recorded in the correct medium to attract the user at the right time. For example, if a user is very focused on creating a specific document, it may not be easy for the user to see their calendar for a specific task. Such shortcomings of existing systems can lead to a loss of productivity and inefficient use of computing resources. Summary of the invention

[0003] The technology disclosed in this article improves existing systems by automatically identifying tasks and task owners from multiple different types of collaborative user activities. In some configurations, a system compiles the identified tasks and pushes each task to the user's personalized task list. The tasks can also be delivered to the user through multiple delivery options, which are selected based on the context analysis of the user's interaction with multiple applications and files. Such delivery options may include, but are not limited to: inserting the task into a file, publishing the task in a communication thread, modifying the user interface of a productivity application that the user often uses, sending a text message, or providing a system notification. Tasks can be delivered to any type of application, platform, or file that meets one or more criteria. The system can identify the timeline, performance parameters, and other relevant contextual data associated with the task. The system can also identify a delivery schedule for the task to optimize the effectiveness of the delivery of the task. By selecting the delivery options and delivery schedule, the system can deliver tasks at the right place and the right time. The system can also provide intelligent notifications in response to the detection of scheduling conflicts. For example, when a task is assigned to a specific person (a "delegatee" or "task owner"), on a specific target date, the system can automatically check the delegate's calendar and provide the delegate with notification of any scheduling conflicts. Thus, if the delegate plans to take a vacation or has other priorities, not only will the delegate be notified, but the system will also provide recommendations to resolve any identified scheduling conflicts.

[0004] Among many other benefits, the system can also identify permissions for each user associated with a task. The permissions can control read / write permissions for various aspects of a particular communication thread, related files, or other contextual data delivered with the task. Thus, when sharing a task with multiple users, security for any compiled data can be maintained on a per-user basis.

[0005] The delivery schedule can define a variety of different mechanisms for transmitting the task and any associated contextual data. For example, the system can recognize that a particular user associated with a task can interact with many different platforms and files, such as Word, a specific project text document, a specific team site, and a specific web browser. Based on the user's interaction with these platforms and files, the system can rank each platform and file and establish a schedule to deliver the task to each platform and file at the best time. Therefore, in this example, based on the user's activities, the task can be simultaneously posted to the user's team site, displayed on an in-application ("in-app") menu, and embedded in a specific text document.

[0006] In an example involving an in-application menu, the system can generate a message that delivers the task directly to the user engaging with the application, regardless of the file they are working in. In one illustrative example, if the user is heavily engaged in an application, such as a word processing application, the system that delivers the task can modify the application's menu and generate a notification that can be displayed directly in the in-application menu, e.g., the Office Ribbon.

[0007] The technology disclosed herein can also modify files that a user may participate in. For example, a user may participate in a particular presentation file related to an identified task. When the system identifies that the presentation file has a threshold level of relevance, the task and any associated contextual data may be inserted into the presentation file.

[0008] The system can rank multiple different delivery mechanisms (also referred to herein as "delivery options") based on user activity and machine learning data. For example, if the system identifies that the user is not engaged in a calendar program and is more engaged in a word processing program, the system can identify the word processing program as a better delivery mechanism for the task rather than generating a calendar event. The system can optimize user engagement by ranking different delivery mechanisms and delivering the task to each option at a specific point in time. By providing such analysis, the system can provide context-aware notifications and reminders at the right time and the right place to drive efficient collaborative behavior.

[0009] The efficiencies derived from the analysis described above can also lead to more efficient use of computing systems. Specifically, by automating a number of different processes for generating task reminders, user interaction with the computing device can be improved. The reduction in manual data entry and the improvement in user interaction between people and computers can lead to many other benefits. For example, by reducing the need for manual input, inadvertent input and human errors can be reduced. This can ultimately lead to more efficient use of computing resources, such as memory usage, network usage, processing resources, etc.

[0010] Features and technical advantages other than those explicitly described above will be apparent by reading the following detailed description and reviewing the associated drawings. This overview is provided to introduce a selection of concepts that are further described in the detailed description below in a simplified form. This overview is not intended to identify key or essential features of the claimed subject matter, nor is it intended to assist in determining the scope of the claimed subject matter. For example, the term "technology" can refer to (one or more) systems, (one or more) methods, computer-readable instructions, (one or more) modules, algorithms, hardware logic, and / or (one or more) operations as allowed by the context described above and throughout the text. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The detailed description is described with reference to the accompanying drawings. In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears. The same reference numbers in different drawings indicate similar or identical items. Reference to individual items in a plurality of items can use reference numbers with letters in the alphabetical sequence to refer to each individual item. General references to items can use specific reference numbers without the alphabetical sequence.

[0012] Figure 1

[0026] Diagrams illustrate systems used in exemplary scenarios for illustrating aspects of the present disclosure.

[0013] Figure 2 Several examples of structures for task data are illustrated.

[0014] Figure 3 An example is illustrated in which tasks are generated based on a specific set of activity data, preference data, and machine learning data.

[0015] Figure 4 An example is illustrated in which a task delivery schedule is generated based on contextual data such as activity data, preference data, and machine learning data.

[0016] Figure 5 Examples are illustrated in which permissions are generated based on contextual data, such as activity data and external source data.

[0017] Figure 6 An example is illustrated in which permissions may be modified for a particular user identity.

[0018] Figure 7 Illustrated are exemplary scenarios in which scores associated with individual factors are used to select one or more delivery mechanisms.

[0019] Figure 8 Illustrated are exemplary scenarios in which multiple weighted scores can be used to score factors for selecting one or more delivery mechanisms.

[0020] Fig.9A Illustrated is an example of how an application's user interface can be modified to communicate a task to a recipient using in-app messaging.

[0021] Fig. 9B Illustrated is an example of how an application's user interface can be modified to communicate a task to a recipient using in-app messaging.

[0022] Fig. 9C Illustrated is an example of how tasks can be delivered to recipients by using a channel application.

[0023] Fig.9D Illustrated is an example of how tasks and related files can be delivered to recipients through the use of a channel application.

[0024] Fig.9E Illustrated are examples of channel entries that may be used to communicate tasks and conflicts with the tasks.

[0025] Fig.9F An example of a graphical user interface showing a task timeline and dependent task timelines is illustrated.

[0026] Figure 9G An example of a graphical user interface showing dependent task timelines displayed simultaneously with conflicting notifications is illustrated.

[0027] Fig.10 is a flow chart illustrating aspects of a routine for computationally efficient generation and management of .

[0028] Fig.11 is a computing system diagram showing aspects of an illustrative operating environment for the techniques disclosed herein.

[0029] Fig.12 is a computing architecture diagram illustrating aspects of the configuration and operation of a computing device capable of implementing aspects of the techniques disclosed herein. DETAILED DESCRIPTION

[0030] Figure 1 A system 100 in an exemplary scenario for illustrating various aspects of the present disclosure is illustrated. The technology disclosed herein improves existing systems by automatically identifying tasks from multiple different types of user activities 101 and providing task recommendations 102 (also referred to herein as "tasks 102") to one or more defined delivery mechanisms 103. As shown, the user activities 101 can involve any number of different types of applications, platforms, files, and communication media used by multiple users 104 (104A-104D). The system 100 can analyze any type of user activity, such as, but not limited to: user interaction with documents or files, email communications, channel communications, private chat communications, voice or video communications, user interaction with a calendar, and any other type of user activity between a person and a computer.

[0031] The activity data 105 defining the user activity 101 can be parsed and analyzed to identify tasks to be performed by one or more users. The task generator 106 can analyze the activity data 105 in conjunction with other data (such as preference data 107, machine learning data 108, calendar data 109, and external sources 110) to generate tasks 102 and identify any users 104 associated with the tasks 102. For example, the system 100 can analyze multiple team meetings, emails, and channel conversation messages 111, and the system can determine that a specific individual needs to build a prototype before an event. When such an indication is detected, the task generator 106 generates a task description based on keywords in the activity data 105. The task generator 106 can also determine a timeline (e.g., a deadline) and other parameters for the task 102. The parameters can define various aspects of the task. For example, if the task involves the generation of a prototype, the parameters can indicate color, size, shape, etc.

[0032] The system 100 can generate a plurality of sentences that can be used to generate a task description. In addition, the system can also select sentences and phrases to be used in the task description from the analyzed content. In some configurations, the sentences can be generated or selected from any communication stream, file or shared data that meets the threshold requirements. In an illustrative example of the threshold requirements, the task description can be generated from the analyzed content based on the priority of a specific topic. For example, if there are several different sources of activity data, such as messages or files, it means: "We need a prototype", "The prototype will help the design process", "We need help with the prototype" and "We are stuck before the prototype is available", the number of occurrences of a specific word can be used to determine the priority of a keyword such as "prototype", and the priority can be compared with a threshold. If the number of occurrences of a specific keyword exceeds the threshold, the system 100 can determine the specific keyword as a topic, and the associated priority can be based on the number of times the keyword is used. Then, the system can generate multiple sentences around the topic. In the current example, it is assumed that the word "prototype" appears a threshold number of times. In response to this determination, the word "prototype" is given a priority, and the priority enables the system to generate multiple sentences around the selected word. Other words surrounding the selected word (also referred to herein as supporting words) can be used to generate a sentence. Some supporting words can include, but are not limited to, words such as "need", "help", etc. Common phrases can be used, such as "the team __a__." The system 100 can fill in such ready-made word fields with the selected word and supporting words to generate a sentence, such as "the team needs a prototype."

[0033] It can be appreciated that the priority for keywords or topics can be based on many other factors. For example, the priority can be based on interpreted language from one or more aspects of user activity 101. For example, the words "important" or "urgent" can increase the priority of a particular set of content. Other predetermined adjectives or adverbs can be used in conjunction with the word count of a particular keyword to increase or decrease the priority. These examples are provided for illustrative purposes and should not be construed as limiting. It can be appreciated that any suitable interpretation or analysis of the document can be used to associate the priority for the keyword.

[0034] In some configurations, the system may only count keywords of a particular category, such as nouns or verbs. Some words can be ignored, such as "the", "and", "she", "he", etc. In addition, the system can also select multiple sentences from the activity data and quote those sentences. A general algorithm for checking the grammar of each sentence can be used. If a sentence in the activity data 101 meets one or more criteria, for example, it is a complete sentence, it has correct grammar, and / or it contains a subject, the system can quote the sentence in the task description.

[0035] Task 102 can include a number of different attributes. Figure 2 Illustrated are multiple exemplary data structures for tasks 102, which can be referred to as "task data 102" in this article. In a first example, task 102A can include task description, task timeline, one or more user identities, user activity summary, task delivery schedule, related files, permissions and roles. In a second example, task 102B can include task description, task timeline, one or more user identities and task delivery schedule. In a third example, task 102C can include task description and user activity summary. In a fourth example, task 102D can include task description, task timeline, one or more user identities and related files. In another example, task 102E can include task description, task timeline and one or more user identities. In yet another example, task 102F can include one or more user identities and user activity summary.

[0036] The task description can include a coordinated sequence of sentences describing the task to be performed. The task description can include a computer-generated sentence outlining the user activity 101. The task description can also include sentences and keywords extracted from content associated with the user activity 101. For example, if a series of meetings, streaming broadcasts, channel posts, and other forms of communication indicate that a specific follow-up task is required, the system 100 can analyze such activities and generate multiple sentences to describe the task. In addition, direct quotations extracted from any content derived from the user activity 101 can be integrated as part of the task description. In an illustrative example, one or more sessions in a meeting can be detected, in which a user can indicate that a prototype is needed to complete a specific stage of the development process. Such user activity can be interpreted as generating a task description indicating the task.

[0037] The task timeline can include one or more dates and / or times to indicate milestones or deadlines about the task. The task timeline can include computer-generated dates or times based on an analysis of user activity 101. For example, analysis of several documents, emails, channel posts, calendar events, and other forms of communication can be interpreted as identifying times and / or dates for a specific task. For example, in response to detection of a task, such as the need to develop a prototype, the system 100 can analyze multiple other milestones or events, such as multiple calendar events, indicating the stages of the development process. The stages and / or other communications can be interpreted as a development task timeline, which can include a single deadline or multiple different deadlines for a specific task. Each deadline can also be associated with a priority based on a confidence level in the interpretation of the user activity 101.

[0038] The user identity can include any type of data related to a specific person or group of people. In some configurations, the user identity can be interpreted from the user activity 101. Individuals or groups of people can be identified by their interpretation of calendar events, channel posts, emails, documents, or any other data indicating users that may be associated with the task 102. The name and identity and any contact information can be derived from the association of the individual with a communication channel, a meeting, a document, an audio file, a video file, or any other data derived from the analysis of any user activity 101. The user identity can include any type of identifier for a user or user group with a threshold relevance to the task. The relevance of an individual can be based on a confidence level generated based on the activity data 101. For example, if an individual mentions that "Bob" wants to create a prototype, and Bob is a member of a channel associated with the individual who made the statement, Bob's user identity can be identified as having a threshold level of relevance. The relevance of the threshold level can include any identity directly related to the specific meeting that mentions the individual, or if someone directly mentions an identifier within a communication, for example, an individual states an email address, first name and last name, etc. The user identity can also be identified by using a title, role, or any other description mentioned or referenced within any type of user activity 101.

[0039] The user activity summary may include a description of the user activities 101 that were used to generate the task 102. For example, if the system 100 determines that a selected group of emails, a selected set of calendar invitations, and several documents are used to form a task, the user activity summary may describe the meeting, emails, and related documents to add context to the task. In some embodiments, the user activity summary may also include a link or excerpt to the source for the specific task. For example, if the system 100 detects that a particular posting to a channel describes a task for an individual, e.g., Bob needs to build a prototype, the user activity summary may include a link to the posting or an identifier for the posting. The link or excerpt may also be included in other attributes of the task 102, such as a task description.

[0040] The task delivery schedule may include a timeline of events that define the delivery of a task 102 or a portion of a task 102 to a specific individual or group of people. As described in more detail below, a task 102 may need to be delivered to an individual more than once to increase the likelihood that the message will be delivered to the intended recipient. The system 100 can utilize the task delivery schedule to transmit various aspects of a task 102 based on a deadline or timeline indicated in the task. In some configurations, different delivery mechanisms 103 can be used to deliver tasks or portions of tasks at different times. For example, a first reminder of a task can be delivered via email, and then the system 100 can later embed various aspects of the task 102 in a document, and then, later, publish various aspects of the task to a channel.

[0041] Files may also be embedded or referenced within a task 102. In some configurations, files having a threshold level of relevance to a task 102 may be identified by analysis of user activity 101. For example, if a conversation references a particular document by name, such a document may be included in a task 102. If a file is attached to a meeting request or otherwise attached to an email sent during a meeting, such a file may be considered to have a threshold level of relevance and the file may be included in a task 102. Files may have a threshold level of relevance based on multiple factors. For example, multiple keywords shared between a particular task and a document may be used to determine whether the document has a threshold level of relevance to a task. Phrases and sentences of the document may also be scored based on the number of common phrases or terms that a particular document may have with a particular task. If the system determines that a particular document and a task have a threshold number of common phrases or terms, such a document may be embedded or referenced within a task 102. Files having a threshold level of relevance may be embedded within a particular task 102, or files may be linked or otherwise referenced within a task 102.

[0042] Task 102 can also define multiple permissions. In some configurations, the permissions can define access rights to selected files or other attributes of task 102. In an illustrative example, if a task 102 with an embedded file is delivered to multiple people, the permissions can grant one recipient read and write access rights to the file, while only allowing other recipients to read access permissions. The permissions can be based on the access rights of the original owner of the document and the relationship between the recipient of the task and the original owner. For example, if the original owner has read / write access rights to the file and the original owner is in the same team as all recipients, the recipient can receive the same permissions. As the relationship between the recipient of the task and the original owner of the delivered content becomes less clear, specific aspects of the permissions may be more constrained. For example, if the original owner is a mid-level manager and the recipient of task 102 is a higher-level employee, the recipient can receive the same or more relaxed permissions on the delivered content. However, if the original owner of the recipient of task 102 is the manager of the recipient, the recipient can receive more constrained permissions, such as read-only permissions or permissions with expiration dates. If the recipient is on a different team or not directly associated with the original owner, more restricted permissions may be granted to the recipient based on interpretation of contextual data, such as an organizational chart.

[0043] Tasks can also define multiple roles for each user identity. In some configurations, activity data 101 can define a meeting that is part of a channel. In such an embodiment, the meeting or the channel can define roles for each participant. For example, based on the definitions defined in the channel or within the organizational data, one person can be designated as a manager, another as a designer, and another as a tester. Those interpreted roles can be used to distribute different aspects of the task to each person, such as different versions of the task description. Roles can also be used to determine the permissions. For example, if the identified file associated with task 102 is interpreted and identified as being related to the design work of the project, the access permissions for the file may be less restrictive for the designer and more restrictive for other recipients with other roles.

[0044] exist Figure 2 These examples shown in are provided for illustrative purposes and should not be construed as limiting. It can be appreciated that task 102 can include any combination of the described attributes. For example, task 102 can include only a task description, or task 102 can include only an activity summary.

[0045] Figure 3An example is illustrated in which a task 102 is generated based on contextual data such as activity data 101, preference data 107, and machine learning data 108. In this example, the activity data 101 includes several emails indicating that a prototype is needed and identification of a meeting on a channel that describes the role definition of Amy S. as a prototype expert. The activity data 101 also includes several calendar events defining several meetings for prototype design and another calendar event indicating that an individual Steve was out of the office for a week in April. The activity data 101 also includes channel posts that include references to files on several prototypes.

[0046] Likewise, in this example, preference data 107 indicates the priorities of a particular user. In this example, Steve prefers that tasks be delivered when he returns from vacation. In general, machine learning data 108 can define any type of activity for a user. Machine learning data 108 can be processed by system 100 to generate and modify tasks. Additionally, machine learning data 108 can be used to determine the best delivery mechanism 103 for task 102. In this example, machine learning data 108 indicates that Steve has responded to tasks 102 that have been delivered to him in the past.

[0047] Given various sources of contextual data for this example, task generator 106 generates task 102 including task description 301, user activity summary 302, and reference to file 303. As shown, task description 301 includes a plain text description of activity data 101. In addition, task description 301 indicates user identity Steve and deadline 4 / 1 / 2021. Task description 301 can be generated through analysis of contextual data such as activity data 101, preference data 107, and machine learning data 108.

[0048] exist Figure 3 Also shown in the user activity summary 302. In this example, the user activity summary 302 includes a note to Steve summarizing meetings that occurred during his vacation. To achieve this, the system 100 can analyze the time range when Steve was out of the office. The system 100 can then analyze the meetings that occurred during the determined time range. In some configurations, the system 100 can filter the information to be added to the user activity summary 302. For example, the system 100 can include descriptions of events that have a threshold level of relevance to the task 102. For example, a meeting used to generate a task can be described in the user activity summary 302, for example, with text or other data related to the task. The user activity summary 302 can also include other information and attributes, such as a brief summary of the task description, permissions, user identity, files, etc.

[0049] exist Figure 3The example shown in also shows that task 102 includes file 303. As outlined above, file 303 can be embedded in task 102, linked to task 102, or referenced within task 102 if file 303 has a threshold level of relevance to task 102. File 303 can have a threshold level of relevance if the file is directly referenced within an event, post, or communication of user activity 101. In this example, the channel post references the file, and therefore, file 303 is included in task 102.

[0050] Figure 4 An example is illustrated in which a task delivery schedule 401 is generated based on contextual data such as activity data 101, preference data 107, and machine learning data 108. In this example, activity data 101 includes a channel post indicating that a prototype is needed. Activity data 101 also includes several emails indicating an expert (e.g., Amy S.) for the prototype. Activity data 101 also includes several calendar events indicating four meetings. In addition, activity data 101 includes channel data, which includes a thread describing a schedule.

[0051] In this example, Figure 4 The preference data 107 shown in indicates that the user (in this case Amy) prefers in-app messages, calendar events, and channel posts. Additionally, the machine learning data 108 indicates that Amy frequently uses the calendar program. Additionally, the machine learning data 108 indicates that Amy frequently interacts with documents, channels, and word processing applications. The machine learning data 108 also indicates that Amy frequently utilizes the email program.

[0052] Based on the contextual data, the system 100 generates a task delivery schedule 401, which includes multiple deadlines and milestones generated based on the interpretation of the activity data 101, the preference data 107, and the machine learning data 108. As shown, the task delivery schedule for a task includes a timeline with multiple milestones and deadlines based on the interpretation of the schedule provided in the activity data 101. A specific delivery mechanism 103 is selected based on the preference data and the machine learning data. Since the recipient Amy frequently interacts with documents, channels, word processing applications, and email applications, the system 100 is able to utilize these applications and files as options for delivering the task 102 to Amy.

[0053] As the recipient of the task 102 interacts with each of the delivery mechanisms 103, the system 100 can analyze these types of interactions and update the machine learning data 108. For example, if the first deadline of the delivery schedule utilizes a calendar event to deliver the task 102, and the recipient never opens the calendar event, the system can resend the notification for the first deadline and also adjust other milestones or deadlines to use other delivery mechanisms 103 instead of the calendar program thereafter.

[0054] This example is provided for purposes of illustration and should not be construed as limiting. It will be appreciated that any combination of delivery mechanisms 103 can be utilized, and each mechanism can be selected based on the time of use, frequency of use, and contextual relevance of each use. For example, if it is determined that the recipient of task 102 only interacts with a particular document during certain weeks of the month, then that document may be selected as the delivery mechanism 103 for task 102 if a certain milestone or deadline for the content to be delivered coincides with that certain week.

[0055] Figure 5 An example is illustrated in which permissions 501 are generated based on contextual data such as activity data 101 and external source data 110. In this example, activity data 101 includes a channel post indicating that a prototype is needed. Activity data 101 also includes several emails indicating the names of experts for prototypes (e.g., Amy S.). Activity data 101 also includes several calendar events that reference two documents and a calendar event indicating that Steve (104A) and Carole (104B) are tasked with building the prototype. External source data 110 defines permissions for Steve (104A) and Carole (104B) regarding several files including the files referenced in the calendar event. External source data 110 can be in the form of a data store, a database, or any other source capable of storing and transmitting permissions for individual user identities.

[0056] The system 100 can analyze the contextual data and generate permissions 501 for each identified user. In this example, Steve (104A) and Carole (104B) are granted permission to read documents associated with task 102, and are given access to read posts to the associated channel. In this example, based on the permissions read from the external source data 110, Carole (104B) has write permission for each document and permission to write to the channel, and Steve (104A) has write permission for the second document and permission to write to the channel.

[0057] Figure 6 is Figure 5106E is an extension of the example shown in . In this example, a user Amy S. is not a participant in user activity 101. However, Amy is identified as an individual who is an expert and can contribute to task 102. In this scenario, when an individual is referenced within user activity 101 but is not a participant in user activity 101, a license can be generated for that person. This feature can enhance existing systems by automatically introducing relevant personnel into the project without manually entering license data. In this example, Amy (106E) is added to license 501 and is granted permission to mirror one of the identities associated with task 102. This example is provided for illustrative purposes and should not be interpreted as limiting. It can be appreciated that the permission granted to an individual who is referenced within user activity 101 but is not a participant in user activity 101 can be based on multiple factors. For example, such an individual can be granted read-only permission until one or more users associated with the task perform one or more actions. For example, the permission can be extended in response to a specific communication with the individual, for example, Carole has a threshold number of emails or other communications with Amy.

[0058] If the external source does not provide permissions for a particular user, the permissions of the task assignee can be set based on the relationship between the user identifier and the task assignee. For example, if Amy's permissions are not listed in the external source data 110, the system can assign Amy's permissions based on her relationship with Carole and her assigned permissions. The permissions (e.g., Carole's permissions) can be copied and assigned to Amy, or modified permissions (e.g., more permissive permissions or more restricted permissions) can be granted to an assignee, such as Amy.

[0059] In some configurations, experts in a particular technical field can be determined by using one or more external sources. For example, it is possible to use social networks, address books, and other sources associated with participants in user activity 101 to find experts in a particular field. In one example, it is possible to use the parameters of the task to search for experts in a social network associated with Carole (104B), such as Amy S. For example, the parameters of the task can include construction requirements, such as a specific programming language or specific materials must be used to make a prototype. And, those parameters can be used to generate queries, which can be used to search external sources for technical experts who are used to identify experience with a threshold level. The system can rank a list of candidates that meet the threshold level of experience. For example, the query can be looking for candidates with a specific number of degrees, years of experience, years of specific design experience, etc. The user identities that meet such a threshold level of experience can be sorted based on the matching level with the search criteria and displayed in the task 102.

[0060] In order to optimize the effectiveness of each task 104, the selector 112 of the system 100 can identify a delivery mechanism 103 that can be used to transmit the task 102 to the user associated with the task 102. The delivery mechanism 103 can include any system, platform, file, application, service, or any other computerized mechanism for transmitting and displaying tasks. Depending on when the individual interacts with the computer, the type of interaction they have with the computer, the applications they can use, and the files they interact with, the task 102 can be delivered to any combination of the delivery mechanisms 103. For example, the task 102 can be embedded in a file, sent via text, sent via email, posted on a channel, delivered using an in-application ("in-app") message, delivered using an operating system notification feature, sent as a text message, etc. As will be described in more detail below, the task 102 can be configured to cause the application to display a task description and / or provide notification of an associated deadline.

[0061] One or more delivery mechanisms 103 can be selected based on preference data 107, machine learning data 108, external source data 110, and other contextual data. For example, if preference data 107 and machine learning data 108 indicate that a user spends more time viewing a word processing application than a calendar application, the user's tasks 102 can be sent directly to the word processing application for displaying the tasks 102 in an in-application message. Additionally or alternatively, if a user is working on a particular file but uses multiple different applications to access the file, the tasks 102 can be embedded in the file so that the tasks can be displayed regardless of the application used to access the file. Such embodiments can also facilitate the authoring of any documents related to the tasks 102.

[0062] Figure 7 An example is illustrated showing how the selector 112 of the system 100 utilizes multiple factors to select one or more delivery mechanisms 103 for a task 102. In general, each factor can be scored based on the level of interaction with the user. The score can be based on any scale. In one example, the frequency of use, amount of usage data, and time of use of each delivery mechanism 103 are analyzed to select a delivery mechanism 103 for a task 102. This data can be obtained from machine learning data or general activity data that can be measured over time. The frequency of use can indicate the number of times a particular user accesses or uses a delivery mechanism within a period of time. For example, if a spreadsheet application is used more frequently than a word processing application, the spreadsheet application may have a higher score than the word processing application.

[0063] The usage data can indicate the level of interaction a user may have with an application or file. For example, if a user edits a first text document resulting in an edit of 5KB, and then edits a second text document resulting in an edit of 200MB, the first text document may have a higher score than the second text document. Usage data can also be applied to applications, for example, if a user edits a collection of documents through an application, a data usage score can be generated for such an application.

[0064] "Usage time" can indicate how usage time for a particular document or file may overlap with time associated with task 102. For example, if a task is to be completed during the weekend and the recipient of the task uses a word processing application more than a presentation application on weekends, the word processing application will have a higher score than the presentation application.

[0065] About Figure 7 In the example shown in , multiple delivery mechanisms 103 are scored and compared to each other. In this example, the scores 701 for each delivery mechanism 103 are processed to generate a cumulative score 702. Although this example illustrates that each score is called to create a cumulative score, it can be appreciated that any type of algorithm can be utilized to generate the cumulative score 702 based on the individual scores 701. In this example, the cumulative score 702 is compared to a threshold, and a delivery mechanism 103 that exceeds the threshold is selected for use. If the system 100 determines that the selected mechanism is not being used, the system 100 can utilize a ranked list and deliver tasks to various mechanisms 103 that do not exceed the threshold.

[0066] exist Figure 7 The data illustrated in the table of is referred to herein as analytical data. Such data can be displayed to the user in the graphical user interface 701, thereby allowing the user to understand how to select different delivery mechanisms. Similar tables can be illustrated for different topics selected from the user activity 101. In such an embodiment, the data can be displayed in a graphical user interface 701, such as in Figure 7 The frequency of a particular keyword or the number of times user activity 101 indicates a topic may be displayed in a table such as the table shown in FIG. By displaying such information, the user can understand how to make decisions within the system 100. In addition, the user can make one or more adjustments by selecting different factors, changing the weights applied to the factors, or allowing the user to make manual selections. For example, the user can select a particular delivery mechanism or change the ranking of the delivery mechanisms displayed. If the user Figure 7 , the user can remove specific factors, such as the "frequency of use" factor. In response to such input, the system can re-rank the delivery mechanisms and / or use factors to select a different set of delivery mechanisms without considering the removed factors, such as the "frequency of use" factor.

[0067] In some configurations, the system 100 can utilize a task delivery schedule with the selection of a particular delivery mechanism 103. Thus, the task 102 can be delivered to the user at the right place at the right time, which can include a series of coordinated actions or information for the purpose of increasing the usefulness and effectiveness of the task 102 delivery.

[0068] In some configurations, the scores for each delivery mechanism 103 can be normalized or weighted. Figure 8 The diagram shows Figure 7 801. In this example, multiple weights are applied to each score 701 to generate a weighted score 801. The weighted scores are used to generate a cumulative weighted score 803. The weights applied to each score can be based on many sources, including but not limited to definitions within user preference data, machine learning data, or activity data.

[0069] In one illustrative example, if the system 100 determines that the user has not interacted with the task at a particular delivery option, e.g., the recipient of the task has not read an email associated with the task, the system can lower any score used to select that delivery option. Figure 7 and Figure 8 In the example shown in , if the system 100 determines that the user does not read or use the delivery option, the frequency weight and the time weight can reduce the relevance score of the email system. Figure 7 was chosen as the delivery mechanism in , but later in Figure 8 This may result in the system 100 determining that a particular system (such as an email system) is not being utilized or is not able to effectively deliver tasks.

[0070] The weights applied to different factors can come from many different sources. For example, the weights can be generated by a machine learning system that can measure the amount a particular delivery mechanism is used. Thus, if the machine learning system determines that a particular delivery mechanism (such as an email application) is often selected but not actually used by an individual, the system can eliminate the factor used to select such a delivery mechanism, or the system can apply a specific weight to such a factor, for example, less than 1. In another example, the weights applied to different factors can come from user input. This enables the user to make real-time adjustments to the decision-making process after viewing the analysis and enables them to understand how to select a delivery mechanism.

[0071] As outlined above, the delivery mechanism can involve a variety of different types of user interfaces, applications, and other forms of data that can convey tasks. Figures 9A-9GSeveral exemplary user interfaces are illustrated that can be used with the techniques disclosed herein.

[0072] Fig.9A An example of how the user interface 900 of an application can be modified to communicate a task to a recipient using an in-app message is illustrated. In this example, the task is displayed in a strategically placed location when the user is ready to start a project (e.g., when they open a file). In this example, a task description and links to two files (901A and 901B) are provided within the user interface menu that is typically used to open files.

[0073] Fig. 9B Another example of how the user interface 901 can be modified with an in-app message 903 is illustrated. In this example, the task is embedded in close proximity (e.g., adjacent) to the content the recipient is working on. In some configurations, the in-app message 903 can also include a link 904 that can navigate the user to the source of the task, e.g., a channel, a Skype call to a recorded or live meeting, etc.

[0074] Fig. 9C Another example of how to deliver a task to a recipient by using a channel application is illustrated. In this example, a user interface 910 of a channel is populated with posts 911 indicating that the task of the individual is to build a prototype. Fig.9D Another example involving a channel application is illustrated. In this example, the user interface 910 of the channel is populated with posts 913 indicating that the individual's task is to build a prototype. The channel entry also relates to links 914 to supporting documents. Such channel entries can be automatically generated by the system 100 based on the selection of such a delivery mechanism and based on a delivery schedule.

[0075] Fig.9E The example of the channel entry that can be used to convey the task for specific recipient Amy is illustrated. In this example, the recipient's task includes a task timeline. The task timeline indicates that the timeline conflicts with one of Amy's meetings. User interface 910 also illustrates the task of another user Bob, which depends on Amy's task. When a conflict is detected, the relevant tasks can be displayed to the user. Such information enables the user to make decisions about the conflict and how the conflict may affect others.

[0076] When the system determines that a specific event such as a meeting conflicts with the task timeline, the system 100 can generate a graphic element 950 indicating the existence of the conflict. The graphic element 950 can also provide information describing the severity of the event or conflict. The graphic element 950 can also indicate the priority of the event that conflicts with the timeline. Based on the priority of the meeting, the system 100 can take one or more actions. For example, if the event presenting the conflict is a low priority, such as a general team meeting, the system can generate a second graphic element 951 to allow the user to resolve the conflict. In response to the user selection of the second graphic element 951, the system 100 can remove the event causing the conflict, reschedule the event causing the conflict, or prompt the user to manually move the event causing the conflict.

[0077] refer to Fig.9F , continuing with the above example, if the system determines that the event that conflicts with the timeline has a high priority, such as a CEO meeting or a vacation, the system 100 can automatically generate a notification to other users associated with the relevant task. In addition, the system 100 can generate a graphical element 953 displayed to the task owner Amy, indicating the type of message that can be displayed to users associated with the relevant task (such as Bob).

[0078] Figure 9G An exemplary user interface 910 that may be displayed to a user associated with a related task is illustrated. In this case, a user interface displaying Bob's task may show a graphical element 953 notifying the task owner that there may be a delay or conflict, such as the conflict found regarding Amy's task.

[0079] Fig.10 1 is a diagram illustrating various aspects of a routine 1000 for computationally efficient generation and management of tasks. It will be appreciated by those of ordinary skill in the art that the operations of the methods disclosed herein are not necessarily presented in any particular order, and that it is possible and contemplated to perform some or all of the operations in (one or more) alternative orders. For ease of description and illustration, the operations have been presented in the order in which they are presented. Operations may be added, omitted, performed together, and / or performed simultaneously without departing from the scope of the appended claims.

[0080] It should also be understood that the illustrated method can be terminated at any time and does not need to be fully executed. Some or all of the operations of the method and / or substantially equivalent operations can be performed by executing computer-readable instructions contained on a computer storage medium, as defined herein. The term "computer-readable instructions" and its variants as used in the specification and claims are broadly used herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, etc. Computer-readable instructions can be implemented on various system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, etc.

[0081] It should be appreciated, therefore, that the logical operations described herein are implemented as: (1) a sequence of computer-implemented actions or program modules running on a computing system such as those described herein, and / or (2) interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice depending on the performance and other requirements of the computing system. Thus, the logical operations may be implemented in software, firmware, dedicated digital logic, and any combination thereof.

[0082] In addition, Fig.10 The operations illustrated in the other figures can be implemented in association with the exemplary presentation UI described above. For example, the various devices (one or more) and / or modules (one or more) described herein can generate, send, receive and / or display data and / or presentation UI associated with the content (e.g., live content, broadcast events, recorded content, etc.) of a communication session, including renderings of one or more participants of a remote computing device, avatar, channel, chat session, video stream, image, virtual object and / or application associated with the communication session.

[0083] Routine 1000 begins at operation 1002, where the system 100 receives data defining user activities from multiple resources. In this operation, communication data and / or files that are part of the user activities of multiple individuals can be collected for the purpose of identifying keywords, descriptions, or parameters. For example, the system can identify phrases within a conversation and associate the conversation with other forms of communication (such as chat entries). The system can analyze files associated with any suitable type of user activity. For example, if a user is editing a spreadsheet or Word document, the content of such a document can be received and analyzed. Files attached to other types of communications, such as channel entries, can also be received and analyzed. Operation 1002 can include receiving any type of communication data, including but not limited to: emails, messages, videos and recordings, and live broadcasts, etc.

[0084] Routine 1000 proceeds to operation 1004, where the system 100 identifies at least one task based on the received data and / or machine learning data defining user activities. Operation 1004 can include any suitable technology for analyzing keywords, phrases, images, or any other type of data to identify tasks. Any aspect of the task can be determined at operation 1004. For example, user identity, files, task timelines, task descriptions, task delivery schedules, and other activities can be determined. For example, text data or audio data can include phrases such as "Jason will be helpful in building a prototype of a software application. It will also be helpful for the software application to have a startup time of less than 30 seconds." In this example, the system 100 can identify at least one identity, such as Jason, and at least one parameter, such as the startup time needs to be less than 30 seconds. The timeline for the task can be indicated in the communication, or the timeline can be derived from other information. For example, the system indicates that the software application in question has a release schedule within the next three months, and the prototype will expire in two months. Based on such information, the system can combine attributes such as timelines, user identities, and task descriptions to generate tasks.

[0085] Next, at operation 1006, the system 100 can determine a delivery mechanism for the task. As described herein, one or more factors can be utilized to determine an appropriate delivery mechanism. The factors can be based on, but are not limited to, machine learning data, activity data, preferences, and contextual data received from external sources such as address books, social networks, etc.

[0086] At operation 1008, the system 100 can analyze the task to identify conflicts with the task timeline taking into account one or more external sources, such as calendar data. For example, if the task timeline indicates that the user needs to complete the prototype within a specific week, and the user plans to be out of town during that time, the system 100 can identify conflicts between the task timeline and one or more events.

[0087] Next, at operation 1010, the system 100 can deliver the task with one of a plurality of conflict notifications to a selected delivery mechanism. As described above, the delivery mechanism can include any suitable platform, software application or file selected based on the interaction of the user and the computer. As described above, the system 100 can provide a notification indicating a scheduling conflict. The system 100 can also provide a tool for allowing the user to resolve the conflict. Based on the priority associated with the event that conflicts with the task timeline, the system can allow the user to reschedule the event, delete the event or otherwise modify the event to mitigate the conflict. The system 100 can also notify other users who may be affected by the conflict.

[0088] Next, at operation 1012, for the purpose of collecting and analyzing machine learning data, the system can analyze the user activities of the individuals (e.g., recipients) who receive the generated tasks. For example, when a particular user receives the generated tasks and the user does not interact with the tasks, the system 100 can analyze the type of activity and make real-time adjustments to ensure that the user receives notifications of the tasks. At the same time, the system 100 can also measure the activity level of the user's interaction with the tasks. This data can be collected and used to determine future delivery mechanisms for the tasks. For example, if an individual responds with one or more user activities after reading an email describing the task, the system updates the score and other metrics that can be used to determine the delivery mechanism for future tasks. In this example, if the user reacts, for example, makes any measurable progress on the task after reading the email, the score of the email system as a delivery mechanism may be higher than other delivery mechanisms that are not used, such as chat messages, etc.

[0089] Next, at operation 1014, the system 100 can transmit data defining the user interaction with the machine learning service. The machine learning service can involve an external service or an internal service within the system 100. Different metrics can be stored and analyzed for the delivery of the task, examples of which are described in Figure 7 and Figure 8 As shown, routine 1000 can continue from operation 1014 to return to operation 1002 to enable system 100 to continuously utilize and adjust the machine learning data as new tasks are generated.

[0090] In addition to or in conjunction with routine 1000, the computer-readable medium may enable the system 100 to monitor input data defining user activities of a plurality of users to identify keywords from user activities associated with at least one of a document, a message, a channel thread, an audio recording, or a communication stream. The system may then analyze the keywords to identify a task and at least one user identity associated with the task, and then generate a task description based on the keywords. The system may also analyze machine learning data defining user activities associated with at least one user identity associated with the task. In some embodiments, the machine learning data may indicate a frequency of use of a plurality of delivery applications and / or a plurality of delivery files. For example, if a user interacts with a file using several applications, the system may embed or link aspects of the task within the file instead of providing an in-application message within the software application. Thus, the system is capable of transmitting the task description to at least one delivery software application having a threshold usage level among a plurality of delivery software applications, wherein the transmission causes the at least one delivery software application to display the task description in a user interface. Alternatively or additionally, the system is capable of embedding the task description in at least one delivery file having a threshold usage level among a plurality of delivery files.

[0091] In some embodiments, the system can analyze the keywords to identify a task, the task further comprising analyzing the keywords and then identifying a task timeline associated with the task. The system can transmit the task timeline to at least one delivery software application having a threshold usage level, wherein the transmitting causes the at least one delivery software application to display the task timeline in the user interface. The system can also embed the task timeline in at least one delivery file having the threshold usage level.

[0092] In some embodiments, the system can identify related files and deliver the related files concurrently with the task. For example, the system can analyze at least one of a document, a message, a channel thread, an audio recording, and / or a communication stream to identify a file associated with a task. For example, the system can transmit the file or an identifier for the file to at least one delivery software application having a threshold usage level, wherein the transmission causes the at least one delivery software application to display at least a portion of the file or the identifier for the file in the user interface. The system can also embed at least a portion of the file or the identifier for the file in at least one delivery file having a threshold usage level.

[0093] In some embodiments, the system can control permissions for files associated with a task. For example, the system can determine access permissions associated with the file based on at least one user identity. Referring to some of the examples described above, if Steve is selected as the individual assigned to the task, the system can assign access permissions to at least a portion of the file embedded in a delivery file or any other delivery mechanism 103. In some embodiments, the system can determine access permissions associated with the file based on at least one user identity (e.g., Bob's permissions) and assign the access permissions to the file transmitted to the at least one delivery software application, such as to the file in the delivery file. Fig.9A The application shown in .

[0094] In some configurations, the system can determine a delivery schedule for the task for the software application. For example, the system can analyze machine learning data defining user activities associated with at least one user identity associated with the task, wherein the machine learning data indicates usage time of the at least one delivery software application. Based on such analysis, the system can transmit the file or an identifier for the file to the at least one delivery software application based on the usage time of the at least one delivery software application.

[0095] In some configurations, the system can determine a delivery schedule for the task of the delivery file. For example, the system can analyze machine learning data that defines user activities associated with at least one user identity associated with the task, wherein the machine learning data indicates a usage time of the at least one delivery file. The system can then embed the task description or any other task attribute in the at least one delivery file (e.g., Figure 1 103).

[0096] In some configurations, the system can deliver tasks to an operating system to allow the operating system to provide system notifications when the application is not being used at a threshold level. For example, the system can determine that the delivery software application does not meet the threshold usage level. In response to determining that the delivery software application does not meet the threshold usage level, the system can cause the task description to be displayed in an operating system notification, wherein the operating system notification is displayed according to a delivery schedule based on the machine learning data. As described herein, the system can provide tasks using any suitable delivery mechanism, including but not limited to: a text messaging application, a word processing application, a spreadsheet application, a presentation editing application, a channel communication application, a video and audio communication application, or a calendar application.

[0097] In some configurations, the system can identify an expert associated with a task. In conjunction with any of the techniques disclosed herein, the system can analyze the task description to identify the required credentials associated with the task. The system can then generate a query including a description of the required credentials associated with the task. The system can then transmit the query to at least one external source for the external source to identify one or more user identities with a threshold level of credentials associated with the required credentials associated with the task. In an illustrative example, the query can be sent to a social network, such as LinkedIn, and any data associated with an individual can be analyzed. The credentials of the individual can be matched with any criteria generated by the system to determine whether the individual meets a threshold level of experience for a particular task, such as a predetermined number of credentials, degrees, or achievements. The system can then receive source data in response to the query. The source data can identify one or more user identities with a threshold level of credentials relative to the required credentials associated with the task. The system can then generate access permissions for at least one computing device to allow the one or more user identities with the threshold level of credentials to access task data defining a task description, a task timeline, and / or at least one file associated with the task.

[0098] It should be appreciated that the subject matter described above can be implemented as a computer-controlled device, a computer process, a computing system, or as an article of manufacture such as a computer-readable storage medium. The operations of the exemplary method are shown in individual boxes and are summarized with reference to these boxes. The method is illustrated as a logical flow of boxes, each of which can represent one or more operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the operations represent computer-executable instructions stored on one or more computer-readable media, which, when executed by one or more processors, enable the one or more processors to perform the operations.

[0099] Typically, computer executable instructions include routines, programs, objects, modules, components, data structures, etc. that perform specific functions or implement specific abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be performed in any order, combined in any order, subdivided into multiple sub-operations, and / or performed in parallel to implement the described processes. The described processes can be performed by resources associated with one or more devices (such as one or more internal or external CPUs or GPUs) and / or one or more hardware logic units (such as field programmable gate arrays ("FPGAs"), digital signal processors ("DSPs"), or other types of accelerators).

[0100] All methods and processes described above can be embodied in software code modules executed by one or more general-purpose computers or processors and fully automated via the software code modules. The code modules can be stored in any type of computer-readable storage medium or other computer storage device, such as those described below. Some or all methods may alternatively be embodied in special-purpose computer hardware, such as described below.

[0101] Any routine description, element or box in the flowcharts described herein and / or depicted in the accompanying drawings should be understood to potentially represent a module, segment or portion of code, which includes one or more executable instructions for implementing a specific logical function or element in the routine. Alternative implementations are included within the scope of the examples described herein, wherein elements or functions may be deleted or executed out of order from what is shown or discussed, including substantially synchronously or in reverse order, depending on the functions involved, as will be understood by those skilled in the art.

[0102] Fig.11 1004 . ...

[0103] As illustrated, a communication session 1104 may be implemented between a plurality of client computing devices 1106(1)-1106(N) (where N is a number having a value of two or greater) associated with or as part of the system 1102. The client computing devices 1106(1)-1106(N) enable users (also referred to as individuals) to participate in the communication session 1104.

[0104] In this example, system 1102 hosts communication session 1104 via one or more networks 1108. That is, system 1102 can provide services that enable client computing devices 1106(1)-1106(N) to participate in communication session 1104 (e.g., via live viewing and / or recorded viewing). Thus, "participants" of communication session 1104 can include users and / or client computing devices (e.g., multiple users can be in a room participating in a communication session via use of a single client computing device), each of which can communicate with other participants. Alternatively, communication session 1104 can be hosted by one of client computing devices 1106(1)-1106(N) utilizing peer-to-peer technology. System 1102 can also host chat conversations and other team collaboration functionality (e.g., as part of an application suite).

[0105] In some implementations, such chat conversations and other team collaboration functions are considered external communication sessions distinct from the communication session 1104. The computing system 1102 that collects participant data in the communication session 1104 can be linked to such external communication sessions. Thus, the system can receive information, such as date, time, session details, etc., that enables connection to such external communication sessions. In one example, a chat conversation can be conducted in accordance with the communication session 1104. Additionally, the system 1102 can host the communication session 1104, which includes at least a plurality of participants co-located at a meeting location (such as a conference room or auditorium) or located in different locations.

[0106] In the examples described herein, client computing devices 1106(1) to 1106(N) participating in a communication session 1104 are configured to receive communication data and present it on a user interface of a display screen for display. The communication data can include a collection of various instances or streams of live content and / or recorded content. The collection of various instances or streams of live content and / or recorded content can be provided by one or more cameras, such as a video camera. For example, individual streams of live or recorded content can include media data associated with a video feed provided by a video camera (e.g., audio and video data capturing the appearance and voice of users participating in the communication session). In some implementations, the video feed can include such audio and visual data, one or more still images, and / or one or more avatars. The one or more still images can also include one or more avatars.

[0107] Another example of an individual stream of live or recorded content can include media data, the media data including the avatars of the users participating in the communication session and the audio data capturing the users' voices. Yet another example of an individual stream of live or recorded content can include media data, the media data including the files displayed on the display screen and the audio data capturing the users' voices. Therefore, the various streams of live or recorded content within the communication data enable remote conferencing to be facilitated between groups of people and content sharing within any group of people. In some implementations, the various streams of live or recorded content within the communication data can originate from a plurality of co-located video cameras in a space (such as a room) to record or live stream a presentation item including one or more individual presentations and one or more individuals consuming the presented content.

[0108] Participants or attendees can view the content of the communication session 1104 live when the activity occurs, or alternatively, view it via a record at a later time after the activity occurs. In the example described herein, the client computing devices 1106 (1) to 1106 (N) participating in the communication session 1104 are configured to receive and present communication data to be displayed on a user interface of a display screen. The communication data can include a collection of various instances or streams of live and / or recorded content. For example, an individual stream of content can include media data associated with a video feed (e.g., audio and visual data capturing the appearance and voice of users participating in the communication session). Another example of an individual stream of content can include media data having an avatar of a user participating in a conference session and audio data capturing the user's voice. Yet another example of an individual stream of content can include media data having content items displayed on a display screen and / or audio data capturing the user's voice. Therefore, the various streams of content within the communication data enable conferences or broadcast presentations to be facilitated between groups of people dispersed across remote locations.

[0109] A participant or attendee of a communication session is a person within range of a camera or other image and / or audio capture device, such that the actions and / or sounds of the individual generated while the individual is viewing and / or listening to content shared via the communication session can be captured (e.g., recorded). For example, a participant may be sitting in a crowd viewing content shared live at a broadcast location where a stage presentation is occurring. Alternatively, a participant may be sitting in an office conference room viewing shared content of a communication session with other colleagues via a display screen. Even further, a participant may be sitting or standing in front of a personal device (e.g., a tablet computer, a smartphone, a computer, etc.) viewing the shared content of a communication session alone in his or her office or home.

[0110] Fig.11 The system 1102 includes device(s) 1110. Device(s) 1110 and / or other components of the system 1102 can include distributed computing resources that communicate with each other and / or with client computing devices 1106(1) through 1106(N) via one or more networks 1108. In some examples, the system 1102 may be a stand-alone system that is tasked with managing aspects of one or more communication sessions, such as communication session 1104. For example, the system 1102 may be managed by an entity such as Slack, WEBEX, GOTOMEETING, GOOGLE HANGOUTS, etc.

[0111] The network(s) 1108 may include, for example, a public network such as the Internet, a private network such as an institutional and / or personal intranet, or some combination of private and public networks. The network(s) 1108 may also include any type of wired and / or wireless network, including, but not limited to, a local area network ("LAN"), a wide area network ("WAN"), a satellite network, a cable network, a Wi-Fi network, a WiMax network, a mobile communication network (e.g., 3G, 4G, etc.), or any combination thereof. The network(s) 1108 may utilize communication protocols, including packet-based and / or datagram-based protocols, such as the Internet Protocol ("IP"), the Transmission Control Protocol ("TCP"), the User Datagram Protocol ("UDP"), or other types of protocols. In addition, the network(s) 1108 may also include a plurality of devices that facilitate network communications and / or form a hardware foundation for the network, such as switches, routers, gateways, access points, firewalls, base stations, repeaters, backbone devices, etc.

[0112] In some examples, network(s) 1108 may also include devices that enable connection to wireless networks, such as wireless access points (“WAPs”). Examples support connection via WAPs that send and receive data over various electromagnetic frequencies (e.g., radio frequencies), including WAPs that support the Institute of Electrical and Electronics Engineers (“IEEE”) 802.11 standards (e.g., 802.11g, 802.11n, 802.11ac, etc.) and other standards.

[0113] In various examples, (one or more) devices 1110 may include one or more computing devices that operate in a cluster or other grouping configuration to share resources, balance loads, improve performance, provide failover support or redundancy, or for other purposes. For example, (one or more) devices 1110 may belong to various types of devices, such as conventional server type devices, desktop computer type devices, and / or mobile type devices. Therefore, although illustrated as a single type of device or server type device, (one or more) devices 1110 may include multiple device types and are not limited to a particular type of device. (One or more) devices 1110 may represent, but are not limited to: a server computer, a desktop computer, a network server computer, a personal computer, a mobile computer, a laptop computer, a tablet computer, or any other type of computing device.

[0114] A client computing device (e.g., one of client computing device(s) 1106(1)-1106(N)), each of which is also referred to herein as a "data processing system"), may belong to a variety of categories of devices that may be the same as or different from device(s) 1110, such as a conventional client-type device, a desktop-type device, a mobile-type device, a dedicated-type device, an embedded-type device, and / or a wearable-type device. Thus, client computing devices can include, but are not limited to, desktop computers, game consoles and / or gaming devices, tablet computers, personal data assistants (“PDAs”), mobile phone / tablet hybrid devices, laptop computers, telecommunication devices, computer navigation-type client computing devices, such as satellite-based navigation systems including global positioning system (“GPS”) devices, wearable devices, virtual reality (“VR”) devices, augmented reality (“AR”) devices, implanted computing devices, automotive computers, network televisions, thin clients, terminals, Internet of Things (“IoT”) devices, workstations, media players, personal video recorders (“PVRs”), set-top boxes, cameras, integrated components (e.g., peripheral devices) for inclusion in computing devices, appliances, or any other type of computing device. Furthermore, the client computing devices may include combinations of the earlier listed examples of client computing devices, such as, for example, a desktop computer-type device or a mobile-type device combined with a wearable device, etc.

[0115] The various classes and device types of client computing devices 1106(1) to 1106(N) can represent any type of computing device having one or more data processing units 1192 operably connected to a computer-readable medium 1194 via a bus 1116, which in some instances can include a system bus, a data bus, an address bus, a PCI bus, a Mini-PCI bus, and one or more of any of a variety of local, peripheral and / or independent buses.

[0116] The executable instructions stored on the computer-readable medium 1194 may include, for example, an operating system 1119 , a client module 1120 , a profile module 1122 , and other modules, programs, or applications that can be loaded and executed by the data processing unit(s) 1192 .

[0117] The client computing device(s) 1106(1)-1106(N) may also include one or more interfaces 1124 to enable communications between the client computing device(s) 1106(1)-1106(N) and other network devices, such as device(s) 1110, over the network(s) 1108. Such network interface(s) 1124 may include one or more network interface controllers (NICs) or other types of transceiver devices to send and receive communications and / or data over the network. In addition, the client computing device(s) 1106(1)-1106(N) can include input / output ("I / O") interfaces (devices) 1126 that support communication with input / output devices, such as user input devices, including peripheral input devices (e.g., game controllers, keyboards, mice, pens, voice input devices (such as microphones), video cameras for obtaining and providing video feeds and / or still images, touch input devices, gesture input devices, etc.), and / or output devices, including peripheral output devices (e.g., displays, printers, audio speakers, tactile output devices, etc.). Fig.11 The client computing device 1106 ( 1 ) is illustrated as being connected in some manner to a display device (eg, display screen 1129 (N)) that is capable of displaying a UI according to the techniques described herein.

[0118] exist Fig.11 In the exemplary environment 1100 of FIG. 1 , client computing devices 1106(1) to 1106(N) can use their respective client modules 1120 to connect to each other and / or to other external devices (one or more) in order to participate in a communication session 1104 or to contribute to an activity in a collaborative environment. For example, a first user can utilize client computing device 1106(1) to communicate with a second user of another client computing device 1106(2). When executing client modules 1120, the users can share data, which can cause client computing device 1106(1) to connect to system 1102 and / or other client computing devices 1106(2) to 1106(N) via network(s) 1108.

[0119] The client computing device(s) 1106(1) to 1106(N) may use their respective profile modules 1122 to generate participant profiles (in Fig.11), and provide the participant profile to other client computing devices and / or to device(s) 1110 of system 1102. The participant profile may include one or more identities of a user or a group of users (e.g., name, unique identifier (“ID”), etc.), user data such as personal data, machine data such as location (e.g., IP address, room in a building, etc.) and technical capabilities, etc. The participant profile may be used to register the participant for the communication session.

[0120] As in Fig.11 , the device(s) 1110 of the system 1102 include a server module 1130 and an output module 1132. In this example, the server module 1130 is configured to receive media streams 1134(1) to 1134(N) from individual client computing devices, such as client computing devices 1106(1) to 1106(N). As described above, the media streams can include a video feed (e.g., audio and visual data associated with a user), audio data to be output with a presentation of an avatar of the user (e.g., an audio-only experience in which the user's video data is not sent), text data (e.g., a text message), file data, and / or screen sharing data (e.g., a document, a slideshow, an image, a video displayed on a display screen, etc.), etc. Thus, the server module 1130 is configured to receive a collection of various media streams 1134(1) to 1134(N) (the collection is referred to herein as "media data 1134") during a live view of the communication session 1104. In some scenarios, not all client computing devices participating in the communication session 1104 provide media streams. For example, a client computing device may be a consuming or “listening” device only, such that it only receives content associated with the communication session 1104 but does not provide any content to the communication session 1104.

[0121] In various examples, server module 1130 can select aspects of media stream 1134 to be shared with individual client devices of participating client computing devices 1106(1)-1106(N). Accordingly, server module 1130 can be configured to generate session data 1136 based on stream 1134 and / or pass session data 1136 to output module 1132. Output module 1132 can then transmit communication data 1139 to client computing devices (e.g., client computing devices 1106(1)-1106(3) participating in a live view of a communication session). Communication data 1139 can include video, audio, and / or other content data provided by output module 1132 based on content 1150 associated with output module 1132 and based on received session data 1136.

[0122] As shown, output module 1132 sends communication data 1139(1) to client computing device 1106(1), and sends communication data 1139(2) to client computing device 1106(2), and sends communication data 1139(3) to client computing device 1106(3), etc. The communication data 1139 sent to the client computing devices can be the same or different (e.g., the positioning of the content stream within the user interface can differ from one device to the next).

[0123] In various embodiments, the device(s) 1110 and / or the client module 1120 can include a GUI presentation module 1140. The GUI presentation module 1140 can be configured to analyze the communication data 1139 for delivery to one or more client computing devices 1106. Specifically, the UI presentation module 1140 at the device(s) 1110 and / or the client computing device 1106 can analyze the communication data 1139 to determine an appropriate manner for displaying the video, image, and / or content on the display screen 1129 of the associated client computing device 1106. In some implementations, the GUI presentation module 1140 can provide the video, image, and / or content to a presentation GUI 1146 rendered on the display screen 1129 of the associated client computing device 1106. The presentation GUI 1146 can be rendered on the display screen 1129 by the GUI presentation module 1140. The presentation GUI 1146 can include the video, image, and / or content analyzed by the GUI presentation module 1140.

[0124] In some implementations, the presentation GUI 1146 may include multiple sections or grids that may present or include video, images, and / or content for display on the display screen 1129. For example, a first section of the presentation GUI 1146 may include a video feed of a presenter or individual, and a second section of the presentation GUI 1146 may include a video feed of an individual consuming conference information provided by the presenter or individual. The GUI presentation module 1140 may populate the first and second sections of the presentation GUI 1146 in a manner that appropriately mimics an ambient experience that the presenter and individual may be sharing.

[0125] In some implementations, the GUI presentation module 1140 can magnify or provide a zoomed view of the individual represented by the video feed to highlight the individual's reactions to the presenter, such as facial features. In some implementations, the presentation GUI 1146 can include video feeds of multiple participants associated with a conference such as a general communication session. In other implementations, the presentation GUI 1146 can be associated with a channel such as a chat channel, an enterprise team channel, etc. Thus, the presentation GUI 1146 can be associated with an external communication session that is different from a general communication session.

[0126] Fig.12 A diagram showing exemplary components of an exemplary device 1200 (also referred to herein as a "computing device") configured to generate data for some user interfaces disclosed herein is illustrated. Device 1200 can generate data that can include one or more parts that can present or include video, images, virtual objects, and / or content for display on display screen 1129. Device 1200 can represent one of the devices described herein. Additionally or alternatively, device 1200 may not be one of client computing devices 1106.

[0127] As illustrated, device 1200 includes one or more data processing units 1202, computer-readable media 1204, and communication interface(s) 1206. The components of device 1200 are operably connected, for example, via bus 1209, which may include one or more of a system bus, a data bus, an address bus, a PCI bus, a Mini-PCI bus, and any kind of local, peripheral, and / or independent bus.

[0128] As utilized herein, data processing unit(s) (such as data processing unit(s) 1202 and / or data processing unit(s) 1192) may represent, for example, a CPU-type data processing unit, a GPU-type data processing unit, a field programmable gate array (“FPGA”), another type of DSP, or other hardware logic components that may be driven by a CPU in some cases. For example, but not limited to, illustrative types of hardware logic components that may be used include application specific integrated circuits (“ASICs”), application specific standard products (“ASSPs”), systems on chips (“SOCs”), complex programmable logic devices (“CPLDs”), and the like.

[0129] As used herein, computer-readable media such as computer-readable media 1204 and computer-readable media 1194 may store instructions that can be executed by (one or more) data processing units. The computer-readable media may also store instructions that can be executed by an external data processing unit (such as an external CPU, an external GPU) and / or can be executed by an external accelerator (such as an FPGA-type accelerator, a DSP-type accelerator, or any other internal or external accelerator). In various examples, at least one of the CPU, GPU, and / or accelerator is incorporated into the computing device, while in some examples, one or more of the CPU, GPU, and / or accelerator is external to the computing device.

[0130] Computer readable media (also referred to herein as computer readable media) may include computer storage media and / or communication media. Computer storage media may include one or more of volatile memory, non-volatile memory and / or other persistent and / or secondary computer storage media, removable and non-removable computer storage media implemented in any method or technology for storing information such as computer readable instructions, data structures, program modules or other data. Thus, computer storage media includes media in tangible and / or physical form contained in a device and / or as a hardware component that is part of the device or external to the device, including, but not limited to: random access memory ("RAM"), static random access memory ("SRAM"), dynamic random access memory ("DRAM"), phase change memory ("PCM"), read-only memory ("ROM"), erasable programmable read-only memory ("EPROM"), electrically erasable programmable read-only memory ("EEPROM"), flash memory, compact disk read-only memory ("CD-ROM"), digital versatile disk ("DVD"), optical cards or other optical storage media, cassettes, magnetic tape, magnetic disk storage devices, magnetic cards or other magnetic storage devices or media, solid-state memory devices, storage arrays, network attached storage devices, storage area networks, hosted computer storage devices, or any other storage memory, storage devices, and / or storage media that can be used to store and maintain information for access by a computing device.

[0131] In contrast to computer storage media, communication media may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism. As defined herein, computer storage media does not include communication media. That is, computer storage media does not include communication media consisting only of a modulated data signal, a carrier wave, or a propagated signal itself.

[0132] The communication interface(s) 1206 may represent, for example, a network interface controller ("NIC") or other type of transceiver device to send and receive communications over a network. Additionally, the communication interface(s) 1206 may include one or more video cameras and / or audio devices 1222 to enable the generation of video feeds and / or still images, etc.

[0133] In the illustrated example, computer-readable medium 1204 includes data store 1208. In some examples, data store 1208 includes a data store such as a database, a data warehouse, or other type of structured or unstructured data storage device. In some examples, data store 1208 includes a corpus and / or a relational database having one or more tables, indexes, stored processes, etc. to enable data access, including, for example, one or more Hypertext Markup Language ("HTML") tables, Resource Description Framework ("RDF") tables, Web Ontology Language ("OWL") tables, and / or Extensible Markup Language ("XML") tables.

[0134] Data store 1208 may store data used for operations of processes, applications, components, and / or modules stored in computer-readable medium 1204 and / or executed by data processing unit(s) 1202 and / or accelerator(s). For example, in some examples, data store 1208 may store session data 1210 (e.g., as described in Fig.11 ), profile data 1212 (e.g., associated with a participant profile), and / or other data. The session data 1210 can include the total number of participants (e.g., users and / or client computing devices) in the communication session, the activities occurring in the communication session, a list of invitees for the communication session, and / or other data related to when and how the communication session is conducted or hosted. The data store 1208 can also include content data 1214, such as content including video, audio, or other content for presentation and display on one or more display screens 1129.

[0135] Alternatively, some or all of the data cited above can be stored on a separate memory 1216 on one or more data processing units 1202, such as a memory on a CPU-type processor, a GPU-type processor, an FPGA-type accelerator, a DSP-type accelerator, and / or other accelerator. In this example, the computer-readable medium 1204 also includes an operating system 1218 and (one or more) application programming interfaces 1210 (APIs), which are configured to expose the functions and data of the device 1200 to other devices. In addition, the computer-readable medium 1204 includes one or more modules, such as a server module 1230, an output module 1232, and a GUI rendering module 1240, but the number of modules illustrated is only an example, and the number can vary higher or lower. That is, the functions associated with the illustrated modules described herein can be performed by a smaller number of modules or a larger number of modules on one device, or distributed across multiple devices.

[0136] It should also be appreciated that many variations and modifications may be made to the examples described above, the elements of which will be understood to be within other acceptable examples. All such modifications and variations are intended to be included within the scope of this disclosure and protected by the following claims.

[0137] Finally, although various configurations have been described in language specific to structural features and / or methodological acts, it should be understood that the subject matter defined in the attached representations is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed subject matter.

Claims

1. A method for improving the efficiency of a data processing system, the method being performed by the data processing system and comprising: monitoring input data defining user activity of a plurality of users for identifying keywords from said user activity associated with at least one of a document, a message, a channel thread, an audio recording, or a communication stream; analyzing the keywords that meet a threshold requirement to identify a task and at least one user identity associated with the task; generating a task description based on the keywords; analyzing user activity data associated with the at least one user identity associated with the task, wherein the user activity data indicates a frequency of use of a plurality of delivery software applications and a plurality of delivery files; transmitting the task description to at least one delivery software application of a plurality of delivery software applications having a threshold usage level, wherein the transmitting causes the at least one delivery software application to display the task description in a user interface; and The task description is embedded in at least one delivery file of the plurality of delivery files having the threshold usage level.

2. The method according to claim 1, wherein: Analyzing the keywords to identify tasks further includes analyzing the keywords to identify task timelines associated with the tasks, wherein the method further includes: transmitting the task timeline to the at least one delivery software application having the threshold usage level, wherein the transmitting causes the at least one delivery software application to display the task timeline in the user interface; and The task timeline is embedded in the at least one delivery file having the threshold usage level.

3. The method according to claim 1, wherein: analyzing the at least one of the document, the message, the channel thread, the audio recording, or the communication stream to identify a file associated with the task, wherein the method further comprises: transmitting the file or an identifier for the file to the at least one delivery software application having the threshold usage level, wherein the transmitting causes the at least one delivery software application to display at least a portion of the file or the identifier for the file in the user interface; and At least a portion of the file or the identifier for the file is embedded in the at least one delivery file having the threshold usage level.

4. The method according to claim 3, further comprising: determining access permissions associated with the file based on the at least one user identity; as well as The access permissions are assigned to the at least a portion of the file embedded in the delivery file.

5. The method according to claim 3, further comprising: determining access permissions associated with the file based on the at least one user identity; as well as The access permissions are assigned to the file transmitted to the at least one delivery software application.

6. The method according to claim 3, further comprising: Analyzing the user activity data associated with the at least one user identity associated with the task, wherein the user activity data indicates usage time of the at least one delivery software application, wherein transmitting the file or the identifier for the file to the at least one delivery software application is based on the usage time of the at least one delivery software application.

7. The method according to claim 1, further comprising: Analyzing user activity learning data defining user activities associated with the at least one user identity associated with the task, wherein the user activity data indicates a usage time of the at least one delivery file, wherein embedding the task description in the at least one delivery file is based on the usage time of the at least one delivery file.

8. The method according to claim 1, further comprising: determining that the delivery software application does not meet the threshold usage level; as well as In response to determining that the delivery software application does not meet the threshold usage level, causing the task description to be displayed in an operating system notification, wherein the operating system notification is displayed according to a delivery schedule based on the user activity data.

9. The method according to claim 1, wherein: The plurality of delivery software applications includes at least one of: a text application, a word processing application, a spreadsheet application, a presentation editing application, a channel communication application, a video and audio communication application, or a calendar application.

10. The method according to claim 1, further comprising: analyzing the task description to identify required credentials associated with the task; generating a query including a description of required credentials associated with the task; transmitting the query to at least one external source for causing the external source to identify one or more user identities having a threshold level of credentials relative to required credentials associated with the task; and Source data is received in response to the query, the source data identifying the one or more user identities having the threshold level of credentials relative to required credentials associated with the task.

11. The method according to claim 10, further comprising: Access permissions are generated for at least one computing device to allow the one or more user identities having the threshold level of credentials to access task data defining the task description, task timeline, or at least one file associated with the task.

12. A method for improving the efficiency of a data processing system, comprising: monitoring input data defining user activity of a plurality of users for identifying keywords from at least one of a document, a message, a channel thread, an audio recording, or a communication stream; analyzing the keywords to identify a task, a timeline for the task, and at least one user identity associated with the task; analyzing calendar data defining a schedule for the at least one user identity to determine that a conflict exists between an appointment on the schedule and the timeline for the task; generating a notification describing the conflict in response to determining that the conflict exists between the appointment and the timeline for the task; analyzing user activity data associated with the at least one user identity associated with the task, wherein the user activity data indicates a frequency of use of a plurality of delivery software applications and a plurality of delivery files; and A task description and the timeline for the task are transmitted to at least one computing device, the transmitting causing display of the task description, the timeline for the task, and the notification describing the conflict, wherein the display is embedded in at least one delivery software application of the plurality of delivery software applications having a threshold usage level or at least one delivery file of the plurality of delivery files.

13. The method according to claim 12, wherein: The appointment has an associated priority, wherein the method further comprises: determining that the priority of the appointment satisfies a threshold level; A notification is transmitted to user identities associated with other tasks that are dependent on the task in response to determining that the priority of the appointment satisfies the threshold level.

14. The method according to claim 12, wherein: The appointment has an associated priority, wherein the method further comprises: determining that the priority of the engagement does not meet a threshold level; A notification is transmitted to the at least one user identity associated with the task in response to determining that the priority of the appointment does not satisfy the threshold level.

15. The method according to claim 14, wherein: The notification of the at least one user identity causes display of a graphical element configured to resolve the conflict, wherein a user response to the graphical element causes the system to perform at least one of: removing the appointment, or generating a recommendation for a new time for the appointment that does not conflict with the task timeline.

Citation Information

Patent Citations

  • Method and apparatus to provide advertisement data

    CN103870269A

  • Automated scheduling of to-do items within a calendar

    US20100169146A1

  • System and method for extracting calendar events from free-form email

    US20110106892A1

  • Providing users with insights into their day

    US20180060826A1