Using an electronic application to schedule meetings is common practice in and among businesses and other groups. However, for many invitees, more is required than mere attendance at the meeting. For example, some invitees may be required to prepare presentation materials, complete assigned action items prior to the meeting, or otherwise be prepared to discuss the meeting topics.
As provided herein, a “meeting organizer” is any person who initiates a meeting using an electronic scheduling system. An agenda, or task list, is a list of tasks associated with the meeting for discussion or completion before the meeting. In the example described, a meeting organizer initiates a meeting using an electronic scheduling system and invites at least one invitee. The meeting may include an agenda with at least one task that is assigned to at least one invitee.
With conventional systems, the meeting organizer is responsible for initiating a meeting request and providing an agenda, which may include task assignments. However, there is currently no centralized system to assign and/or track the progress of tasks that need to be completed before the meeting. Further, invitees must often scramble when they realize that tasks were assigned for completion before the meeting.
It is with respect to these and other general considerations that the aspects disclosed herein have been made. Also, although relatively specific problems may be discussed, it should be understood that the examples should not be limited to solving the specific problems identified in the background or elsewhere in this disclosure.
This patent document relates generally to systems and methods for automatically generating a calendar event for a task, wherein the task is associating with an upcoming meeting.
In one aspect, a computer-implemented method of automatically generating a calendar event for a task comprises the following steps: receiving a first indication to create a meeting with at least one invitee; receiving an agenda for the meeting, wherein the agenda includes at least one task assigned to the at least one invitee, and wherein the task is associated with a deadline; automatically generating a task invitation to the at least one invitee to complete the at least one task, the task invitation including one or more selectable time slots, wherein each of the one or more selectable time slots occurs before the deadline; and sending the meeting invitation and the task invitation to the at least one invitee.
In another aspect, a computer-implemented method of automatically generating a calendar event for a task comprises: receiving a meeting invitation for a meeting, wherein the meeting invitation includes an agenda for the meeting, identifying at least one task assigned to an invitee, scanning the invitee's calendar to identify one or more time slots for completing the at least one task; generating a task invitation to complete the at least one task, the task invitation including the one or more time slots, wherein each of the one or more times slots occurs before the meeting; receiving a selection of at least one time slot; and based on the selected time slot, automatically adding a calendar event to the invitee's calendar for completing the at least one task prior to the meeting.
In still another aspect, a computer-implemented method for automatically generating a calendar event for a task comprises: receiving a meeting invitation for a meeting, wherein the meeting invitation includes an agenda for the meeting, identifying at least one task assigned to an invitee, scanning the invitee's calendar to identify one or more time slots to complete the at least one task; generating a task invitation to complete the at least one task, the task invitation including a time slot, wherein the time slot occurs before the meeting; and automatically adding a calendar event to the invitee's calendar during the time slot to complete the at least one task prior to the meeting.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additional aspects, features, and/or advantages of examples will be set forth in part in the description, which follows and, in part, will be apparent from the description, or may be learned by practice of the disclosure.
In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations, specific embodiments or examples. These aspects may be combined, other aspects may be utilized, and structural changes may be made without departing from the present disclosure. Embodiments may be practiced as methods, systems or devices. Accordingly, embodiments may take the form of a hardware implementation, an entirely software implementation, or an implementation combining software and hardware aspects. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims and their equivalents.
With reference to
Computing device 100 may have additional features or functionality. For example, computing device 100 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
Computing device 100 may also contain a communication connection(s) 116 that may allow device 100 to communicate with other computing devices 118, such as over a network in a distributed computing environment, for example, an intranet or the Internet. Communication connection(s) 116 is one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term computer readable media as used herein may include both storage media and communication media.
A number of program modules and data files may be stored in system memory 104 of computing device 100, including an operating system 105 suitable for controlling the operation of a networked personal computer, such as the WINDOWS operating systems from MICROSOFT CORPORATION of Redmond, Wash. System memory 104 may also store one or more program modules, such as scheduling application 120, and others described below. While executing on processing unit 102 or other computing devices 118, scheduling application 120 may perform processes including, for example, one or more of the stages of the methods described below. The aforementioned process is exemplary, and processing unit 102 or other computing devices 118 may perform other processes. Other applications 106 that may be used in accordance with embodiments of the present invention may include calendaring applications, electronic mail and contacts applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer-aided application programs, etc.
A calendar application 210 (e.g., calendar application 210A operating on computing device 206A, calendar application 210B operating on computing device 206B, or calendar application 210C operating on computing device 206C) may be in communication with a scheduling application 220, wherein scheduling application 220 may be a centralized calendar application hosted on a server. For example, a first calendar application 210A of a meeting organizer may create and send a meeting invitation to an invitee, and a calendar application 210B of the invitee may add the meeting to the invitee's calendar. Either calendar application 210A or calendar application 210B may create and send a task invitation to the invitee when a meeting organizer has assigned a task to the invitee. In some aspects, calendar application 210B of the invitee may be better equipped to evaluate the invitee's calendar to identify available time slots for completing a task than calendar application 210A of the meeting organizer.
In an example, one or more task items listed in the agenda associated with a meeting may be assigned to at least one invitee. For example, the invitee's calendar application 210B may scan a meeting invitation to determine if the invitee has been assigned a task to complete before the meeting, and then the calendar application 210B may create a task invitation for the invitee to complete the task. In an embodiment, the invitee may be tagged in association with the task. For example, an @mention within the agenda may be used to assign a task to an invitee. Tagging an invitee with an @mention in the agenda may signify to the calendar application 210A or the calendar application 210B to send a task invite to the invitee for completing the task before the meeting. In aspects, either the calendar application 210A of the meeting organizer or the calendar application 210B of the invitee can function to scan the agenda for an @mention for that invitee. Once an @mention is found for that invitee, either the calendar application 210A of the meeting organizer or the calendar application 210B of the invitee can generate a task invitation.
As explained above, calendar application 210B is capable of performing meeting-related activities, such as coordinating an invitee's calendar appointments and task invites. For example, the invitee's calendar application 210B may be configured to programmatically determine the availability of the invitee to attend meetings and complete tasks. The calendar application 210B of the invitee may be configured to programmatically determine the availability of the invitee for scheduling a time slot to complete a task and may facilitate automatically adding a calendar item to the invitee's calendar to complete the task.
As should be appreciated,
At receive agenda operation 304, an agenda for the meeting is received. For example, the agenda may be received from the meeting organizer by a calendar application and may include at least one task that is assigned to at least one invitee. In an example embodiment, the agenda may include multiple tasks that are each assigned to one or more invitees, who may be the same or different. Assigning a task to an invitee may include electronically linking the invitee to the task. An example of electronically linking an invitee to a task includes tagging an invitee in association with the task. For example, an @mention may be used to assign an invitee to complete at least one task on the agenda.
At generate operation 306, a task invitation may be created for completing the task. In some cases, tagging an invitee with an @mention in the agenda may signify to the calendar application of the meeting organizer to create a task invitation to the invitee for completing the task before the meeting. Other symbols may be used to associate an invitee with a task, such as a #mention, or other similar symbols. As the calendaring application of the meeting organizer may or may not have access to the invitee's calendar, the task invitation may be generated according to one or more rules. For instance, if the task is common (e.g., the calendar application has access to crowd-sourced or user-specific data regarding the task), the task invitation may be generated based on such data. For instance, data accessible to the calendar application may indicate that a task associated with completing a PowerPoint® presentation may generally be scheduled for about two hours. Moreover, it may be determined that the particular invitee generally schedules tasks on the day before the task is due. Accordingly, in this example, a task invitation may be generated and sent to the invitee for a two-hour time slot the day before the meeting. If the calendar application of the meeting organizer has access to the invitee's calendar, the calendar application may scan the invitee's schedule for available two-hour time slots on the day before the meeting. Otherwise, the calendar application may send the task invitation to the invitee and the invitee may accept or reschedule the calendar item as the invitee's schedule allows.
At send operation 308, an indication to send the meeting invitation to the at least one invitee may be received. The meeting invitation may include the agenda, where at least one invitee is tagged with at least one task. When the indication to send the meeting invitation is received, the task invitation may also be sent to the invitee. Alternatively, the meeting invitation to the at least one invitee may include the task invitation. In an embodiment, the meeting invitation sent to each invitee is the same. In an alternative embodiment, invitees who are assigned a task are sent a different invitation than invitees who have not been assigned a task. If the meeting invitation does not include the task invitation, the meeting invitation may include a notification to the invitee that a task has been assigned for completion before the meeting occurs.
As should be appreciated,
At receive operation 402, an invitee (e.g., either the first invitee or the second invitee) may receive a meeting invitation that includes an agenda. The agenda may or may not include a tasks assigned to each invitee. In some cases, each task may be associated with a deadline, which may be the meeting date and time (collectively, “meeting time”) or some other date and time. In an embodiment, the agenda includes multiple tasks that are each assigned to one or more invitees, who may be the same or different. As explained above, a task may be electronically linked to an invitee by tagging the invitee in association with the task. For example, an @mention to the invitee within the agenda may be used to assign the task to the invitee. Tagging an invitee with an @mention signifies to the system to send a calendar task item to complete the task before the meeting. Other symbols may be used to associate an invitee with a task, such as a #mention, or other similar symbols.
At scanning operation 404, the meeting invitation may be scanned for an agenda (or other task listing) and the agenda may then be scanned for an @mention (or other similar symbol) that tags an invitee with a task. In aspects, the calendar application of an invitee may scan the meeting invitation for an agenda (or other task listing).
As used here, “scanning” the meeting invitation may comprise programmatically examining the meeting invitation to identify an agenda or other listing of task, and then scanning the agenda for tags, such as @mentions, identifying the invitee. For example, the calendar application (or an associated application) of the invitee may scan the meeting invitation for embedded content, textual or graphical content, attached documents, user callouts (e.g., @mentions), and the like. The calendar application (or an associated application) may implement any suitable technique for scanning the meeting invitation, including common techniques presently known or techniques developed in the future. Traditionally, a common approach to extract structured data from a document (e.g., the meeting invitation) uses a “wrapper” that relies on the structure of the document to extract specific pieces of information. Recent advances in extraction techniques rely on semi-structured information extraction, natural language processing (NLP) techniques, and semantic tagging and shallow parsing to build relationships between various components within a sentence. These approaches utilize recognizable keywords (e.g., an @mention) to identify specific relationships, such as tagging the invitee with a task. In aspects, any of the techniques described above, or any other technique presently known or developed in the future may be used by the calendar application to scan the meeting invitation.
At determination operation 406, it may be determined whether the invitee was tagged with a task for the meeting. For example, based on scanning the meeting invitation, the calendar application may determine whether the invitee has been tagged with a task. If an @mention was identified within the agenda for the invitee, the invitee's calendar application may proceed to parameter operation 408 to extract and/or derive task parameters for the task. Otherwise, the method may terminate.
At parameter operation 408, the calendar application of the invitee may extract and/or derive parameters for the task. For example, upon identifying an @mention tagging the invitee with a task in the agenda, the calendar application may extract additional information regarding the task, such as a description of the task (e.g., “present PowerPoint,” “provide update on launch,” “forward approved copy for brochure,” etc.), documents associated with the task (e.g., attached to the meeting request or otherwise available to the calendar application), a deadline associated with the task (e.g., the meeting time or some other deadline), other invitees assigned to the task, etc. Based on the extracted parameters for the task, the calendaring application may then derive or estimate additional parameters for the task. For instance, if the task description is “present PowerPoint,” the calendaring application may consult crowd-sourced data or invitee-specific data to determine an estimated time to complete the task. In aspects, if invitee-specific data is available, the calendaring application may prioritize such data above crowd-sourced data. That is, if the crowd-sourced data indicates that users generally spend 3 hours to prepare a PowerPoint presentation, but the invitee generally spends 2½ hours, the calendaring application may discount the crowd-sourced data and identify a completion time of 2½ hours for the task. Alternatively, invitee-specific data may be unavailable and the calendaring application may rely on the crowd-sourced data.
In aspects, the invitee-specific and/or crowd-sourced data may be drawn from the calendaring application itself or other applications. For example, a completion time for a task may be based on historical calendar or task items (e.g., an amount of time scheduled in the invitee's calendar or in the calendars of other users for similar tasks), or based on an actual time by the invitee or other users that was spent preparing and editing a document (as tracked by a presentation application, a spreadsheet application, a word-processing application, etc.). Some tasks may involve publicly available completion times (e.g., based on posted times for completion such as advertisements or other marketing or invoicing sources). As should be appreciated, the calendaring application may rely on any data available for deriving or estimating a completion time for a task.
At time slot operation 410, the calendar application may scan the invitee's calendar for available time slots prior to the deadline for completing the task. An available or open time slot is a time slot for which the invitee does not have a scheduled calendar item. In some cases, e.g., where the estimated completion time for the task may be several hours, the calendar application may divide the completion time into sub-blocks of time. For example, if the completion time is estimated to be three hours, the calendaring application may evaluate the invitee's schedule for three 1-hour time slots for completing the task. Alternatively, the calendaring application may evaluate the invitee's calendar to identify available time slots corresponding to the completion time, in this case, 3-hour time slots. In some cases, the calendaring application may identify a single suggested time slot (or sub-time slots) corresponding to the completion time; in other cases, the calendaring application may identify multiple alternative time slots (or sub-time slots) corresponding to the completion time.
At generate operation 412, the invitee's calendar application may generate and send a task invitation to the invitee for completing the task. For example, based on the extracted and/or derived parameters (collectively, parameters) for the task, and the available time slots identified in the invitee's calendar, the calendaring application may generate a task invitation. Based on the example above, the calendaring application may generate a task invitation by automatically populating a subject field with “Complete PowerPoint,” populating a date field based on an available time slot prior to the task deadline, and populating a start time and an end time based on the completion time. In some cases, e.g., where multiple invitees were assigned to the same task (particularly if the task requires the invitees to work together), the calendaring application may further populate additional invitees in an invitee field for the task invitation. For multiple invitees, the calendaring application may or may not have access to the calendars of the other invitees. If access is available, available time slots may be coordinated across the multiple invitee calendars; otherwise, the calendaring application may schedule the task during a time that is available for the first invitee (i.e., the invitee associated with the calendaring application) and the other invitees (i.e., second set of invitees) may accept the invitation or propose alternative times for the task invitation. In some cases, as identified above, the calendaring application may provide alternative time slots within the task invitation. For instance, the alternative time slots may be provided as options for selection within the task invitation. Alternatively, the calendaring application may populate the task invitation with a single time slot.
Upon generating the task invitation, the calendar application may send the task invitation to the invitee (or the invitees). In aspects, the task invitation may be sent to the invitee as an email. Alternatively, the task invitation may be provided in a popup window of the invitee's calendar when the meeting invitation is received by the calendaring application. In still other examples, the task invitation may be sent to the
At schedule operation 414, the calendar application may schedule a calendar event to complete the task. In aspects, the calendar application may schedule the task in response to receiving an “acceptance” from the invitee. In other aspects, the calendar application may schedule the task in response to receiving a selection of a time slot. In still other aspects, the calendar application may automatically schedule the task when the meeting invitation is received and analyzed. In this case, after the task invitation is generated at generate operation 412, the task invitation may be automatically converted to the calendar event and applied to the invitee's calendar rather than being sent to the invitee. In aspects, the calendar event scheduled to complete the task may include details related to the task, and can include a link to the meeting and/or other application information. As the calendar event to complete the task occurs before the meeting (or the deadline if different), the invitee will have ample time to complete the task. Moreover, as the task invitation is automatically generated upon detecting that the invitee has been assigned a task, the invitee does not need to be concerned with reviewing each meeting invitation as it is received in order to manually schedule tasks. In an embodiment, a single time slot is needed to complete the task and a single calendar event is added to the invitee's calendar. In another embodiment, a plurality of time slots are needed to complete the task, so a plurality of calendar events are added to the invitee's calendar.
As should be appreciated,
As should be appreciated,
In an example embodiment, expanded agenda tab 600 provides for sending a custom message when each task of task list 606 is completed. In aspects, the custom message may be entered into input field 610. However, as the tasks associated with task list 606 have not yet been completed, input field 610 is not selectable for input (e.g., grayed out). Custom message may be sent to the meeting organizer, or custom message may be sent to all the invitees.
As should be appreciated, the various devices, components, etc., described with respect to
In an example embodiment, assigning a task to an invitee includes automatically populating a time slot to complete the task in the invitee's calendar, and may also include automatically determining the amount of time to complete the task. That is, the system can evaluate the task and relate the current task to previous tasks to determine the size of the time slot. The system may utilize the invitee's previous completed tasks to determine the time slot. Alternatively, or in addition to, the system may crowd-source data to determine how long the task generally takes to complete. Utilizing crowd-source data may include comparing the calendars of other invitees to determine how long it took to complete the task or similar task.
In an embodiment, more than one invitee may be assigned to the same task. The system can automatically schedule a time slot at the same time for each invitee. The time slot selected is an open time slot for all the invitees and occurs before the meeting. The system may also include an option for one of the invitee to change the time slot, which would automatically change the time slot for the other invitees assigned to the same task.
Further, the time slot details regarding the task may automatically change if the meeting organizer changes the task or the details regarding the task. For example, if a task is no longer required, the meeting organizer may delete the task, and therefore the calendar time slot would be removed from the invitee's calendar. Alternatively, the meeting organizer may change the task, which would be automatically change the task as listed on the invitee's calendar.
In a further embodiment, a system may recommend an agenda or task item. If the meeting organizer accepts the recommended agenda or task item, the recommended agenda or task item is stored and processed, and calendar time slots are added to the associated invitee. If the meeting organizer rejects the recommended agenda or task item, then the recommended agenda or task item is not stored and processed to various users as described above. If desired, the meeting organizer may make corrections to the presented agenda or task item, or the meeting organizer may enter a replacement agenda or task item.
One or more application programs 866 may be loaded into the memory 862 and run on or in association with the operating system 864. Examples of the application programs include phone dialer programs, e-mail programs, personal information management (PIM) programs, word processing programs, spreadsheet programs, Internet browser programs, messaging programs, and so forth. The system 802 also includes a non-volatile storage area 868 within the memory 862. The non-volatile storage area 868 may be used to store persistent information that should not be lost if the system 802 is powered down. The application programs 866 may use and store information in the non-volatile storage area 868, such as email or other messages used by an email application, and the like. A synchronization application (not shown) also resides on the system 802 and is programmed to interact with a corresponding synchronization application resident on a host computer to keep the information stored in the non-volatile storage area 868 synchronized with corresponding information stored at the host computer. As should be appreciated, other applications may be loaded into the memory 862 and run on the mobile computing device 800, including the instructions for providing a consensus determination application as described herein (e.g., message parser, suggestion interpreter, opinion interpreter, and/or consensus presenter, etc.).
The system 802 has a power supply 870, which may be implemented as one or more batteries. The power supply 870 may further include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries.
The system 802 may also include a radio interface layer 872 that performs the function of transmitting and receiving radio frequency communications. The radio interface layer 872 facilitates wireless connectivity between the system 802 and the “outside world,” via a communications carrier or service provider. Transmissions to and from the radio interface layer 872 are conducted under control of the operating system 864. In other words, communications received by the radio interface layer 872 may be disseminated to the application programs 866 via the operating system 864, and vice versa.
The visual indicator 820 may be used to provide visual notifications, and/or an audio interface 874 may be used for producing audible notifications via an audio transducer 825 (e.g., audio transducer 825 illustrated in
A mobile computing device 800 implementing the system 802 may have additional features or functionality. For example, the mobile computing device 800 may also include additional data storage devices (removable and/or non-removable) such as, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
Data/information generated or captured by the mobile computing device 800 and stored via the system 802 may be stored locally on the mobile computing device 800, as described above, or the data may be stored on any number of storage media that may be accessed by the device via the radio interface layer 872 or via a wired connection between the mobile computing device 800 and a separate computing device associated with the mobile computing device 800, for example, a server computer in a distributed computing network, such as the Internet. As should be appreciated such data/information may be accessed via the mobile computing device 800 via the radio interface layer 872 or via a distributed computing network. Similarly, such data/information may be readily transferred between computing devices for storage and use according to well-known data/information transfer and storage means, including electronic mail and collaborative data/information sharing systems.
As should be appreciated,
As should be appreciated,
The system can evaluate the task and relate to previous tasks to determine the size of the time slot. Can look at a user themselves or crowd-source data to determine how long the task takes to complete. Could look at calendars to see how long others schedule to do the same tasks.
The various embodiments described above are provided by way of illustration only and should not be construed to limit the claims attached hereto. Those skilled in the art will readily recognize various modifications and changes that may be made without following the example embodiments and applications illustrated and described herein, and without departing from the true spirit and scope of the following claims.