NATURAL LANGUAGE CALENDAR
The described calendar system receives a natural language calendar request and parses the calendar request to generate one or more request components. The calendar system determines a calendar function based on the one or more request components, such as adding a meeting, modifying a meeting, or searching a calendar for keywords. If the calendar function is a new meeting, the calendar system identifies target calendars, e.g. calendars associated with one or more meeting invitees. Using the target calendars, the calendar system determines a list of open time slots in each of the target calendars. The calendar system provides the list of open time slots to the requester who chooses a meeting time slot from the list of open time slots. In response to receiving the selection, the calendar system causes a new meeting to be added to each of the target calendars in the meeting time slot.
1 . A computer implemented method comprising:
parsing a calendar request and generating one or more request components,
wherein the calendar request is based on a natural language input,
wherein the one or more request components include a contact request component identifying a meeting invitee, and
wherein the meeting invitee is identified based on a comparison between text from the calendar request and one or more contacts of a requester who initiated the calendar request;
identifying target calendars including at least (A) a calendar associated with the requester and (B) a calendar associated with the meeting invitee;
determining a list of open time slots, wherein each open time slot in the list of open time slots is selected based on that time slot being open in each of the target calendars;
sending, to a client device associated with the requester, the list of open time slots;
receiving a selection of a meeting time slot, selected from the list of open time slots; and
in response to receiving the selection, causing an invitation for a new meeting to be sent to the meeting invitee.
2 . The computer implemented method of claim 1 , wherein the parsing the calendar request and generating the one or more request components further comprises:
comparing content from the calendar request to one or more mappings that map terms or phrases to semantics; and
generating at least one semantic request component based on one or more matches between the text from the calendar request and the one or more mappings;
wherein the method further comprises determining, based on the at least one semantic request component, that the calendar request is a request to setup a new meeting; and
wherein the determining the list of open time slots and causing an invitation for a new meeting to be sent to the meeting invitee are both in response to the determining that the calendar request is a request to setup a new meeting.
3 . The computer implemented method of claim 1 , wherein the natural language input is text input or audio input.
4 . The computer implemented method of claim 1 , wherein the parsing the calendar request to generate one or more request components further comprises selecting content between quotation marks to generate a string request component; and wherein a title for the new meeting is determined based on the string request component.
5 . The computer implemented method of claim 1 , further comprising:
causing a calendar application to render a calendar interface, including a text input field, on a display of a client device, the calendar interface displaying a representation of the calendar associated with the requester,
wherein the received calendar request was entered as text to the text input field; and
wherein the sending the list of open time slots causes rendering of the list of open time slots on a display of the client device.
6 . The computer implemented method of claim 1 ,
wherein the comparison between text from the calendar request and one or more contacts of a requester comprises accessing one or more contact lists associated with the requester;
wherein the parsing the calendar request and generating the one or more request components further comprises generating the at least one contact request component based on one or more matches between the text from of the calendar request and the one or more contact entries in the one or more accessed contacts lists; and
wherein at least one of the generated contact request components includes information, taken from the accessed contact list, that was not part of the calendar request.
7 . The computer implemented method of claim 1 , wherein the parsing the calendar request and generating the one or more request components further comprises:
identifying content from the calendar request as indicating a duration; and
generating a duration request component, the duration request components including a computed duration value based on a corresponding portion of the calendar request,
wherein the determining the list of open time slots comprises determining open time slots that are as large as the duration value.
8 . The computer implemented method of claim 1 , wherein the parsing the calendar request and generating the one or more request components further comprises:
identifying content from the calendar request as indicating a date; and
generating a date request component, the date request components including a computed date value based on a corresponding portion of the calendar request,
wherein the determining the list of open time slots comprises determining open time slots that match the date value.
9 . The computer implemented method of claim 1 , wherein determining the list of open time slots comprises:
determining a category for the calendar request; and
limiting the list of open time slots to open time slots that fall within a timeframe or date range established for the category.
10 . The computer implemented method of claim 1 wherein determining the list of open time slots further comprises limiting the number of open time slots to a predetermined number of open time slots.
11 . A non-transitory computer-readable medium storing computer-executable code that, when executed by a computing system, cause the computing system to perform operations comprising:
receiving a calendar request;
parsing the calendar request and generating one or more request components;
identifying one or more target calendars including at least one calendar associated with a contact of a requester who initiated the request;
determining open time slots, wherein each particular open time slot of the open time slots is selected based on that particular time slot being open in each of the target calendars;
receiving a selection of a meeting time slot, selected from the open time slots; and
in response to receiving the selection, causing a new meeting to be added, in the meeting time slot, to a calendar of the requester.
12 . The non-transitory computer-readable medium of claim 11 , wherein the causing the new meeting to be added, in the meeting time slot, to the calendar of the requestor comprises:
sending a meeting command to a calendar server to have the new meeting created.
13 . The non-transitory computer-readable medium of claim 11 , wherein the selection of a meeting time slot is received from a client device, the selection received in response to the sending of the list of open time slots to the client device.
14 . The non-transitory computer-readable medium of claim 11 , wherein the calendar request is a natural language request.
15 . The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:
causing a calendar application to render a calendar interface, including a text input field, on a display of a client device, the calendar interface displaying a representation of the calendar associated with the requester,
wherein the received calendar request was entered as text to the text input field; and
wherein the sending the list of open time slots causes rendering of the list of open time slots on a display of the client device.
16 . The non-transitory computer-readable medium of claim 11 , wherein the parsing the calendar request and generating the one or more request components further comprises:
comparing content from the calendar request to one or more mappings that map terms or phrases to semantics; and
generating at least one semantic request component based on one or more matches between the text from the calendar request and the one or more mappings;
wherein the method further comprises determining, based on the at least one semantic request component, that the calendar request is a request to setup a new meeting; and
wherein the determining the list of open time slots and causing an invitation for a new meeting to be sent to the invitee are both in response to the determining that the calendar request is a request to setup a new meeting.
17 . The non-transitory computer-readable medium of claim 16 , wherein the parsing the calendar request and generating the one or more request components further comprises:
identifying content from the calendar request as indicating a duration; and
generating a duration request component, the duration request components including a computed duration value based on a corresponding portion of the calendar request,
wherein the determining the list of open time slots comprises determining open time slots that are as large as the duration value.
18 . The non-transitory computer-readable medium of claim 16 , wherein the parsing the calendar request and generating the one or more request components further comprises:
identifying content from the calendar request as indicating a date; and
generating a date request component, the date request components including a computed date value based on a corresponding portion of the calendar request,
wherein the determining the list of open time slots comprises determining open time slots that match the date value.
19 . The non-transitory computer-readable medium of claim 11 ,
wherein the identifying the one or more target calendars including the at least one calendar associated with a contact of a requester who initiated the request is based on a comparison between text from the calendar request and one or more contacts of the requester, wherein the comparison comprises accessing a contact list associated with the requester;
wherein the parsing the calendar request and generating the one or more request components further comprises generating the at least one contact request component based on one or more matches between the text from of the calendar request and the one or more contact entries in the one or more accessed contacts lists; and
wherein at least one of the generated contact request components includes information, taken from the accessed contact list, that was not part of the calendar request.
20 . An apparatus comprising:
a memory configured to store instructions; and
a processor configured to execute instructions to:
receive, from a requester, a calendar request that identifies a meeting invitee;
parse the calendar request and generate one or more request components, wherein at least one of the request components identifies a meeting invitee;
identify one or more target calendars including at least a calendar associated with the meeting invitee, wherein the calendar associated with the meeting invitee is identified based on a comparison of text of the calendar request with contacts of the requestor;
determine open time slots, wherein each particular open time slot of the open time slots is selected based on that particular time slot being open in each of the one or more target calendars;
send, to a client device associated with the requester, indications of the open time slots; and
receive, from the client device, a selection of a meeting time slot, selected from the open time slots.