US20120136572A1 - Distance and Location-Aware Reminders in a Calendar System - Google Patents

Distance and Location-Aware Reminders in a Calendar System Download PDF

Info

Publication number
US20120136572A1
US20120136572A1 US13/162,502 US201113162502A US2012136572A1 US 20120136572 A1 US20120136572 A1 US 20120136572A1 US 201113162502 A US201113162502 A US 201113162502A US 2012136572 A1 US2012136572 A1 US 2012136572A1
Authority
US
United States
Prior art keywords
event
time
location
travel time
travel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/162,502
Inventor
Kenneth S. Norton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to US13/162,502 priority Critical patent/US20120136572A1/en
Priority to PCT/US2011/040922 priority patent/WO2011160044A2/en
Assigned to GOOGLE INC. reassignment GOOGLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: NORTON, KENNETH S.
Publication of US20120136572A1 publication Critical patent/US20120136572A1/en
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: GOOGLE INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3407Route searching; Route guidance specially adapted for specific applications
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3453Special cost functions, i.e. other than distance or default speed limit of road segments
    • G01C21/3484Personalized, e.g. from learned user behaviour or user-defined profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/109Time management, e.g. calendars, reminders, meetings or time accounting
    • G06Q10/1093Calendar-based scheduling for persons or groups
    • G06Q10/1095Meeting or appointment

Definitions

  • the disclosed embodiments relate generally to reminders in a calendar system. More particularly, the disclosed embodiments relate to methods and systems for distance and location-aware reminders and scheduling assistance in an electronic calendar system.
  • Electronic calendars are increasingly used to organize our lives. Such calendars are accessed from both desktop computers and portable computing devices (e.g., laptop computers, personal digital assistants (PDAs), mobile phones, and wearable computers).
  • portable computing devices e.g., laptop computers, personal digital assistants (PDAs), mobile phones, and wearable computers.
  • One problem with calendars is providing a timely reminder so that a respective user can prepare for an upcoming event.
  • Providing a reminder at a fixed interval before the upcoming event is not always timely, because the fixed interval may not be effective for all situations. For example, a user may be at a location further away than usual from the location of the upcoming event, and the user would need a reminder earlier than usual to travel to the event location.
  • the user may ignore the reminder, and later miss or come late to the upcoming event. Therefore, there is a need for a new method and system for providing a timely reminder based on the location of the user and the distance to the event location.
  • Another problem with calendars is providing scheduling assistance that accounts for the known or predicted location of a requester or an invitee prior to a particular meeting and a distance to a meeting location. Scheduling a meeting without consideration for the travel time between meetings can result in the requester coming late to the meeting or sometimes abandoning the attendance. Therefore, there is a need for a new method and system for providing scheduling assistance that accounts for the location of the requester or the invitee and the distance to the meeting location.
  • GUIs graphical user interfaces
  • some embodiments of the invention involve a computer-implemented method of determining a time to provide an event reminder for a respective event for a respective user including, in response to a predefined triggering event, retrieving event information for the respective event, including an event location and an event start time, from an event database.
  • An origin of the respective user is obtained.
  • a travel time is determined for the respective user to travel from the origin to the event location.
  • an event reminder time is determined for the respective event, where the event reminder time includes a time at which the respective user is to be provided a reminder of the respective event.
  • a server system for determining a time to provide an event reminder for a respective event for a respective user comprises one or more processors for executing programs and memory storing one or more programs be executed by the one or more processors, the one or more programs comprising instructions executed by the one or more processors so as to perform the aforementioned method for determining a time to provide an event reminder for a respective event for a respective user.
  • a server system for determining a time to provide an event reminder for a respective event for a respective user comprises one or more processors, memory, and one or more programs stored in the memory, the one or more programs comprising instructions executed by the one or more processors so as to respond to a predefined triggering event by: retrieving, from an event database, event information for the respective event, including an event location and an event start time; and obtaining an origin of the respective user.
  • the one or more programs include instructions to determine a travel time for the respective user to travel from the origin to the event location; and to determine, in accordance with the event start time and travel time, an event reminder time for the respective event, where the event reminder time includes a time at which the respective user is to be provided a reminder of the respective event.
  • a non-transitory computer readable storage medium stores one or more programs configured for execution by a computer, the one or more programs comprising instructions for performing the aforementioned method for determining a time to provide an event reminder for a respective event for a respective user.
  • a non-transitory computer readable storage medium stores one or more programs configured for execution by one or more processors of a computer for determining a time to provide an event reminder for a respective event for a respective user, and the one or more programs comprises instructions to be executed by the one or more processors so as to respond to a predefined triggering event by: retrieving, from an event database, event information for the respective event, including an event location and an event start time; and obtaining an origin of the respective user.
  • the one or more programs include instructions to determine a travel time for the respective user to travel from the origin to the event location; and to determine, in accordance with the event start time and travel time, an event reminder time for the respective event, the event reminder time comprising a time at which the respective user is to be provided a reminder of the respective event.
  • Some embodiments involve a computer-implemented method of providing scheduling assistance, performed on a system having one or more processors and memory storing one or more programs for execution by the one or more processors.
  • the method includes, in response to a request from a requester for scheduling a meeting, extracting from the request a meeting location and a meeting start time.
  • the method also includes retrieving, from an event database, event information for a preceding event occurring before the meeting, including an event location and an event end time.
  • the method includes determining travel time from the event location to the meeting location, and identifying a potential travel time scheduling conflict when the travel time exceeds a time difference between the event end time and the meeting start time.
  • the method includes providing notification of the potential travel time scheduling conflict to the requester.
  • a server system for providing scheduling assistance comprises one or more processors for executing programs and memory storing one or more programs be executed by the one or more processors, the one or more programs comprising instructions executed by the one or more processors so as to perform the aforementioned method for providing scheduling assistance.
  • a non-transitory computer readable storage medium stores one or more programs configured for execution by a computer, the one or more programs comprising instructions for performing the aforementioned method for providing scheduling assistance.
  • Some embodiments involve a computer-implemented method of providing scheduling assistance, performed on a system having one or more processors and memory storing one or more programs for execution by the one or more processors.
  • the method includes, in response to a meeting invitation to an invitee from a requester, extracting from the meeting invitation a meeting location and a meeting start time.
  • the method also includes retrieving, from an event database, event information for a preceding event occurring before the meeting, including an event location and an event end time, the preceding event comprising a calendar event in a calendar associated with the invitee.
  • the method includes determining travel time from the event location to the meeting location, and identifying a potential travel time scheduling conflict when the travel time exceeds a time difference between the event end time and the meeting start time.
  • the method includes providing notification of the potential travel time scheduling conflict to the invitee.
  • a server system for providing scheduling assistance comprises one or more processors for executing programs and memory storing one or more programs be executed by the one or more processors, the one or more programs comprising instructions executed by the one or more processors so as to perform the aforementioned method for providing scheduling assistance.
  • a non-transitory computer readable storage medium stores one or more programs configured for execution by a computer, the one or more programs comprising instructions for performing the aforementioned method for providing scheduling assistance.
  • FIG. 1 is a block diagram illustrating an exemplary distributed computer system in accordance with some embodiments.
  • FIG. 2 is a block diagram illustrating a calendar system in accordance with some embodiments.
  • FIG. 3 is a block diagram illustrating a client, in accordance with some embodiments.
  • FIG. 4 is a block diagram illustrating an exemplary event database and an exemplary entry in the event database, in accordance with some embodiments.
  • FIG. 5 is a block diagram illustrating an exemplary travel time database and exemplary travel time records, in accordance with some embodiments.
  • FIGS. 6A and 6B are flowcharts representing a method of determining a time to provide an event reminder, in response to a predefined triggering event, in a calendar system, in accordance with some embodiments.
  • FIG. 7 is a high-level flowchart illustrating processes performed by a client and a server system, in accordance with some embodiments.
  • FIGS. 8A-8C are flowcharts representing a method of providing scheduling assistance, in response to a request from a requester for scheduling a meeting.
  • FIGS. 9A-9C are high-level flowcharts illustrating processes performed by client(s) and a server system, for providing notification of potential scheduling conflicts, in accordance with some embodiments.
  • first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another.
  • a first contact could be termed a second contact, and, similarly, a second contact could be termed a first contact, without departing from the scope of the present invention.
  • the first contact and the second contact are both contacts, but they are not the same contact.
  • the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in response to detecting,” depending on the context.
  • the phrase “if it is determined” or “if [a stated condition or event] is detected” may be construed to mean “upon determining” or “in response to determining” or “upon detecting (the stated condition or event)” or “in response to detecting (the stated condition or event),” depending on the context.
  • the term, “requester” is used to mean a person scheduling, initiating, or organizing a meeting.
  • the terms, “meeting” and “event” are used interchangeably to mean a calendar event involving one or more participants.
  • “meetings” can include both single-participant meetings (e.g., a person reserving a conference room to work alone on a confidential matter), and multiple-participant meetings.
  • the terms “meeting location” and “event location” refer to the physical location of a meeting or event, respectively, such as a conference room, other room, physical address, city, campus, campus sub-region, building, floor, and/or building sub-region.
  • the terms “invitee” and “potential participant” have been used interchangeably to mean people invited to an event, irrespective of whether they have accepted, declined, or not yet responded to the invitation.
  • the “invitees” of a meeting include the requester of the meeting.
  • the term “required attendee” is used to mean invitees whose attendance a requester has identified as required, irrespective of whether they have accepted, declined, or not yet responded to the invitation.
  • the term, “optional attendee” has been used to mean invitees whose attendance a requester has identified as optional, irrespective of whether they have accepted, declined, or not yet responded to the invitation.
  • FIG. 1 is a block diagram illustrating an exemplary distributed computer system 100 , according to certain embodiments.
  • system 100 includes one or more client computers 102 , a communications network 106 , and a calendar system 108 (sometimes called server system 108 ).
  • calendar system 108 implement the reminder time determination methods described in this document.
  • Client computers 102 can be any of a number of computing devices (e.g., Internet kiosk, personal digital assistant, cell phone, gaming device, desktop computer, laptop computer, handheld computer, or combinations thereof) used to enable the activities described below.
  • Client computer(s) 102 is also referred to herein as client(s).
  • Client 102 includes a graphical user interface (GUI) 111 .
  • GUI graphical user interface
  • Client 102 is described in greater detail below with reference to FIG. 3 .
  • Client 102 is connected to calendar system 108 via communications network 106 .
  • the GUI 111 is used to display calendar event information, including an event reminder.
  • Calendar system 108 provides a calendar service, including determining the timing of event or meeting reminders, to a community of users (e.g., the employees of a company, the members of an organization or group, the users of a facility, and the users of a web-based calendar system, such as Google Calendar) who access the calendar system from the clients 102 .
  • Calendar system 108 also provides typical calendar service, such as sending and receiving meeting invitations, accepting and/or declining meeting invitations, sending notification of acceptance/declination, storing meeting/event information, and presenting meeting/event information.
  • Calendar system 108 includes one or more servers, such as server 112 , connected to the communications network 106 .
  • the one or more servers are connected to the communications network 106 via a front end server 122 (e.g., a server that conveys (and optionally parses) inbound requests to the appropriate server of calendar system 108 , and that formats responses and/or other information being sent to clients in response to requests).
  • Front end server 122 if present, may be a web server providing web based access to calendar system 108 .
  • Front end server 122 if present, may also route communications to and from other destinations, such as a calendaring system.
  • Calendar system 108 includes a user information database 116 , an event database 118 , and optionally a travel time database 120 . In some embodiments, calendar system 108 also includes or has access to one or more other databases, such as one or more map databases 126 . Server 112 includes a reminder processing module 124 and applications 128 . In some embodiments, server 112 also includes user information processing module 114 . Server 112 communicates with databases internal to calendar system 108 , such as user information database 116 , event database 118 , and travel time database 120 , and in some embodiments, map database 126 using a local area network, by internal communication busses, or by any other appropriate mechanism or combination of mechanism.
  • Server 112 communicates with clients 102 via the front end server 122 (if present) and communication network(s) 106 .
  • each server such as server 112
  • the communications network 106 is the Internet.
  • the communication network 106 can be any local area network (LAN), wide area network (WAN), metropolitan area network, or a combination of such networks.
  • server 112 is a web server that manages electronic calendars using appropriate communication protocols. Alternatively, if server 112 is used within an intranet, it may be an intranet server.
  • Applications 128 include application programs used for managing an online calendar system.
  • applications 128 also include a user information processing module (e.g., user information processing module 114 ), where the user information processing module assists in accessing and updating user information database 116 .
  • User information database 116 stores various information associated with the users of calendar system 108 , including user preferences, default locations, and a default reminder time interval.
  • Event database 118 store information (e.g., metadata) concerning various types of calendars as well as data (e.g., event data, also called event entry data, calendar data, calendar entry data, or calendar event data) from various calendars.
  • Reminder processing module 124 determines a time to provide an event reminder for a respective event for a respective user. Reminder processing module 124 retrieves stored event information. In some embodiments, reminder processing module transmits the determined time to client 102 , and client 102 provides an event reminder at the event reminder time for the respective user.
  • reminder processing module 124 assists in accessing and updating event database 118 . In some other embodiments, reminder processing module 124 also assists in accessing and updating travel time database 120 .
  • Travel time database 120 includes travel times between pairs of locations among a plurality of locations.
  • travel time database 120 includes travel times for respective time segments (e.g., morning/evening commute time, carpool lane time, etc.), for respective time of the week (e.g., weekday v. weekend), for respective time of the year (e.g., national holiday, shopping season, etc.), for a respective direction (e.g., heading north v. heading south), for a respective mode of travel (e.g., walking; riding on a walkway, if available; driving; taking a public transportation; taking an elevator; and taking the stairs).
  • respective time segments e.g., morning/evening commute time, carpool lane time, etc.
  • respective time of the week e.g., weekday v. weekend
  • time of the year e.g., national holiday, shopping season, etc.
  • a respective direction e.g., heading north v. heading south
  • a respective mode of travel e.g., walking
  • map database 126 stores location information (e.g., such as city, campus, campus sub-region, building, floor, and/or building sub-region) concerning various locations, including event locations. In some other embodiments, map database 126 also stores information about pathways and/or travel distance between event locations.
  • location information e.g., such as city, campus, campus sub-region, building, floor, and/or building sub-region
  • calendar system 108 includes or has access to a map server 130 .
  • Map server 130 is a server (e.g., a server for the Google Maps service) that provides travel directions, travel distance, and/or travel time, between specified pairs of locations.
  • embodiments that include or have access to map server 130 use map server 130 instead of travel time database 120 to obtain travel times between specified locations.
  • travel time database 120 may be used in conjunction with map server 130 to provide travel times.
  • the user information database 116 includes user information records having information relevant to determining travel times.
  • the user information record for a respective user may include, in addition to identifying information for the user, a default location (e.g., the location of the user's office), a default reminder time interval selected by the user, and user preferences (e.g., mobility limitations, transportation preference, data display preference, etc.).
  • server 112 is configured to manage certain aspects of calendar system 108 , including transmitting event data (including event reminder time) to a respective client 102 for rendering at least a portion of the data on an electronic calendar in calendar system 108 based on the respective user's preferences.
  • client 102 provides an event reminder for a respective user by displaying the event reminder on GUI 111 . In some other embodiments, client 102 provides an event reminder for a respective user by playing a predefined music or by vibration.
  • position sensing devices 104 are connected to calendar system 108 via communications network 106 .
  • position sensing device 104 includes a network communication module.
  • position sensing device 104 includes a sensor to identify a respective user (e.g., a badge reader, a face identification system, etc.).
  • client 102 includes position sensing device 104 (e.g., a mobile telephone with a GPS capability).
  • Position sensing device 104 can be fixed in one location or portable.
  • calendar system 108 and server 112 fewer and/or additional modules, functions or databases are included in calendar system 108 and server 112 .
  • the modules shown in calendar system 108 and server 112 represent functions performed in certain embodiments.
  • FIG. 2 is a block diagram illustrating calendar system 108 in accordance with some embodiments.
  • Calendar system 108 typically includes one or more processing units (CPUs) 202 , one or more network or other communications interfaces 204 , memory 206 , and one or more communication buses 208 for interconnecting these components.
  • the communication buses 208 include circuitry (sometimes called a chipset) that interconnects and controls communications between system components.
  • calendar system 108 includes a user interface (not shown) (e.g., a user interface having a display device, a keyboard, and a mouse or other pointing device), but more typically calendar system 108 is controlled from and accessed by various client systems.
  • Memory 206 of calendar system 108 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory 206 may optionally include one or more storage devices remotely located from the CPU(s) 202 . Memory 206 , or alternately the non-volatile memory device(s) within memory 206 , comprises a computer readable storage medium. In some embodiments, memory 206 , or the non-volatile memory device(s) within memory 206 , comprises a non-transitory computer readable storage medium. In some embodiments, memory 206 or the computer readable storage medium of memory 206 stores the following programs, modules and data structures, or a subset thereof:
  • calendar engine 214 includes the following programs, modules and data structures, or a subset or superset thereof:
  • memory 206 may store a subset of the modules and data structures identified above. Furthermore, memory 206 may store additional modules and data structures not described above.
  • event database 118 is part of or stored within server 112 .
  • event database 118 is implemented using one or more servers whose primary function is to store and process user information.
  • travel time database 120 includes map database 126 , or vice versa.
  • a map server 130 includes travel time database 120 and/or map database 126 .
  • map server 130 may be a remote server, at a different physical location from calendar engine server 112 .
  • User information database 116 can be implemented on one or more servers.
  • the actual number of servers used to implement a calendar system 108 and how features are allocated among them will vary from one implementation to another, and may depend in part on the amount of data traffic that the system must handle during peak usage periods as well as during average usage periods, and may also depend on the amount of data stored by the calendar system.
  • one or more of the blocks in FIG. 1 may be implemented on one or more servers designed to provide the described functionality.
  • the description herein refers to certain features implemented in client 102 and certain features implemented in server 112 , the embodiments are not limited to such distinctions. For example, at least some of the features described herein as being part of server 112 can be implemented in whole or in part in client 102 , and vice versa.
  • FIG. 3 is a block diagram illustrating a client, also called client systems or client devices, in accordance with some embodiments.
  • the clients 102 as shown in these figures are configured for use by a subscriber (also herein called “the user”) of calendar system 108 .
  • the client includes a user interface 300 , which typically includes a display device 301 , and one or more input devices 303 such as a keyboard and a mouse or other pointing device.
  • client 102 includes a graphical user interface (GUI) 111 , which is displayed on the display device 301 .
  • GUI graphical user interface
  • Client 102 typically includes one or more processing units (CPUs) 302 , one or more network or other network communications interfaces 304 , memory 306 , and one or more communication buses 308 for interconnecting these components.
  • the communication buses 308 may include circuitry (sometimes called a chipset) that interconnects and controls communications between system components.
  • Memory 306 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory 306 may optionally include one or more storage devices remotely located from the CPU(s) 302 . Memory 306 , or alternately the non-volatile memory device(s) within memory 306 , comprises a computer readable storage medium. In some embodiments, memory 306 , or the non-volatile memory device(s) within memory 306 , comprises a non-transitory computer readable storage medium. In some embodiments, memory 306 or the computer readable storage medium of memory 306 stores the following programs, modules and data structures, or a subset thereof:
  • the client 102 may be a “thin client,” which includes a calendar application 314 that displays the calendar display page 318 received from calendar system 108 .
  • the client 102 only displays the calendar display page, and executes programs, if any, embedded within the calendar display page 318 , but does not include additional software.
  • programs embedded within the calendar display page format calendar data for display.
  • calendar related processing other than user data input, calendar display, and reminder display are handled by calendar system 108 .
  • FIG. 4 is a block diagram illustrating an exemplary event database 118 and an exemplary event entry record 400 - x in accordance with some embodiments.
  • Event database 118 stores event entry records 400 , for example entry 1 ( 400 - 1 ) through entry x ( 400 - x ), where x represents the number of entries (or the number of entries for a respective user, or the number of entries in a local calendar database at a client 102 ).
  • An entry 400 includes information for an event, sometimes called a calendar event, such as a meeting.
  • An event entry (e.g., entry x 400 - x ) includes the following data for a calendar event, or a subset or superset thereof:
  • a separate event database is maintained for each registered user of the system, while in other embodiments the event database 118 records events for multiple users.
  • FIG. 5 is a block diagram illustrating an exemplary travel time database 120 and an exemplary travel time records 500 - y in accordance with some embodiments.
  • Travel time database 120 stores travel time records, for example travel time records 500 - 1 through travel time records 500 - y , where y may represent the number of regions.
  • the regions are geographic division of areas covered by travel time database 120 .
  • a region can be campus, campus sub-region, building, floor, and/or building sub-region.
  • a travel time record includes travel time information for a respective pair of locations, sometimes called an origin and a destination.
  • travel time records 500 - y includes travel time entries, for example travel time entry 508 - 1 through travel time entry 508 - q , where q may represent the number of entries in the set.
  • travel time entry 508 - q includes the following data, or a subset or superset thereof:
  • travel time records include multiple travel time entries for a respective pair of an origin and a destination, where a respective entry includes travel time information for each time segment, for each mode of travel, for each pathway.
  • travel time records do not include the travel time for the reverse direction if the travel time for both directions is similar (e.g., within a predetermined percentage of error).
  • the travel time database includes the travel time for travel from point A to point B, but does not include the travel time for travel from point B to point A when the travel between point A and point B takes approximately the same amount of time, regardless of the travel direction.
  • travel time database 120 is a lookup table. In some embodiments, travel time database 120 is a lookup table including travel times for specific origin-destination pairs. In other embodiments, travel time database 120 includes travel time for a respective pair of locations without identifying which location is the origin and which is the destination.
  • travel time database 120 is a sparse lookup table based on a simple model.
  • the model can be based on geographic levels, such as continent, country, state, city, campus, building, building section (floor, wing), etc.
  • the travel time record 500 - y includes a pointer or link to a location in the map database 126 corresponding to or proximate to the origin and/or the destination.
  • travel time database 120 includes travel time records for travel between regions. For example where each region is a respective building on a campus, the travel time database includes travel time between buildings on the campus. In a related example where a shuttle bus travels around the campus, the travel time database includes travel times between shuttle bus stops (on a shuttle bus) and between a respective building and a proximate shuttle bus stop (e.g., by walking).
  • FIGS. 6A and 6B are flowcharts representing a method of determining a time to provide an event reminder for a respective event for a respective user, in response to a predefined triggering event, in a calendar system (e.g., calendar system 108 ), in accordance with some embodiments.
  • calendar system 108 includes a server (e.g., server 112 ). The server determines a time to provide an event reminder (i.e., an event reminder time) in response to a predefined triggering event ( 602 ).
  • the predefined triggering event is expiration of a predefined time interval prior to a respective meeting's start time.
  • the predefined time interval can be set to twenty-four hours before a meeting's start time, four hours before the meeting start time, one hour before the meeting's start time, or any other time interval before the meeting.
  • server 112 responds by determining an event reminder time twenty-four hours before the meeting start time.
  • Server 112 determines whether a predefined triggering event has occurred based on: the time provided by a clock (e.g., an internal clock of the server), information stored in the calendar system (e.g., event start time in event database 118 ), and the predefined time interval.
  • the predefined time interval can be set by a user, a server system administrator or automatically in accordance with a default value.
  • the predefined triggering event occurs multiple times, at predefined time interval, prior to the event start time.
  • the predefined time interval can be set to twenty-four hours, one hour, thirty minutes, five minutes, one minute, or any other time interval.
  • server 112 responds by determining and then updating an event reminder time every twenty-four hours.
  • server 112 responds by determining and then updating the event reminder time every minute.
  • each event has a respective predefined time interval for updating the event reminder time. For example, a user A's meeting at 1:00 p.m. may have fifteen minute time interval, whereas a user B's meeting at 3:00 p.m. may have five minute time interval.
  • the predefined time interval for updating the event reminder time is a function of time remaining before the event start time.
  • the predefined time interval can be set as one hour for events on the same day, but set as five minutes for events occurring within the next couple of hours.
  • the predefined triggering event includes obtaining a location of a respective user.
  • a position sensing device e.g., position sensing device 104 - m in FIG. 1
  • server 112 responds by determining an event reminder time having a start time with a predefined time range (e.g., having a start time in the next N hours).
  • the predefined triggering event includes receiving event information or an update to the event information. In some other embodiments, the predefined triggering event includes receiving a request for an event reminder time from a client (e.g., client 102 ).
  • the predefined triggering event is a combination of two or more of the triggering conditions described above.
  • the server retrieves, from an event database (e.g., event database 118 ), event information for the respective event ( 604 ).
  • the event information includes an event location and an event start time.
  • the server also obtains an origin of the respective user ( 606 ).
  • the origin is a default location of the respective user.
  • user information database 116 contains the default location of the respective user (e.g., the location of the respective user's office), and server 112 obtains the origin by retrieving the default location from user information database 116 .
  • obtaining the origin includes obtaining a location of the respective user from a position sensing device ( 608 ).
  • the position sensing device e.g., position sensing device 104
  • the position sensing device is a global positioning system (GPS) device or a device with a GPS capability (e.g., a mobile phone device with a GPS capability).
  • GPS global positioning system
  • the GPS device determines the location of the respective user, transmits the information to calendar system 108 , and server 112 in calendar system 108 obtains the location of the respective user by receiving the information from the device.
  • the position sensing device is a badge reader.
  • the badge reader sends the identity of the respective user and the location of the respective user (alternatively, the location of the badge reader) to calendar system 108 , and server 112 in calendar system 108 uses the location in determining an event reminder time.
  • the position sensing device is a face identification system.
  • the face identification system sends the identity of the respective user and the location of the respective user (alternatively, the location of the face identification system or a camera of the face identification system) to the server.
  • obtaining the origin includes obtaining location information of the respective user from a mobile phone device ( 610 ).
  • a mobile phone with GPS capability determines the location of the respective user, transmits the information to calendar system 108 , and server 112 in calendar system 108 obtains the location of the respective user by receiving the information from the mobile phone.
  • a mobile phone without GPS capability uses a mobile phone tracking method to determine the location.
  • the mobile phone tracking method includes determining a location of a mobile phone based on signal power levels from cell towers and locations of the cell towers. For example, a software module (e.g., Google Latitude) can enable mobile phone tracking and allow a respective user to share the location information, for use in other applications, or with other users.
  • a software module e.g., Google Latitude
  • obtaining the origin includes obtaining from the event database a location of a preceding event for the respective user, the preceding event occurring before the respective event ( 612 ). For example, when the respective user has a meeting in a building A between 1:00 and 2:00 p.m. and another meeting in a building B between 2:00 and 3:00 p.m., in determining an event reminder time for the 2:00 p.m. meeting, server 112 retrieves the location of the preceding event (the 1:00 p.m. meeting in this example) from event database 118 .
  • This method is especially useful when the calendar system does not have a timely input from a position sensing device, and when the preceding event is at a location different from the user's default location and the estimated travel time (TravelTime) from the location of the preceding event to the next event satisfies a predefined relationship (e.g., Travel Time ⁇ 1.5*BetweenTime) to the time gap (BetweenTime), if any, between the preceding event's end time and the start time of the next event.
  • a predefined relationship e.g., Travel Time ⁇ 1.5*BetweenTime
  • server 112 treats the location of the preceding event as the location of the respective user.
  • server 112 furthermore retrieves the end time of the preceding event. Then, server 112 determines the location of the respective user based on the location of the preceding event, the default location of the respective user, the end time of the preceding event, the start time of the respective event, and the travel time between the location of the preceding event and the default location. In some embodiments, if a time gap between the preceding event and the respective event is more than a predefined threshold (e.g., one hour), and if the time gap is more than the travel time between the location of the preceding event and the default location, server 112 treats the default location as the origin of the respective user. For example, when the preceding event ends at 1:00 p.m.
  • a predefined threshold e.g., one hour
  • server 112 treats the default location of the respective user as the origin of the respective user, based on the assumption that the respective user will return (or has returned) to the default location.
  • server 112 treats the default location as the origin of the respective user for purposes of determining the event reminder time for the user.
  • obtaining the origin of the respective user includes determining the likelihood of attendance of the preceding event.
  • the likelihood of attendance is calculated, for example, from the past attendance of the respective user, acceptance status of the preceding event (user actions 422 in entry 400 for the preceding event), past acceptance of event/meeting requests from a requester requesting the preceding event by the respective user, and schedule conflict for the respective user.
  • the past attendance, acceptance status, past acceptance, and/or schedule conflict can be determined, for example, in accordance with information stored in event database 118 .
  • the location of the preceding event is used as the origin only if the likelihood of attendance (of the preceding event) exceeds a predefined threshold (e.g., 50%, 60%, 70%, 80%, or a percentage defined by the respective user or a system administrator).
  • a predefined threshold e.g. 50%, 60%, 70%, 80%, or a percentage defined by the respective user or a system administrator.
  • obtaining the origin includes a combination of two or more of the methods described above.
  • the origin is determined in accordance with the recency of the location information.
  • the origin is determined also in accordance with the accuracy and resolution of respective location information or the respective method (e.g., GPS, mobile phone based on mobile phone tracking, obtaining the origin by obtaining the location of the preceding event location, etc.) for obtaining the location information.
  • a user or a requester may provide inexact location information for an event or meeting (hereinafter called a meeting, for convenience).
  • An example of inexact location information is “corner conference room,” with no indication of the building, floor, or even the city in which the meeting is to occur.
  • inexact location information does not match an entry in travel time database 120 .
  • the calendar system attempts to determine the location of a meeting despite the use of inexact location information, in order to be able to provide distance-aware reminders, or distance-aware warnings of scheduling conflicts. In most circumstances, identifying the building in which a meeting is most likely to occur is sufficient for providing distance-aware event reminders or distance-aware warnings of scheduling conflicts.
  • the calendar system identifies the likely location of a meeting based on either the default locations of the participants (e.g., using the building-level default location shared by the most participants, or in the absence of any such location, the default location of the requester), or the locations (inferred, or known) of the participants prior to the event or meeting. For example, if the location(s) of event(s) attended by participants prior to the event having the inexactly location information can be determined, then that information can be used to identify a likely location of the meeting.
  • a set of rules is used to determine what information to use for establishing the likely location of a meeting. Such rules typically give preference to information considered most likely to be accurate, and give decreasing preference to sources of information considered to be increasing less likely to be accurate.
  • server 112 identifies the actual location of the preceding event in accordance with the locations of one or more attendees (e.g., obtained from position sensing devices or mobile phone devices associated with the one or more attendees). In some embodiments, server 112 identifies the actual location of the preceding event in accordance with the locations of two or more attendees, to improve accuracy in identifying the actual location (e.g., averaging, most populated location, etc.).
  • server 112 accesses and uses the invitee acceptance status of a preceding event (user actions 422 in entry 400 for the preceding event), so as to avoid using the location of a preceding event as the likely preceding location of invitees who have not accepted an invitation to the preceding event.
  • the information for a recurring event includes inexact location information
  • the actual location of the recurring event can be determined in accordance with the historic locations of one or more attendees (e.g., obtained from position sensing devices or mobile phone devices associated with the one or more attendees) of prior instances of the recurring event.
  • server 112 when server 112 cannot determine the location of a meeting, server 112 uses a default location for the meeting (e.g., the default location of the requester) to determine travel time. In some other embodiments, server 112 does not provide distance-aware meeting reminders and/or distance aware warnings of scheduling conflicts, with respect to a particular meeting or a subsequent meeting, when the location of the particular meeting is unknown due to the provision of inexact location information by the meeting requester.
  • a default location for the meeting e.g., the default location of the requester
  • server 112 does not provide distance-aware meeting reminders and/or distance aware warnings of scheduling conflicts, with respect to a particular meeting or a subsequent meeting, when the location of the particular meeting is unknown due to the provision of inexact location information by the meeting requester.
  • server 112 determines a travel time for the respective user to travel from the origin to the event location ( 614 ). For example, server 112 determines a travel time by retrieving a travel time corresponding to the origin and the destination (e.g., the event location) from travel time database 120 .
  • determining the travel time includes additional steps as described with reference to FIG. 6B .
  • determining the travel time includes determining a pathway from the origin to the event location ( 622 ). When there are multiple pathways from an origin to a destination, server 112 determines a pathway and determines the travel time corresponding to the determined pathway. In some embodiments, after determining a pathway, server 112 determines the travel time by retrieving the travel time from travel time database 120 based on the origin, the event location, and the determined pathway.
  • the pathway consists of a plurality of segments
  • server 112 determines the travel time by retrieving the travel time for the plurality of segments and summing up the retrieved travel times.
  • the pathway from the building A to the building B includes a segment from the building A to a building C, and a segment from the building C to the building B.
  • Server 112 retrieves the travel for each segment, and adds the two travel times to determine the travel time from the building A to the building B.
  • server 112 determines the travel time by retrieving the travel time for each geographic level, and summing up the retrieved travel times.
  • the travel involves traveling from a building D in a city X to a building E in a city Y, where the user preference is to drive between the two cities.
  • One potential pathway includes walking from the building D to a car in a first parking lot; driving from the first parking lot to a highway; driving on the highway from the city X to the city Y; driving from the highway to a second parking lot next to the building E; and walking from the second parking lot to the building E.
  • Server 112 determines the travel time by adding travel time for each segment of the pathway (e.g., 5 minute walking to the first parking lot; 10 minute driving to the highway; 1 hour driving to the city Y; 20 minute driving to the second parking lot; 3 minute walk to the building E).
  • segment of the pathway e.g., 5 minute walking to the first parking lot; 10 minute driving to the highway; 1 hour driving to the city Y; 20 minute driving to the second parking lot; 3 minute walk to the building E.
  • server 112 ignores travel times for geographic levels lower than the most significant geographic level by a predetermined threshold.
  • the geographic levels include “intercity driving”, “city driving” (e.g., driving to and from a highway), “long distance walking”, and “short distance walking” (e.g., walking between a parking lot and a building)
  • the most significant geographic level is the intercity driving between the two cities. If the predetermined threshold is one level, the “short distance walking” is lower than the “intercity driving” by more than one level.
  • server 112 ignores the travel time for short distance walking (e.g., the travel from the building D to the first parking lot and the travel from the second parking lot to the building E) in determining the travel time from the origin to the event location.
  • server 112 includes the city driving times in determining the travel time.
  • server 112 adds the travel time for the most significant geographic level (intercity driving: 1 hour from the city x to the city Y) and the travel times for city driving (10 minute driving to the highway, and 20 minute driving from the highway) to determine the travel time from the origin to the event location.
  • determining the pathway includes calculating a distance from the origin to the event location ( 624 ). For example, when calendar system 108 includes or has access to a map database 126 , server 112 retrieves the distance information from the map database 126 . In some embodiments, server 112 calculates the distance from the origin to the event location by adding distances between intermediate points available in a map database. In one example, the map database 126 does not include a distance between the building A and the building B, but includes the distance between the building A and the building C, and the distance between the building C and the building B. Then, server 112 calculates the distance from the building A to the building B by adding the two distances. In some other embodiments, when calendar system 108 includes or has access to a map server 130 , server 112 requests and receives the distance information from the map server 130 at least for a subset of the segments between the origin and the destination.
  • server 112 determines the pathway in accordance with the distance. For example, server 112 selects the pathway with the shortest distance.
  • determining the pathway further includes determining a mode of travel based on the distance ( 626 ).
  • user preferences for a respective user stored in user information database 116 includes that the respective user prefers to walk when the travel distance is less than 2 miles and prefers to drive a car when the travel distance is more than 2 miles.
  • server 112 determines that the mode of travel for the pathway is walking.
  • determining the travel time includes determining the travel time based on the mode of travel.
  • server 112 determines the travel time by dividing the pathway distance by an estimated speed of travel. In another example in which multiple modes of travel are possible, server 112 determines the travel time by dividing the pathway distance by an estimated speed of travel for the respective mode of travel.
  • travel time database 120 includes the travel time records for a plurality of modes of travel from origins to destinations, and server 112 retrieves the travel time for the mode of travel.
  • determining the pathway includes identifying a plurality of candidate pathways from the origin to the event location, and selecting a pathway from the plurality of candidate pathways based on a predefined criteria ( 628 ).
  • travel time database 120 includes a plurality of pathways from the origin to the event location.
  • map database 126 or map server 130 provides a plurality of pathways from the origin to the event location.
  • Server 112 identifies a plurality of candidate pathways by retrieving/requesting the pathways from travel time database 120 , map database 126 , or map server 130 .
  • server 112 selects a pathway that best matches the predefined criteria. Alternatively, server 112 selects one of the pathways that match the predefined criteria.
  • the predefined criteria includes a user preference ( 630 ).
  • the user preference e.g., stored in user information database 116
  • the user preference can be any of the set consisting of: highway v. local road, going through a building v. going around the building, driving v. public transportation, and driving v. walking.
  • the user preference can also include mobility limitations of the user.
  • server 112 compares respective pathways and the user preference, and deselects pathways that do not meet the user preferences. For example, when the user preferences include avoiding stairways, server 112 deselects pathways that include travel on stairways from the identified plurality of pathways.
  • the predefined criteria includes an estimated travel time from the origin to the event location for each candidate pathway ( 632 ).
  • server 112 obtains an estimated travel time for each candidate pathway by retrieving the travel time from travel time database 120 . Then, server 112 selects a pathway with the shortest travel time.
  • determining the pathway includes identifying the pathway characteristics ( 634 ).
  • pathway characteristics include different floors, different buildings, potential traffic, distance further than the walking distance for a respective user (and therefore having to use a mode of travel other than walking), etc.
  • server 112 identifies the pathway characteristics by retrieving the pathway characteristics from one or more of: travel time database 120 , map database 126 , and map server 130 .
  • determining the travel time includes obtaining a representative travel time from the origin to the event location from a travel time database ( 636 ).
  • travel time database 120 includes a representative travel time
  • server 112 obtains the representative travel time from travel time database 120 .
  • server 112 obtains the representative travel time by adding representative travel time for respective segments for the pathway.
  • server 112 obtains the representative travel time by calculating respective travel time for a respective segment (e.g., by dividing the distance for the respective segment by an estimated speed of travel).
  • server 112 updates travel time database 120 in accordance with actual travel times of the respective user ( 638 ). For example, server 112 determines the arrival of the respective user at the event location by comparing the location of the respective user and the event location. Then, server 112 updates the travel time database in accordance with actual travel time of the respective user. In some other embodiments, server 112 tracks the location of the respective user from a position sensing device 104 or a mobile phone device and determines the travel time for respective segment of the pathway that the respective user has traveled. Then server 112 updates travel time database 120 for the respective traveled segment.
  • determining a travel time includes rounding the travel time based on a predetermined time increment.
  • server 112 determines the travel time to be fifteen minutes by rounding fourteen minutes to the nearest increment of five minutes (i.e., fifteen is the closest number to fourteen among increments of five).
  • server 112 determines the travel time to be twenty minutes (i.e., twenty is the closest number to twenty-one among increments of ten).
  • determining a travel time includes rounding up the travel time based on a predetermined time increment.
  • server 112 determines the travel time to be fifteen minutes by rounding up twelve minutes to the closest five minute increment (i.e., fifteen is the smallest number among increments of five that is not less than twelve).
  • server 112 determines the travel time to be thirty minutes (i.e., thirty is the smallest number among increments of ten that is not less than twenty-one).
  • server 112 determines an event reminder time for the respective event, in accordance with the event start time and travel time ( 616 ).
  • the event reminder time includes a time at which the respective user is to be provided a reminder of the respective event.
  • the event reminder time is a time preceding the event start time by the travel time. For example, if the event start time is 3:00 p.m. and the travel time is one hour, the event reminder time is 2:00 p.m. (one hour before 3:00 p.m.). In another example, if the event start time is 11:00 a.m. and the travel time is fifteen minutes, the event reminder time is 10:45 a.m. (fifteen minutes before 11:00 a.m.).
  • server 112 stores the event reminder time in the event database 118 .
  • server 112 updates the event database 118 with the event reminder time.
  • determining the event reminder time includes adjusting the event reminder time in accordance with a buffer.
  • the buffer is an additional time interval to provide the respective user time to prepare for travel or to account for potential delays during the travel.
  • the buffer is a fixed amount of time.
  • server 112 revises the event reminder time to 2:40 p.m. (i.e., five minutes before 2:45 p.m.).
  • the buffer is a predetermined fraction of the travel time.
  • server 112 revises the event reminder time by six minutes (i.e., ten percent of one hour).
  • the buffer is a sum of both a fixed amount of time and a fraction of the travel time.
  • server 112 maintains two event reminder times: one based on a predetermined time interval before the event, and the other based on the origin of the respective user and the travel time. In some embodiments, server 112 provides at least one event time reminder, based on the predetermined time interval before the event. In some other embodiments, server 112 does not provide a reminder if the respective user is already at the event location before the event reminder time.
  • the server provides a reminder of the respective event to the respective user at the event reminder time ( 618 ).
  • server 112 indicates the event reminder time by updating the calendar data 120 for the respective user.
  • server 112 provides a calendar display page containing the event reminder time to the respective user.
  • server 112 updates the reminder time at a predetermined time interval prior to the event. For example when the predetermined time interval is one hour before a respective event, server 112 determines the event reminder time one hour before the event. In addition, server 112 optionally updates the predetermined time interval (e.g., to thirty minutes) so that server 112 updates the event reminder time at the revised time interval prior to the event (e.g., thirty minutes prior to the event) to account for any changes (e.g., change to the event location, cancellation, travel of the respective user) that may occur during the intervening time (i.e., from one event reminder time update to a next event reminder time update).
  • the predetermined time interval e.g., to thirty minutes
  • the server provides the event reminder time to a client device of the respective user ( 620 ).
  • server 112 sends the event reminder time to client 102 of the respective user, and client 102 presents the reminder to the respective user at the event reminder time.
  • the event reminder time is provided to one or more clients 102 associated with the user, and at least one of those clients presents the reminder to the respective user at the event reminder time.
  • FIG. 7 is a flowchart illustrating processes performed by a client 102 and a calendar system 108 , in accordance with some embodiments. It will be appreciated by those of ordinary skill in the art that one or more of the acts described may be performed by hardware, software, or a combination thereof, as may be embodied in one or more computing systems. In some embodiments, portions of the process performed by calendar system 108 can be performed by client 102 .
  • Client 102 sends event information to calendar system 108 (sometimes called sever system 108 ) ( 702 ), and calendar system 108 performs initial processing of the event information ( 704 ).
  • initial processing includes parsing the event information to extract information recordable in an event database entry (e.g., event database entry 400 - x in FIG. 4 ).
  • Calendar system 108 stores event information in event database ( 706 ).
  • client 102 initiates event database synchronization ( 708 ).
  • calendar system 108 initiates event database synchronization ( 710 ).
  • client 102 and calendar system 108 communicate with each other to synchronize the client and server event databases.
  • synchronizing the event databases includes synchronizing event reminder time.
  • calendar system 108 copies the event reminder time in client 102 during event database synchronization.
  • client 102 copies the event reminder time in calendar system 108 during event database synchronization.
  • Calendar system 108 receives a triggering event ( 712 ), and retrieves event information ( 714 ). In some embodiments, calendar system 108 retrieves event information from event database 118 .
  • calendar system 108 obtains an origin of the respective user ( 718 ). In some embodiments, the calendar system 108 obtains the origin of the respective user as described with reference to operation 606 ( FIG. 6A ).
  • calendar system 108 determines a travel time to the event location ( 720 ). In some embodiments, calendar system 108 determines the travel time as described with reference to operation 614 .
  • calendar system 108 determines an event reminder time ( 722 ). In some embodiments, calendar system 108 determines the event reminder time as described with reference to operation 616 .
  • client 102 requests the event reminder time ( 724 ), and calendar system 108 sends the event reminder time to client 102 in response to the request.
  • calendar system 108 transmits the event reminder time to client 102 without a request from client 102 .
  • calendar system 108 sends the event reminder time at a predetermined time.
  • the predetermined time can be, for example, a predetermined time of the day, or a predetermined time interval before the event reminder time.
  • Client 102 receives the event reminder time ( 726 ).
  • client 102 stores the event reminder time as reminder data (e.g., reminder data 324 in FIG. 3 ).
  • Client 102 presents an event reminder to the respective user at the event reminder time ( 728 ).
  • reminder module 316 presents the event reminder to the respective user at the event reminder time.
  • the event reminder is presented as part of a calendar display page (e.g., calendar display page 318 in FIG. 3 ).
  • FIGS. 8A-8C are flowcharts representing a method 800 of providing scheduling assistance, in response to a request from a requester for scheduling a meeting, in a calendar system (e.g., calendar system 108 ), in accordance with some embodiments.
  • calendar system 108 includes a server (e.g., server 112 ). The server provides scheduling assistance in response to a request from a requester for scheduling a meeting ( 802 ).
  • the request from a requester for scheduling a meeting includes a request for scheduling a new meeting.
  • the request for scheduling a meeting includes a request for rescheduling a meeting in the calendar (e.g., changing the meeting time).
  • the request for scheduling a meeting includes a request to add one or more additional invitees to a meeting in the calendar.
  • the request includes a meeting location and a meeting start time.
  • the server extracts the meeting location and the meeting start time from the request ( 804 ).
  • the request is stored in event database 118 .
  • the request is stored in the front end server 122 , or in memory 206 of server 108 or server 112 .
  • Server 112 retrieves the request and extracts the meeting location and the meeting start time from the request. Any calendar system records linked to or associated with the request that contain meeting time and start time information are considered to be part of the request for purposes of extracting information such as the meeting location and meeting start time.
  • the server also retrieves, from an event database, event information for a preceding event occurring before the meeting, including an event location and an event end time ( 806 ).
  • retrieving event information for the preceding event includes identifying the preceding event, if any.
  • the preceding event is a closest event that occurs before the meeting. For example when the requester is scheduled to attend one-hour meetings at 9:00 a.m., 12:00 p.m., and 3:00 p.m., and a newly requested meeting starts at 2:00 p.m., server 112 identifies the 12:00 p.m. meeting as the preceding event occurring before the 2:00 p.m. meeting. After identifying the 12:00 p.m.
  • server 112 retrieves event information for the 12:00 p.m. meeting from the event database.
  • the event information stored in the event database includes the event start time and the duration instead of the event end time.
  • server 112 determines the event end time based on event information stored in the event database, such as the event start time and the duration.
  • the server After retrieving the event location and the event end time, the server determines travel time from the event location to the meeting location ( 808 ). For example, server 112 determines a travel time by retrieving a travel time corresponding to the event location (as a starting point) and the meeting location (as a destination) from travel time database 120 .
  • determining the travel time includes identifying a location near the event location or the meeting location.
  • the identified location is a location for which travel time database 120 includes travel time information.
  • determining the travel time also includes determining whether travel time database 120 includes or does not include travel time information for the event location or the meeting location.
  • travel time database 120 when the requester travels from the event location, conference room ABC, to the meeting location, conference room XYZ, travel time database 120 does not include travel time information for the conference room ABC.
  • server 112 determines that travel time database 120 does not include travel time information for conference room ABC, it identifies a location near the event location, for example a conference room DEF.
  • travel time database 120 includes the travel time from the conference room DEF to the conference room XYZ.
  • server 112 identifies the location near the event location or the meeting location in accordance with the map server 130 and travel time database 120 .
  • travel time database 120 includes location information for the starting point (i.e., origin) and the ending point (i.e., destination). For example, travel time database 120 additionally includes that the conference room DEF is located in the north-west corner of the eighth floor. If the map database 126 or the map server 130 includes information that the conference room ABC is also located in the north-west corner of the eighth floor, server 112 determines that the conference rooms ABC and DEF are located close to each other, and that the travel time from the conference room DEF represents the travel time from the conference room ABC.
  • determining the travel time includes additional steps as described with reference to FIG. 8B .
  • determining the travel time includes determining a pathway from the event location to the meeting location ( 816 ). When there are multiple pathways from the event location to the meeting location, server 112 determines a pathway and determines the travel time corresponding to the determined pathway. In some embodiments, after determining a pathway, server 112 determines the travel time by retrieving the travel time from travel time database 120 based on the event location, the meeting location, and the determined pathway.
  • determining the pathway includes calculating a distance from the event location to the meeting location ( 818 ). For example, when calendar system 108 includes or has access to a map database 126 , server 112 retrieves the distance information from the map database 126 . In some embodiments, server 112 calculates the distance from the event location to the meeting location by adding distances between intermediate points available in the map database.
  • determining the pathway further includes determining a mode of travel based on the distance ( 820 ).
  • user preferences for a respective user stored in user information database 116 includes that the respective user prefers to walk when the distance is less than 2 miles and prefers to drive a car when the travel distance is more than 2 miles.
  • server 112 determines that the mode of travel for the pathway is walking.
  • determining the pathway includes identifying a plurality of candidate pathways from the event location to the meeting location, and selecting a pathway from the plurality of candidate pathways based on a predefined criteria ( 822 ).
  • travel time database 120 includes a travel time information for a plurality of pathways from the event location (as an origin) to the meeting location (as a destination).
  • map database 126 or map server 130 provides a plurality of pathways from the event location to the meeting location.
  • Server 112 identifies a plurality of candidate pathways by retrieving/requesting the pathways from travel time database 120 , map database 126 , or map server 130 .
  • server 112 selects one of pathways that match the predefined criteria. In some embodiments, server 112 selects a pathway that best matches the predefined criteria.
  • the predefined criteria include a user preference ( 824 ).
  • the user preference can be one of the set consisting of: high way v. local road, going through a building v. going around the building, driving v. public transportation, and driving v. walking.
  • the user preference can also include mobility limitations of the user.
  • the server compares respective pathways with the user preference, and deselects pathways that do not meet the user preferences. For example, when the user preferences include avoiding stairways, the server deselects pathways that include travel on stairways from the identified plurality of pathways.
  • the predefined criteria include an estimated travel time from the event location to the meeting location for each candidate pathway ( 826 ).
  • server 112 obtains an estimated travel time for each candidate pathway by retrieving the travel time from travel time database 120 . Then, server 112 selects a pathway with the shortest travel time.
  • determining the pathway includes identifying the pathway characteristics ( 828 ).
  • pathway characteristics include for example, different floors, different buildings, potential traffic, distance further than the walking distance for a respective user (and therefore having to use a mode of travel other than walking), etc.
  • server 112 identifies the pathway characteristics by retrieving the pathway characteristics from one or more of: travel time database 120 , map database 126 , and map server 130 .
  • determining the travel time includes obtaining a representative travel time from the event location to the meeting location from a map server ( 830 ).
  • server 112 when server 112 includes or has access to map server 130 , server 112 obtains the representative travel time from map server 130 .
  • map server 130 is a remote map server, which is located remotely from calendar system 108 .
  • determining the travel time includes obtaining a representative travel time from the event location to the meeting location from a travel time database ( 832 ).
  • travel time database 120 includes a representative travel time
  • server 112 obtains the representative travel time from travel time database 120 .
  • server 112 obtains the representative travel time by adding representative travel time for respective segments for the pathway.
  • server 112 obtains the representative travel time by calculating respective travel time for a respective segment (e.g., by dividing the distance for the respective segment by an estimated speed of travel).
  • the server updates the travel time database in accordance with actual travel times of the respective user ( 834 ). As described with reference to operation 638 , server 112 for example, determines the arrival of the respective user (e.g., a requester) at the event location by comparing the location of the respective user and the event location. In some other embodiments, server 112 tracks the location of the respective user from a position sensing device 104 or a mobile phone device and determines the travel time for a respective segment of the pathway that the respective user has traveled. Then the server updates travel time database 120 for respective traveled segment.
  • server 112 determines the arrival of the respective user (e.g., a requester) at the event location by comparing the location of the respective user and the event location. In some other embodiments, server 112 tracks the location of the respective user from a position sensing device 104 or a mobile phone device and determines the travel time for a respective segment of the pathway that the respective user has traveled. Then the server updates travel time database 120 for respective traveled segment.
  • the server After determining the travel time, the server identifies a potential travel time scheduling conflict when the travel time exceeds a time difference between the event end time and the meeting start time ( 810 in FIG. 8A ). For example, the preceding event ends at 3:00 p.m., and the requested meeting starts at 3:30 p.m. If the travel time from the event location to the meeting location is more than 30 minutes (e.g., 45 minutes), the travel time exceeds a time difference between the event end time and the meeting start time, and server 112 identifies a potential travel time scheduling conflict.
  • a potential travel time scheduling conflict For example, the preceding event ends at 3:00 p.m., and the requested meeting starts at 3:30 p.m. If the travel time from the event location to the meeting location is more than 30 minutes (e.g., 45 minutes), the travel time exceeds a time difference between the event end time and the meeting start time, and server 112 identifies a potential travel time scheduling conflict.
  • the server provides notification of the potential travel time scheduling conflict to the requester ( 812 ).
  • the notification includes just a fact that there is a potential travel time scheduling conflict.
  • the notification includes a flag that indicates a potential travel time scheduling conflict.
  • a flag or other indicator is produced to indicate that no potential travel time scheduling conflict has been identified.
  • no notification of a scheduling conflict is provided to the requester.
  • the notification of the potential travel time scheduling conflict includes other information including two or more selected from the group consisting of: the preceding event end time, the meeting start time, the travel time, and identification of the person (e.g., an invitee) for whom the potential travel time scheduling conflict has been identified.
  • the requester may decide to schedule the meeting at the requested time despite the potential travel time scheduling conflict, or may decide to schedule the meeting at another time or location.
  • server 112 provides the notification by transmitting the notification to the client 102 associated with the requester. In other embodiments, the server posts the notification, which can be retrieved by client 102 . In some embodiments, server 112 includes notification as part of calendar display page (e.g., calendar display page 318 as stored in client 102 ). In other embodiments, server 112 provides notification separately.
  • Some meetings include one or more invitees, and the meeting request for such a meeting typically includes a list of invitees.
  • handling a meeting request with a list of invitees includes additional steps ( 814 ), as described with reference to FIG. 8C .
  • the server extracts from the request the list of invitees ( 840 ). As described with reference to 804 , in some embodiments, the request is stored in event database 118 . In other embodiments, the request is stored in the front end server 122 , or in memory 206 of server 108 or server 112 . Server 112 retrieves the request and extracts the list of invitees from the request.
  • the server also retrieves from the event database a plurality of preceding events occurring before the meeting ( 842 ).
  • Each preceding event includes an event associated with at least one of the invitees and requester.
  • Server 112 retrieves respective preceding events for at least one of the invitees and requester.
  • server 112 retrieves respective preceding events for the requester R, invitee S, and invitee T.
  • the requester R has a preceding event starting at 1:00 p.m. and ending at 2:00 p.m.
  • the invitee S's preceding event starting at 11:00 a.m. and ending at 1:00 p.m.
  • the invitee T's preceding event starting at 1:30 p.m. and ending at 2:45 p.m.
  • Server 112 retrieves R's 1:00 p.m. meeting, S's 11:00 a.m. meeting, and T's 1:30 p.m. meeting from the event database.
  • Server also extracts event location and event end time for respective preceding events. This example is summarized in the following table.
  • server 112 retrieves preceding events for all the invitees and the requester. As discussed with reference to 806 , in some embodiments, retrieving event information for the preceding event includes identifying the preceding event.
  • the server determines a respective travel time from an event location associated with each of the preceding events to the meeting location ( 844 ). Each respective travel time further corresponds to the event end time of a corresponding event.
  • Various methods for determining the travel time are described above with reference to operation 808 and FIG. 8B , and thus are not repeated here.
  • the travel times are as follows.
  • the server identifies a potential travel time scheduling conflict when at least one of the respective travel times exceeds a corresponding time difference between the corresponding event end time and the meeting start time ( 846 ).
  • the time difference between the corresponding event end time and the meeting start time is as follows.
  • the server identifies a potential travel time scheduling conflict.
  • the server provides notification of the potential travel time scheduling conflict to the requester ( 848 ).
  • the notification includes just a fact that there is a potential travel time scheduling conflict (e.g., a flag that indicates a potential travel time scheduling conflict).
  • the notification includes other information including two or more selected from the group consisting of: the invitee with a potential travel time scheduling conflict, the end time of the event with the potential travel time scheduling conflict, the meeting start time, and the travel time for the invitee with the potential travel time scheduling conflict. Based on the information included in the notification, the requester may decide to schedule the meeting at the requested time despite the potential travel time scheduling conflict, or may decide to schedule the meeting at another time or location.
  • server 112 provides notification by transmitting the notification to the client 102 associated with the requester. In other embodiments, the server posts the notification, which can be retrieved by the client 102 . In some embodiments, server 112 includes notification as part of calendar display page (e.g., calendar display page 318 as stored in client 102 ). In other embodiments, server 112 provides notification separately.
  • FIGS. 9A-9C are flowcharts illustrating processes performed by client(s) and a server system, in accordance with some embodiments. It will be appreciated by those of ordinary skill in the art that one or more of the acts described may be performed by hardware, software, or a combination thereof, as may be embodied in one or more computing systems. In some embodiments, portions of the process performed by calendar system 108 can be performed by client 102 .
  • client 102 is a computer or other device used by a meeting requester.
  • Client 102 sends a request for scheduling a meeting to a calendar system 108 ( 902 ).
  • the calendar system 108 responds by extracting a meeting location and a meeting start time from the request ( 904 ), and retrieving event information for a preceding event occurring before the meeting ( 906 ).
  • the calendar system 108 extracts the meeting location and the meeting start time as described above with reference to operation 804 .
  • the calendar system 108 retrieves event information as described above with reference to operation 806 .
  • calendar system 108 determines travel time from the event location to the meeting location ( 908 ). In some embodiments, the calendar system 108 determines the travel time as described above with reference to operation 808 .
  • calendar system 108 Based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 identifies a potential travel time scheduling conflict ( 910 ). In some embodiments, the calendar system 108 identifies the potential travel time scheduling conflict as described above with reference to operation 810 .
  • the calendar system 108 provides notification of the potential travel time scheduling conflict ( 912 ). In some embodiments, the calendar system 108 provides notification of the potential travel time scheduling conflict as described above with reference to operation 812 .
  • Client 102 receives notification of the potential travel time scheduling conflict ( 914 ). In some embodiments, client 102 receives the notification via network interface 304 and networking communication module 312 .
  • Client 102 presents notification of the potential travel time scheduling conflict to the requester ( 916 ). In some embodiments, client 102 presents the notification in calendar display page 318 . In some embodiments, client 102 presents the notification on GUI 111 .
  • the requester may decide to schedule (or try to schedule) the meeting at a different time.
  • client 102 sends a request for scheduling a meeting at a different time ( 918 ).
  • calendar system 108 repeats the process described above ( 904 - 912 ).
  • client 102 - 1 is a computer or other device used by a meeting requester.
  • Client 102 - 1 sends a request for scheduling a meeting to a calendar system 108 ( 902 ).
  • Calendar system 108 responds by extracting a meeting location and a meeting start time from the request ( 922 ).
  • calendar system 108 extracts the meeting location and the meeting start time as described above with reference to operation 804 .
  • calendar system 108 extracts a list of invitees ( 924 ).
  • calendar system 108 extracts the list of invitees as described above with reference to operation 840 .
  • Server system retrieves event information for preceding events occurring before the meeting for respective invitees ( 926 ).
  • calendar system 108 retrieves event information as described above with reference to operation 842 .
  • calendar system 108 retrieves event information for preceding events by synchronizing with respective clients (e.g., clients 102 - 2 through 102 - n ) associated with the respective invitees, or by retrieving the event information from the respective clients.
  • calendar system 108 determines travel time from the event location to the meeting location for respective invitees ( 928 ). In some embodiments, calendar system 108 determines the travel time as described above with reference to operation 844 .
  • calendar system 108 Based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 identifies a potential travel time scheduling conflict for respective invitees ( 930 ). In some embodiments, the calendar system 108 identifies the potential travel time scheduling conflict as described above with reference to operation 846 .
  • the calendar system 108 provides notification of the potential travel time scheduling conflict ( 932 ) to client 102 - 1 (the client used by the requester).
  • Client 102 - 1 receives notification of the potential travel time scheduling conflict ( 934 ). In some embodiments, client 102 - 1 receives the notification via network interface 304 and networking communication module 312 .
  • Client 102 - 1 presents notification of the potential travel time scheduling conflict to the requester ( 936 ). In some embodiments, client 102 - 1 presents the notification in calendar display page 318 . In some embodiments, client 102 - 1 presents the notification on GUI 111 .
  • client 102 - 1 sends to a calendar system 108 a meeting invitation to an invitee ( 940 ). Stated another way, client 102 - 1 sends a request to calendar system 108 to send a meeting invitation to an invitee. Calendar system 108 responds by extracting a meeting location and a meeting start time from the invitation ( 942 ). In some embodiments, calendar system 108 extracts the meeting location and the meeting start time as described with reference to 804 (except that such information is retrieved from the invitation, rather than from the request). Alternately, the request sent by client 102 - 1 identifies the meeting or event, but does not include the meeting location and meeting start time, in which case that information is retrieved from event database 118 of calendar system 108 .
  • Server system retrieves (from event database 118 ) event information for preceding events occurring before the meeting for respective invitees, the preceding event comprising a calendar event in a calendar associated with the invitee ( 944 ).
  • the event information includes an event location and an event end time.
  • calendar system 108 retrieves event information as described above with reference to operation 806 .
  • calendar system 108 retrieves event information as described above with reference to operation 842 .
  • calendar system 108 determines travel time from the event location to the meeting location ( 945 ). In some embodiments, calendar system 108 determines the travel time as described above with reference to operation 808 .
  • calendar system 108 Based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 identifies a potential travel time scheduling conflict for the invitee ( 946 ). In some embodiments, the calendar system 108 identifies the potential travel time scheduling conflict as described above with reference to operation 810 . Stated another way, based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 determines whether or not there is a potential travel time scheduling conflict, and if the determination is positive, the potential travel time scheduling conflict is identified.
  • Calendar system 108 provides notification of the potential travel time scheduling conflict ( 947 ) to client 102 - 2 associated with the invitee for whom the potential travel time scheduling conflict has been identified.
  • the invitee notification of the potential travel time scheduling conflict may be accomplished as described above with reference to operation 812 (except that the notification is provided to the invitee, rather than the requester).
  • the notification is also provided to the meeting requester.
  • Client 102 - 2 receives notification of the potential travel time scheduling conflict ( 948 ).
  • client 102 - 2 may receive the notification via network interface 304 and networking communication module 312 .
  • Client 102 - 2 presents notification of the potential travel time scheduling conflict to the requester ( 950 ).
  • client 102 - 2 presents the notification in calendar display page 318 , which is typically displayed in GUI 111 .
  • server 112 includes or implements two or more of the embodiments described herein. In one example, server 112 determines that there is a potential travel time scheduling conflict for the requester as well as one of the invitees, and provides notification of both potential travel time scheduling conflicts to the requester. In another example, server 112 determines that there is a potential travel time scheduling conflict for one of the invitees, and provides notification to both the invitee and the requester. It will be appreciated by those of ordinary skill in the art that other combinations of embodiments descried herein can be implemented.

Abstract

A method and a system for determining a time to provide an event reminder based on a plurality of factors, including the location of a user, or the distance between the location of the user and an event location is described. A computer-implemented method includes determining the event reminder time, in response to a predefined triggering event. The method includes retrieving event information for the respective event, including an event location and an event start time. An origin of the respective user is obtained, and a travel time is determined for the respective user to travel from the origin to the event location. In accordance with the event start time and travel time, an event reminder time is determined for the respective event. Also methods and systems for providing scheduling assistance based on the travel time are described.

Description

    RELATED APPLICATIONS
  • This claims priority to U.S. Provisional Application Ser. No. 61/356,000, filed Jun. 17, 2010, entitled “Distance and Location-Aware Reminders and Scheduling Assistance in a Calendar System,” which is incorporated by reference herein in its entirety.
  • This application is related to U.S. patent application Ser. No. ______ (Attorney Docket Number 060963-5455), filed Jun. 16, 2011, entitled “Distance and Location-Aware Scheduling Assistance in a Calendar System,” which is incorporated by reference herein in its entirety.
  • TECHNICAL FIELD
  • The disclosed embodiments relate generally to reminders in a calendar system. More particularly, the disclosed embodiments relate to methods and systems for distance and location-aware reminders and scheduling assistance in an electronic calendar system.
  • BACKGROUND
  • Electronic calendars are increasingly used to organize our lives. Such calendars are accessed from both desktop computers and portable computing devices (e.g., laptop computers, personal digital assistants (PDAs), mobile phones, and wearable computers).
  • One problem with calendars is providing a timely reminder so that a respective user can prepare for an upcoming event. Providing a reminder at a fixed interval before the upcoming event is not always timely, because the fixed interval may not be effective for all situations. For example, a user may be at a location further away than usual from the location of the upcoming event, and the user would need a reminder earlier than usual to travel to the event location. On the other hand, if the user receives a reminder too soon, the user may ignore the reminder, and later miss or come late to the upcoming event. Therefore, there is a need for a new method and system for providing a timely reminder based on the location of the user and the distance to the event location.
  • Another problem with calendars is providing scheduling assistance that accounts for the known or predicted location of a requester or an invitee prior to a particular meeting and a distance to a meeting location. Scheduling a meeting without consideration for the travel time between meetings can result in the requester coming late to the meeting or sometimes abandoning the attendance. Therefore, there is a need for a new method and system for providing scheduling assistance that accounts for the location of the requester or the invitee and the distance to the meeting location.
  • SUMMARY
  • A number of embodiments (e.g., of server systems, client systems or devices, and methods of operating such systems or devices) that overcome the limitations and disadvantages described above are presented in more detail below. These embodiments provide methods, systems, and graphical user interfaces (GUIs) for responding to a predefined triggering event by retrieving event information for a respective event from an event database and obtaining an origin of the respective user. A travel time is determined from the origin to the event location. In accordance with the event start time and travel time, an event reminder time is determined, including a time at which the respective user is to be provided a reminder of the respective event.
  • As described in more detail below, some embodiments of the invention involve a computer-implemented method of determining a time to provide an event reminder for a respective event for a respective user including, in response to a predefined triggering event, retrieving event information for the respective event, including an event location and an event start time, from an event database. An origin of the respective user is obtained. A travel time is determined for the respective user to travel from the origin to the event location. In accordance with the event start time and travel time, an event reminder time is determined for the respective event, where the event reminder time includes a time at which the respective user is to be provided a reminder of the respective event.
  • A server system for determining a time to provide an event reminder for a respective event for a respective user comprises one or more processors for executing programs and memory storing one or more programs be executed by the one or more processors, the one or more programs comprising instructions executed by the one or more processors so as to perform the aforementioned method for determining a time to provide an event reminder for a respective event for a respective user.
  • A server system for determining a time to provide an event reminder for a respective event for a respective user comprises one or more processors, memory, and one or more programs stored in the memory, the one or more programs comprising instructions executed by the one or more processors so as to respond to a predefined triggering event by: retrieving, from an event database, event information for the respective event, including an event location and an event start time; and obtaining an origin of the respective user. The one or more programs include instructions to determine a travel time for the respective user to travel from the origin to the event location; and to determine, in accordance with the event start time and travel time, an event reminder time for the respective event, where the event reminder time includes a time at which the respective user is to be provided a reminder of the respective event.
  • A non-transitory computer readable storage medium stores one or more programs configured for execution by a computer, the one or more programs comprising instructions for performing the aforementioned method for determining a time to provide an event reminder for a respective event for a respective user.
  • A non-transitory computer readable storage medium stores one or more programs configured for execution by one or more processors of a computer for determining a time to provide an event reminder for a respective event for a respective user, and the one or more programs comprises instructions to be executed by the one or more processors so as to respond to a predefined triggering event by: retrieving, from an event database, event information for the respective event, including an event location and an event start time; and obtaining an origin of the respective user. The one or more programs include instructions to determine a travel time for the respective user to travel from the origin to the event location; and to determine, in accordance with the event start time and travel time, an event reminder time for the respective event, the event reminder time comprising a time at which the respective user is to be provided a reminder of the respective event.
  • Some embodiments involve a computer-implemented method of providing scheduling assistance, performed on a system having one or more processors and memory storing one or more programs for execution by the one or more processors. The method includes, in response to a request from a requester for scheduling a meeting, extracting from the request a meeting location and a meeting start time. The method also includes retrieving, from an event database, event information for a preceding event occurring before the meeting, including an event location and an event end time. The method includes determining travel time from the event location to the meeting location, and identifying a potential travel time scheduling conflict when the travel time exceeds a time difference between the event end time and the meeting start time. The method includes providing notification of the potential travel time scheduling conflict to the requester.
  • A server system for providing scheduling assistance comprises one or more processors for executing programs and memory storing one or more programs be executed by the one or more processors, the one or more programs comprising instructions executed by the one or more processors so as to perform the aforementioned method for providing scheduling assistance.
  • A non-transitory computer readable storage medium stores one or more programs configured for execution by a computer, the one or more programs comprising instructions for performing the aforementioned method for providing scheduling assistance.
  • Some embodiments involve a computer-implemented method of providing scheduling assistance, performed on a system having one or more processors and memory storing one or more programs for execution by the one or more processors. The method includes, in response to a meeting invitation to an invitee from a requester, extracting from the meeting invitation a meeting location and a meeting start time. The method also includes retrieving, from an event database, event information for a preceding event occurring before the meeting, including an event location and an event end time, the preceding event comprising a calendar event in a calendar associated with the invitee. The method includes determining travel time from the event location to the meeting location, and identifying a potential travel time scheduling conflict when the travel time exceeds a time difference between the event end time and the meeting start time. The method includes providing notification of the potential travel time scheduling conflict to the invitee.
  • A server system for providing scheduling assistance comprises one or more processors for executing programs and memory storing one or more programs be executed by the one or more processors, the one or more programs comprising instructions executed by the one or more processors so as to perform the aforementioned method for providing scheduling assistance.
  • A non-transitory computer readable storage medium stores one or more programs configured for execution by a computer, the one or more programs comprising instructions for performing the aforementioned method for providing scheduling assistance.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • For a better understanding of the aforementioned aspects of the invention as well as additional aspects and embodiments thereof, reference should be made to the Description of Embodiments below, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
  • FIG. 1 is a block diagram illustrating an exemplary distributed computer system in accordance with some embodiments.
  • FIG. 2 is a block diagram illustrating a calendar system in accordance with some embodiments.
  • FIG. 3 is a block diagram illustrating a client, in accordance with some embodiments.
  • FIG. 4 is a block diagram illustrating an exemplary event database and an exemplary entry in the event database, in accordance with some embodiments.
  • FIG. 5 is a block diagram illustrating an exemplary travel time database and exemplary travel time records, in accordance with some embodiments.
  • FIGS. 6A and 6B are flowcharts representing a method of determining a time to provide an event reminder, in response to a predefined triggering event, in a calendar system, in accordance with some embodiments.
  • FIG. 7 is a high-level flowchart illustrating processes performed by a client and a server system, in accordance with some embodiments.
  • FIGS. 8A-8C are flowcharts representing a method of providing scheduling assistance, in response to a request from a requester for scheduling a meeting.
  • FIGS. 9A-9C are high-level flowcharts illustrating processes performed by client(s) and a server system, for providing notification of potential scheduling conflicts, in accordance with some embodiments.
  • Like reference numerals refer to corresponding parts throughout the drawings.
  • DESCRIPTION OF EMBODIMENTS
  • Methods and systems for determining a time to provide an event reminder are described. Reference will be made to certain embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the embodiments, it will be understood that it is not intended to limit the invention to these particular embodiments alone. On the contrary, the invention is intended to cover alternatives, modifications and equivalents that are within the spirit and scope of the invention as defined by the appended claims.
  • Moreover, in the following description, numerous specific details are set forth to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that the invention may be practiced without these particular details. In other instances, methods, procedures, components, and networks that are well-known to those of ordinary skill in the art are not described in detail to avoid obscuring aspects of the present invention.
  • It will also be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first contact could be termed a second contact, and, similarly, a second contact could be termed a first contact, without departing from the scope of the present invention. The first contact and the second contact are both contacts, but they are not the same contact.
  • The terminology used in the description of the embodiments herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used in the description of the invention and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
  • As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in response to detecting,” depending on the context. Similarly, the phrase “if it is determined” or “if [a stated condition or event] is detected” may be construed to mean “upon determining” or “in response to determining” or “upon detecting (the stated condition or event)” or “in response to detecting (the stated condition or event),” depending on the context.
  • As used herein, the term, “requester” is used to mean a person scheduling, initiating, or organizing a meeting.
  • As used herein, the terms, “meeting” and “event” are used interchangeably to mean a calendar event involving one or more participants. As used herein, “meetings” can include both single-participant meetings (e.g., a person reserving a conference room to work alone on a confidential matter), and multiple-participant meetings. As used herein, the terms “meeting location” and “event location” refer to the physical location of a meeting or event, respectively, such as a conference room, other room, physical address, city, campus, campus sub-region, building, floor, and/or building sub-region.
  • As used herein, the terms “invitee” and “potential participant” have been used interchangeably to mean people invited to an event, irrespective of whether they have accepted, declined, or not yet responded to the invitation. Furthermore, as used herein, the “invitees” of a meeting include the requester of the meeting.
  • As used herein, the term “required attendee” is used to mean invitees whose attendance a requester has identified as required, irrespective of whether they have accepted, declined, or not yet responded to the invitation. As used herein, the term, “optional attendee” has been used to mean invitees whose attendance a requester has identified as optional, irrespective of whether they have accepted, declined, or not yet responded to the invitation.
  • FIG. 1 is a block diagram illustrating an exemplary distributed computer system 100, according to certain embodiments. In FIG. 1, system 100 includes one or more client computers 102, a communications network 106, and a calendar system 108 (sometimes called server system 108). Various embodiments of calendar system 108 implement the reminder time determination methods described in this document.
  • Client computers 102 can be any of a number of computing devices (e.g., Internet kiosk, personal digital assistant, cell phone, gaming device, desktop computer, laptop computer, handheld computer, or combinations thereof) used to enable the activities described below. Client computer(s) 102 is also referred to herein as client(s). Client 102 includes a graphical user interface (GUI) 111. Client 102 is described in greater detail below with reference to FIG. 3. Client 102 is connected to calendar system 108 via communications network 106. As described in more detail below, the GUI 111 is used to display calendar event information, including an event reminder.
  • Calendar system 108 provides a calendar service, including determining the timing of event or meeting reminders, to a community of users (e.g., the employees of a company, the members of an organization or group, the users of a facility, and the users of a web-based calendar system, such as Google Calendar) who access the calendar system from the clients 102. Calendar system 108 also provides typical calendar service, such as sending and receiving meeting invitations, accepting and/or declining meeting invitations, sending notification of acceptance/declination, storing meeting/event information, and presenting meeting/event information.
  • Calendar system 108 includes one or more servers, such as server 112, connected to the communications network 106. Optionally, the one or more servers are connected to the communications network 106 via a front end server 122 (e.g., a server that conveys (and optionally parses) inbound requests to the appropriate server of calendar system 108, and that formats responses and/or other information being sent to clients in response to requests). Front end server 122, if present, may be a web server providing web based access to calendar system 108. Front end server 122, if present, may also route communications to and from other destinations, such as a calendaring system.
  • Calendar system 108 includes a user information database 116, an event database 118, and optionally a travel time database 120. In some embodiments, calendar system 108 also includes or has access to one or more other databases, such as one or more map databases 126. Server 112 includes a reminder processing module 124 and applications 128. In some embodiments, server 112 also includes user information processing module 114. Server 112 communicates with databases internal to calendar system 108, such as user information database 116, event database 118, and travel time database 120, and in some embodiments, map database 126 using a local area network, by internal communication busses, or by any other appropriate mechanism or combination of mechanism.
  • Server 112 communicates with clients 102 via the front end server 122 (if present) and communication network(s) 106. In the cases where the calendar system includes multiple servers, each server, such as server 112, is optionally coupled to a communication network 106 via a front end server 122. In some embodiments, the communications network 106 is the Internet. In other embodiments, the communication network 106 can be any local area network (LAN), wide area network (WAN), metropolitan area network, or a combination of such networks. In some embodiments, server 112 is a web server that manages electronic calendars using appropriate communication protocols. Alternatively, if server 112 is used within an intranet, it may be an intranet server.
  • Applications 128 include application programs used for managing an online calendar system. In some embodiments, applications 128 also include a user information processing module (e.g., user information processing module 114), where the user information processing module assists in accessing and updating user information database 116. User information database 116 stores various information associated with the users of calendar system 108, including user preferences, default locations, and a default reminder time interval. Event database 118 store information (e.g., metadata) concerning various types of calendars as well as data (e.g., event data, also called event entry data, calendar data, calendar entry data, or calendar event data) from various calendars.
  • Reminder processing module 124 determines a time to provide an event reminder for a respective event for a respective user. Reminder processing module 124 retrieves stored event information. In some embodiments, reminder processing module transmits the determined time to client 102, and client 102 provides an event reminder at the event reminder time for the respective user.
  • In some embodiments, reminder processing module 124 assists in accessing and updating event database 118. In some other embodiments, reminder processing module 124 also assists in accessing and updating travel time database 120.
  • Travel time database 120, if included in system 108, includes travel times between pairs of locations among a plurality of locations. In some embodiments, travel time database 120 includes travel times for respective time segments (e.g., morning/evening commute time, carpool lane time, etc.), for respective time of the week (e.g., weekday v. weekend), for respective time of the year (e.g., national holiday, shopping season, etc.), for a respective direction (e.g., heading north v. heading south), for a respective mode of travel (e.g., walking; riding on a walkway, if available; driving; taking a public transportation; taking an elevator; and taking the stairs).
  • In some embodiments, map database 126 stores location information (e.g., such as city, campus, campus sub-region, building, floor, and/or building sub-region) concerning various locations, including event locations. In some other embodiments, map database 126 also stores information about pathways and/or travel distance between event locations.
  • In some embodiments, calendar system 108 includes or has access to a map server 130. Map server 130 is a server (e.g., a server for the Google Maps service) that provides travel directions, travel distance, and/or travel time, between specified pairs of locations. Optionally, embodiments that include or have access to map server 130 use map server 130 instead of travel time database 120 to obtain travel times between specified locations. When two locations are in the same building or campus, such that map server 130 is unable to provide an estimated travel time between the two locations, a default travel time may be used. Alternatively, travel time database 120 may be used in conjunction with map server 130 to provide travel times.
  • In some embodiments, the user information database 116 includes user information records having information relevant to determining travel times. For example, the user information record for a respective user may include, in addition to identifying information for the user, a default location (e.g., the location of the user's office), a default reminder time interval selected by the user, and user preferences (e.g., mobility limitations, transportation preference, data display preference, etc.).
  • In essence, server 112 is configured to manage certain aspects of calendar system 108, including transmitting event data (including event reminder time) to a respective client 102 for rendering at least a portion of the data on an electronic calendar in calendar system 108 based on the respective user's preferences.
  • In some embodiments, client 102 provides an event reminder for a respective user by displaying the event reminder on GUI 111. In some other embodiments, client 102 provides an event reminder for a respective user by playing a predefined music or by vibration.
  • Optionally, position sensing devices 104 (e.g., a global positioning system (GPS) device) are connected to calendar system 108 via communications network 106. In some embodiments, position sensing device 104 includes a network communication module. In some embodiments, position sensing device 104 includes a sensor to identify a respective user (e.g., a badge reader, a face identification system, etc.). In some embodiments, client 102 includes position sensing device 104 (e.g., a mobile telephone with a GPS capability). Position sensing device 104 can be fixed in one location or portable.
  • In some embodiments, fewer and/or additional modules, functions or databases are included in calendar system 108 and server 112. The modules shown in calendar system 108 and server 112 represent functions performed in certain embodiments.
  • FIG. 2 is a block diagram illustrating calendar system 108 in accordance with some embodiments. Calendar system 108 typically includes one or more processing units (CPUs) 202, one or more network or other communications interfaces 204, memory 206, and one or more communication buses 208 for interconnecting these components. In some embodiments, the communication buses 208 include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. In some other embodiments, calendar system 108 includes a user interface (not shown) (e.g., a user interface having a display device, a keyboard, and a mouse or other pointing device), but more typically calendar system 108 is controlled from and accessed by various client systems.
  • Memory 206 of calendar system 108 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory 206 may optionally include one or more storage devices remotely located from the CPU(s) 202. Memory 206, or alternately the non-volatile memory device(s) within memory 206, comprises a computer readable storage medium. In some embodiments, memory 206, or the non-volatile memory device(s) within memory 206, comprises a non-transitory computer readable storage medium. In some embodiments, memory 206 or the computer readable storage medium of memory 206 stores the following programs, modules and data structures, or a subset thereof:
      • Operating System 210 that includes procedures for handling various basic system services and for performing hardware dependent tasks;
      • Network Communication Module (or instructions) 212 that is used for connecting calendar system 108 to other computers (e.g., clients 102) via the one or more network interfaces 204 and one or more communications networks 106 (FIG. 1), such as the Internet, other wide area networks, local area networks, metropolitan area networks, and so on;
      • Calendar Engine 214 that receives calendar-related requests from and provides responses to clients 102; and
      • Presentation module 220 that formats results from calendar engine 214 for display at respective clients; for example, presentation module 220 may generate a web page or XML document that includes meeting/event information; in some embodiments presentation module 220 is executed by the front end server 122, which comprises one of the servers implementing the calendar system; optionally the presentation module 220 is a module of the calendar engine 214.
  • In some embodiments, calendar engine 214 includes the following programs, modules and data structures, or a subset or superset thereof:
      • a server 112 for managing certain aspects of calendar system 108 including a reminder processing module 124 and applications 128, including calendar application 222 for performing the primary functions of an online calendar system; reminder time application 216 for determining a time to provide an event reminder; reminder time application 216 includes a reminder time-client interface program (or module) 217 for receiving reminder time requests from and generating responses to the requests; application 128 may optionally include other applications 218;
      • User information database 116 that stores records for users;
      • Event database 118 that stores information (e.g., metadata) concerning various types of calendars as well as data (e.g., event data, also called event entry data, calendar data, calendar entry data, or calendar event data) from various calendars;
      • Travel time database 120 that includes travel times between two locations among a plurality of locations; and
      • Optional map database 126 that stores location information (e.g., such as city, campus, campus sub-region, building, floor, and/or building sub-region) concerning various types of locations; and optionally also stores information about pathways and/or travel distance between locations.
  • Each of the above identified software systems, modules, procedures and applications correspond to a set of instructions for performing one or more functions described above. These modules (i.e., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various embodiments. In some embodiments, memory 206 may store a subset of the modules and data structures identified above. Furthermore, memory 206 may store additional modules and data structures not described above.
  • Notwithstanding the discrete blocks in FIGS. 1 and 2, these figures are intended to be a functional description of some embodiments rather than a structural description of functional elements in the embodiments. One of ordinary skill in the art will recognize that an actual implementation might have the functional elements grouped or split among various components. In practice, and as recognized by those of ordinary skill in the art, items shown separately could be combined and some items could be separated. For example, in some embodiments, event database 118 is part of or stored within server 112. In other embodiments, event database 118 is implemented using one or more servers whose primary function is to store and process user information. In some embodiments, travel time database 120 includes map database 126, or vice versa. In some other embodiments, a map server 130 includes travel time database 120 and/or map database 126. For example, map server 130 may be a remote server, at a different physical location from calendar engine server 112. User information database 116 can be implemented on one or more servers.
  • The actual number of servers used to implement a calendar system 108 and how features are allocated among them will vary from one implementation to another, and may depend in part on the amount of data traffic that the system must handle during peak usage periods as well as during average usage periods, and may also depend on the amount of data stored by the calendar system. Moreover, one or more of the blocks in FIG. 1 may be implemented on one or more servers designed to provide the described functionality. Although the description herein refers to certain features implemented in client 102 and certain features implemented in server 112, the embodiments are not limited to such distinctions. For example, at least some of the features described herein as being part of server 112 can be implemented in whole or in part in client 102, and vice versa.
  • FIG. 3 is a block diagram illustrating a client, also called client systems or client devices, in accordance with some embodiments. The clients 102 as shown in these figures are configured for use by a subscriber (also herein called “the user”) of calendar system 108. The client includes a user interface 300, which typically includes a display device 301, and one or more input devices 303 such as a keyboard and a mouse or other pointing device. As noted above, client 102 includes a graphical user interface (GUI) 111, which is displayed on the display device 301. Client 102 typically includes one or more processing units (CPUs) 302, one or more network or other network communications interfaces 304, memory 306, and one or more communication buses 308 for interconnecting these components. The communication buses 308 may include circuitry (sometimes called a chipset) that interconnects and controls communications between system components.
  • Memory 306 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory 306 may optionally include one or more storage devices remotely located from the CPU(s) 302. Memory 306, or alternately the non-volatile memory device(s) within memory 306, comprises a computer readable storage medium. In some embodiments, memory 306, or the non-volatile memory device(s) within memory 306, comprises a non-transitory computer readable storage medium. In some embodiments, memory 306 or the computer readable storage medium of memory 306 stores the following programs, modules and data structures, or a subset thereof:
      • Operating System 310 that includes procedures for handling various basic system services and for performing hardware dependent tasks;
      • Network Communication Module (or instructions) 312 that is used for connecting client 102 to other computers (e.g., calendar system 108 and other clients 102) via the one or more communications Network Interfaces 304 (wired or wireless) and one or more communication networks 106 (FIG. 1), such as the Internet, other wide area networks, local area networks, metropolitan area networks, and so on;
      • Calendar Application 314; optionally, the calendar application 314 or an extension, plug-in or toolbar of the browser application includes a reminder module 316 that handles data formatting and/or management tasks in providing an event reminder, at least some of which would otherwise be handled by presentation module 220 (FIG. 2);
      • Calendar Display Page 318, which is a webpage received from calendar system 108, for displaying calendar data in GUI 111; conference display page 318 may optionally include reminder module 316 (i.e., module 316 is executable code embedded in page 318); and
      • (optional) Calendar Data 320, which is a locally stored subset of the user's calendar; calendar data 320, if stored at the client 102, optionally includes calendar event data 322 (e.g., time and location of an event) and reminder data 324 (e.g., time to provide an event reminder).
  • In some embodiments, the client 102 may be a “thin client,” which includes a calendar application 314 that displays the calendar display page 318 received from calendar system 108. In this embodiment, the client 102 only displays the calendar display page, and executes programs, if any, embedded within the calendar display page 318, but does not include additional software. In some embodiments, programs embedded within the calendar display page format calendar data for display. In thin client embodiments, calendar related processing other than user data input, calendar display, and reminder display are handled by calendar system 108.
  • FIG. 4 is a block diagram illustrating an exemplary event database 118 and an exemplary event entry record 400-x in accordance with some embodiments. Event database 118 stores event entry records 400, for example entry 1 (400-1) through entry x (400-x), where x represents the number of entries (or the number of entries for a respective user, or the number of entries in a local calendar database at a client 102). An entry 400 includes information for an event, sometimes called a calendar event, such as a meeting.
  • An event entry (e.g., entry x 400-x) includes the following data for a calendar event, or a subset or superset thereof:
      • Entry ID 402 that uniquely identifies this entry, which corresponds to a particular calendar event;
      • Requester ID(s) 404 that identifies the requester (or an event organizer) associated with the event entry;
      • Invitee ID(s) 406 that identifies the invitee(s) (optionally, including or excluding the requester) associated with the calendar entry; the information in this field optionally identifies required attendees, optional attendees, and guests/participants and further optionally identifies the requester. When a respective event entry 400-x does not have any invitees, Invitee ID(s) 406 is empty or is not included in the entry 400-x;
      • Start date and time 410 of the event (sometimes called a timestamp);
      • End date and time 412 of the event (sometimes called a timestamp), or alternatively, event duration (which, in combination with the start date and time 410, provides sufficient information to identify the end date and time of the event);
      • Recurrence rules 414 (if any) for the event (e.g., whether the meeting occurs only once, daily, weekly, every other week, monthly, yearly, etc., and the number of occurrences or an end date for terminating the series of events);
      • Location 416 (e.g., building, campus, city, address, etc.) of the event;
      • Event description 418 (e.g., title; description details; color coding; icon, if any, added to the event; event creator specified event importance, etc.);
      • Creation date and time 420 (sometimes called a timestamp);
      • User actions 422 (if any) with respect to the event, such as: information indicating which invitees of an event accepted, declined or tentatively accepted an invitation to the event; attending or not attending the event (if such information is available); user feedback, such as proposal to change the meeting date or time. User actions may also include other user actions, such as replies, comments, or deletion; and
      • Event Reminder Time 424 comprising a time at which the respective user is to be provided a reminder of the respective event. In some embodiments, the event reminder time is set to a reminder time based on a default reminder time interval set by a system administrator or a default reminder time interval for the respective users (e.g., stored in the user information database 116). The event reminder time can be updated when the server determines a different event reminder time for the respective event.
  • In some embodiments, a separate event database is maintained for each registered user of the system, while in other embodiments the event database 118 records events for multiple users.
  • FIG. 5 is a block diagram illustrating an exemplary travel time database 120 and an exemplary travel time records 500-y in accordance with some embodiments. Travel time database 120 stores travel time records, for example travel time records 500-1 through travel time records 500-y, where y may represent the number of regions. The regions are geographic division of areas covered by travel time database 120. For example, a region can be campus, campus sub-region, building, floor, and/or building sub-region. A travel time record includes travel time information for a respective pair of locations, sometimes called an origin and a destination.
  • In some embodiments, travel time records 500-y includes travel time entries, for example travel time entry 508-1 through travel time entry 508-q, where q may represent the number of entries in the set.
  • In some embodiments, travel time entry 508-q includes the following data, or a subset or superset thereof:
      • Origin 502 that identifies a location where a respective user starts travel to a destination;
      • Destination 504 that identifies a location where a respective user ends the travel;
      • Travel Time 506, representing a predicted travel time (duration of travel) for a respective user from Origin 502 to Destination 504; and
      • (Optional) Additional information, such as a time segment for travel time (e.g., the travel time stored in the travel time record is a representative travel time for that time segment), a mode of travel (e.g., walking; riding on a walkway, if available; driving; taking a bus or a subway; taking an elevator; and taking the stairs), a pathway, and major points in the pathway.
  • In some embodiments, travel time records include multiple travel time entries for a respective pair of an origin and a destination, where a respective entry includes travel time information for each time segment, for each mode of travel, for each pathway. In some embodiments, travel time records do not include the travel time for the reverse direction if the travel time for both directions is similar (e.g., within a predetermined percentage of error). In one example, the travel time database includes the travel time for travel from point A to point B, but does not include the travel time for travel from point B to point A when the travel between point A and point B takes approximately the same amount of time, regardless of the travel direction.
  • In some embodiments, travel time database 120 is a lookup table. In some embodiments, travel time database 120 is a lookup table including travel times for specific origin-destination pairs. In other embodiments, travel time database 120 includes travel time for a respective pair of locations without identifying which location is the origin and which is the destination.
  • In some embodiments, travel time database 120 is a sparse lookup table based on a simple model. For example, the model can be based on geographic levels, such as continent, country, state, city, campus, building, building section (floor, wing), etc.
  • In some embodiments where the system includes a map database 126, the travel time record 500-y includes a pointer or link to a location in the map database 126 corresponding to or proximate to the origin and/or the destination.
  • In some embodiments, travel time database 120 includes travel time records for travel between regions. For example where each region is a respective building on a campus, the travel time database includes travel time between buildings on the campus. In a related example where a shuttle bus travels around the campus, the travel time database includes travel times between shuttle bus stops (on a shuttle bus) and between a respective building and a proximate shuttle bus stop (e.g., by walking).
  • FIGS. 6A and 6B are flowcharts representing a method of determining a time to provide an event reminder for a respective event for a respective user, in response to a predefined triggering event, in a calendar system (e.g., calendar system 108), in accordance with some embodiments. In certain embodiments, calendar system 108 includes a server (e.g., server 112). The server determines a time to provide an event reminder (i.e., an event reminder time) in response to a predefined triggering event (602).
  • In some embodiments, the predefined triggering event is expiration of a predefined time interval prior to a respective meeting's start time. For example, the predefined time interval can be set to twenty-four hours before a meeting's start time, four hours before the meeting start time, one hour before the meeting's start time, or any other time interval before the meeting. When the predefined time interval is set as twenty-four hours before the meeting, server 112 responds by determining an event reminder time twenty-four hours before the meeting start time. Server 112 determines whether a predefined triggering event has occurred based on: the time provided by a clock (e.g., an internal clock of the server), information stored in the calendar system (e.g., event start time in event database 118), and the predefined time interval. The predefined time interval can be set by a user, a server system administrator or automatically in accordance with a default value.
  • In some embodiments, the predefined triggering event occurs multiple times, at predefined time interval, prior to the event start time. For example, the predefined time interval can be set to twenty-four hours, one hour, thirty minutes, five minutes, one minute, or any other time interval. When the predefined time interval is set as twenty-four hours, server 112 responds by determining and then updating an event reminder time every twenty-four hours. When the predefined time interval is set as one minute, server 112 responds by determining and then updating the event reminder time every minute.
  • In some embodiments, each event has a respective predefined time interval for updating the event reminder time. For example, a user A's meeting at 1:00 p.m. may have fifteen minute time interval, whereas a user B's meeting at 3:00 p.m. may have five minute time interval.
  • In some embodiments, the predefined time interval for updating the event reminder time is a function of time remaining before the event start time. For example, the predefined time interval can be set as one hour for events on the same day, but set as five minutes for events occurring within the next couple of hours.
  • In some embodiments, the predefined triggering event includes obtaining a location of a respective user. For example, when calendar system 108 receives a location of the respective user from a position sensing device (e.g., position sensing device 104-m in FIG. 1) or a mobile phone device, server 112 responds by determining an event reminder time having a start time with a predefined time range (e.g., having a start time in the next N hours).
  • In some embodiments, the predefined triggering event includes receiving event information or an update to the event information. In some other embodiments, the predefined triggering event includes receiving a request for an event reminder time from a client (e.g., client 102).
  • In some embodiments, the predefined triggering event is a combination of two or more of the triggering conditions described above.
  • In responding to the predefined triggering event (602), the server retrieves, from an event database (e.g., event database 118), event information for the respective event (604). The event information includes an event location and an event start time.
  • The server also obtains an origin of the respective user (606). In some embodiments, the origin is a default location of the respective user. For example, user information database 116 contains the default location of the respective user (e.g., the location of the respective user's office), and server 112 obtains the origin by retrieving the default location from user information database 116.
  • In some embodiments, obtaining the origin includes obtaining a location of the respective user from a position sensing device (608). In one example, the position sensing device (e.g., position sensing device 104) is a global positioning system (GPS) device or a device with a GPS capability (e.g., a mobile phone device with a GPS capability). The GPS device (or a device with a GPS capability) determines the location of the respective user, transmits the information to calendar system 108, and server 112 in calendar system 108 obtains the location of the respective user by receiving the information from the device. In another example, the position sensing device is a badge reader. When a respective user scans her badge on the badge reader, the badge reader sends the identity of the respective user and the location of the respective user (alternatively, the location of the badge reader) to calendar system 108, and server 112 in calendar system 108 uses the location in determining an event reminder time. In the other example, the position sensing device is a face identification system. The face identification system sends the identity of the respective user and the location of the respective user (alternatively, the location of the face identification system or a camera of the face identification system) to the server.
  • In some embodiments, obtaining the origin includes obtaining location information of the respective user from a mobile phone device (610). As described above with reference to the device with GPS capability, a mobile phone with GPS capability determines the location of the respective user, transmits the information to calendar system 108, and server 112 in calendar system 108 obtains the location of the respective user by receiving the information from the mobile phone. A mobile phone without GPS capability uses a mobile phone tracking method to determine the location. The mobile phone tracking method includes determining a location of a mobile phone based on signal power levels from cell towers and locations of the cell towers. For example, a software module (e.g., Google Latitude) can enable mobile phone tracking and allow a respective user to share the location information, for use in other applications, or with other users.
  • In some embodiments, obtaining the origin includes obtaining from the event database a location of a preceding event for the respective user, the preceding event occurring before the respective event (612). For example, when the respective user has a meeting in a building A between 1:00 and 2:00 p.m. and another meeting in a building B between 2:00 and 3:00 p.m., in determining an event reminder time for the 2:00 p.m. meeting, server 112 retrieves the location of the preceding event (the 1:00 p.m. meeting in this example) from event database 118. This method is especially useful when the calendar system does not have a timely input from a position sensing device, and when the preceding event is at a location different from the user's default location and the estimated travel time (TravelTime) from the location of the preceding event to the next event satisfies a predefined relationship (e.g., Travel Time≧1.5*BetweenTime) to the time gap (BetweenTime), if any, between the preceding event's end time and the start time of the next event.
  • In some embodiments, or in some circumstances (as described above), server 112 treats the location of the preceding event as the location of the respective user.
  • In other embodiments, server 112 furthermore retrieves the end time of the preceding event. Then, server 112 determines the location of the respective user based on the location of the preceding event, the default location of the respective user, the end time of the preceding event, the start time of the respective event, and the travel time between the location of the preceding event and the default location. In some embodiments, if a time gap between the preceding event and the respective event is more than a predefined threshold (e.g., one hour), and if the time gap is more than the travel time between the location of the preceding event and the default location, server 112 treats the default location as the origin of the respective user. For example, when the preceding event ends at 1:00 p.m. and the respective event starts at 3:00 p.m., the estimated travel time for the respective user to travel from the location of the preceding event to the default location (e.g., the respective user's office) is ten minutes, and the predefined threshold is one hour, the time gap is two hours, and thus the time gap is more than the predefined threshold. Then, server 112 treats the default location of the respective user as the origin of the respective user, based on the assumption that the respective user will return (or has returned) to the default location. In other embodiments, when the time gap between two successive events (i.e., with no intervening events noted in the user's calendar) is more than the sum of the travel time between the location of the preceding event and the default location and the travel time between the default location and the event location, server 112 treats the default location as the origin of the respective user for purposes of determining the event reminder time for the user.
  • In some embodiments, obtaining the origin of the respective user (606) includes determining the likelihood of attendance of the preceding event. The likelihood of attendance is calculated, for example, from the past attendance of the respective user, acceptance status of the preceding event (user actions 422 in entry 400 for the preceding event), past acceptance of event/meeting requests from a requester requesting the preceding event by the respective user, and schedule conflict for the respective user. The past attendance, acceptance status, past acceptance, and/or schedule conflict can be determined, for example, in accordance with information stored in event database 118. In some embodiments, the location of the preceding event is used as the origin only if the likelihood of attendance (of the preceding event) exceeds a predefined threshold (e.g., 50%, 60%, 70%, 80%, or a percentage defined by the respective user or a system administrator).
  • In some embodiments, obtaining the origin includes a combination of two or more of the methods described above. In some embodiments, the origin is determined in accordance with the recency of the location information. In some other embodiments, the origin is determined also in accordance with the accuracy and resolution of respective location information or the respective method (e.g., GPS, mobile phone based on mobile phone tracking, obtaining the origin by obtaining the location of the preceding event location, etc.) for obtaining the location information.
  • In some cases, a user or a requester may provide inexact location information for an event or meeting (hereinafter called a meeting, for convenience). An example of inexact location information is “corner conference room,” with no indication of the building, floor, or even the city in which the meeting is to occur. Typically, inexact location information does not match an entry in travel time database 120. In some embodiments, the calendar system attempts to determine the location of a meeting despite the use of inexact location information, in order to be able to provide distance-aware reminders, or distance-aware warnings of scheduling conflicts. In most circumstances, identifying the building in which a meeting is most likely to occur is sufficient for providing distance-aware event reminders or distance-aware warnings of scheduling conflicts. In some of these embodiments, the calendar system identifies the likely location of a meeting based on either the default locations of the participants (e.g., using the building-level default location shared by the most participants, or in the absence of any such location, the default location of the requester), or the locations (inferred, or known) of the participants prior to the event or meeting. For example, if the location(s) of event(s) attended by participants prior to the event having the inexactly location information can be determined, then that information can be used to identify a likely location of the meeting. In these embodiments, a set of rules is used to determine what information to use for establishing the likely location of a meeting. Such rules typically give preference to information considered most likely to be accurate, and give decreasing preference to sources of information considered to be increasing less likely to be accurate.
  • In some embodiments, when event information for a preceding event (sometimes called a “preceding meeting,” for convenience, although the preceding event need not be a “meeting”) with multiple attendees includes inexact location information, server 112 identifies the actual location of the preceding event in accordance with the locations of one or more attendees (e.g., obtained from position sensing devices or mobile phone devices associated with the one or more attendees). In some embodiments, server 112 identifies the actual location of the preceding event in accordance with the locations of two or more attendees, to improve accuracy in identifying the actual location (e.g., averaging, most populated location, etc.). In some embodiments, server 112 accesses and uses the invitee acceptance status of a preceding event (user actions 422 in entry 400 for the preceding event), so as to avoid using the location of a preceding event as the likely preceding location of invitees who have not accepted an invitation to the preceding event. Similarly, when the information for a recurring event includes inexact location information, the actual location of the recurring event can be determined in accordance with the historic locations of one or more attendees (e.g., obtained from position sensing devices or mobile phone devices associated with the one or more attendees) of prior instances of the recurring event.
  • In some embodiments, when server 112 cannot determine the location of a meeting, server 112 uses a default location for the meeting (e.g., the default location of the requester) to determine travel time. In some other embodiments, server 112 does not provide distance-aware meeting reminders and/or distance aware warnings of scheduling conflicts, with respect to a particular meeting or a subsequent meeting, when the location of the particular meeting is unknown due to the provision of inexact location information by the meeting requester.
  • After obtaining the origin of the respective user, server 112 determines a travel time for the respective user to travel from the origin to the event location (614). For example, server 112 determines a travel time by retrieving a travel time corresponding to the origin and the destination (e.g., the event location) from travel time database 120.
  • In some embodiments, determining the travel time includes additional steps as described with reference to FIG. 6B.
  • In some embodiments, determining the travel time includes determining a pathway from the origin to the event location (622). When there are multiple pathways from an origin to a destination, server 112 determines a pathway and determines the travel time corresponding to the determined pathway. In some embodiments, after determining a pathway, server 112 determines the travel time by retrieving the travel time from travel time database 120 based on the origin, the event location, and the determined pathway.
  • In some embodiments, the pathway consists of a plurality of segments, and server 112 determines the travel time by retrieving the travel time for the plurality of segments and summing up the retrieved travel times. In one example, the pathway from the building A to the building B includes a segment from the building A to a building C, and a segment from the building C to the building B. Server 112 retrieves the travel for each segment, and adds the two travel times to determine the travel time from the building A to the building B.
  • In some embodiments where travel time database 120 is a sparse lookup table based on geographic level, server 112 determines the travel time by retrieving the travel time for each geographic level, and summing up the retrieved travel times. In one example, the travel involves traveling from a building D in a city X to a building E in a city Y, where the user preference is to drive between the two cities. One potential pathway includes walking from the building D to a car in a first parking lot; driving from the first parking lot to a highway; driving on the highway from the city X to the city Y; driving from the highway to a second parking lot next to the building E; and walking from the second parking lot to the building E. Server 112 determines the travel time by adding travel time for each segment of the pathway (e.g., 5 minute walking to the first parking lot; 10 minute driving to the highway; 1 hour driving to the city Y; 20 minute driving to the second parking lot; 3 minute walk to the building E).
  • In some other embodiments, server 112 ignores travel times for geographic levels lower than the most significant geographic level by a predetermined threshold. In the above example, if the geographic levels include “intercity driving”, “city driving” (e.g., driving to and from a highway), “long distance walking”, and “short distance walking” (e.g., walking between a parking lot and a building), the most significant geographic level is the intercity driving between the two cities. If the predetermined threshold is one level, the “short distance walking” is lower than the “intercity driving” by more than one level. Then, server 112 ignores the travel time for short distance walking (e.g., the travel from the building D to the first parking lot and the travel from the second parking lot to the building E) in determining the travel time from the origin to the event location. However, as “city driving” is within one level from the “intercity driving”, server 112 includes the city driving times in determining the travel time. In this example, server 112 adds the travel time for the most significant geographic level (intercity driving: 1 hour from the city x to the city Y) and the travel times for city driving (10 minute driving to the highway, and 20 minute driving from the highway) to determine the travel time from the origin to the event location.
  • In some embodiments, determining the pathway includes calculating a distance from the origin to the event location (624). For example, when calendar system 108 includes or has access to a map database 126, server 112 retrieves the distance information from the map database 126. In some embodiments, server 112 calculates the distance from the origin to the event location by adding distances between intermediate points available in a map database. In one example, the map database 126 does not include a distance between the building A and the building B, but includes the distance between the building A and the building C, and the distance between the building C and the building B. Then, server 112 calculates the distance from the building A to the building B by adding the two distances. In some other embodiments, when calendar system 108 includes or has access to a map server 130, server 112 requests and receives the distance information from the map server 130 at least for a subset of the segments between the origin and the destination.
  • In some embodiments, server 112 determines the pathway in accordance with the distance. For example, server 112 selects the pathway with the shortest distance.
  • In some embodiments, determining the pathway further includes determining a mode of travel based on the distance (626). In one example, user preferences for a respective user stored in user information database 116 includes that the respective user prefers to walk when the travel distance is less than 2 miles and prefers to drive a car when the travel distance is more than 2 miles. In this example, if the distance from an origin to a destination is less than 2 miles, server 112 determines that the mode of travel for the pathway is walking.
  • In some embodiments, determining the travel time includes determining the travel time based on the mode of travel. In one example, server 112 determines the travel time by dividing the pathway distance by an estimated speed of travel. In another example in which multiple modes of travel are possible, server 112 determines the travel time by dividing the pathway distance by an estimated speed of travel for the respective mode of travel. In some embodiments, travel time database 120 includes the travel time records for a plurality of modes of travel from origins to destinations, and server 112 retrieves the travel time for the mode of travel.
  • In some embodiments, determining the pathway includes identifying a plurality of candidate pathways from the origin to the event location, and selecting a pathway from the plurality of candidate pathways based on a predefined criteria (628). In some embodiments, travel time database 120 includes a plurality of pathways from the origin to the event location. In some other embodiments, map database 126 or map server 130 provides a plurality of pathways from the origin to the event location. Server 112 identifies a plurality of candidate pathways by retrieving/requesting the pathways from travel time database 120, map database 126, or map server 130.
  • In some embodiments, server 112 selects a pathway that best matches the predefined criteria. Alternatively, server 112 selects one of the pathways that match the predefined criteria.
  • In some embodiments, the predefined criteria includes a user preference (630). For example, the user preference (e.g., stored in user information database 116) can be any of the set consisting of: highway v. local road, going through a building v. going around the building, driving v. public transportation, and driving v. walking. The user preference can also include mobility limitations of the user. In some embodiments, server 112 compares respective pathways and the user preference, and deselects pathways that do not meet the user preferences. For example, when the user preferences include avoiding stairways, server 112 deselects pathways that include travel on stairways from the identified plurality of pathways.
  • In some embodiments, the predefined criteria includes an estimated travel time from the origin to the event location for each candidate pathway (632). For example, server 112 obtains an estimated travel time for each candidate pathway by retrieving the travel time from travel time database 120. Then, server 112 selects a pathway with the shortest travel time.
  • In some embodiments, determining the pathway includes identifying the pathway characteristics (634). For example, pathway characteristics include different floors, different buildings, potential traffic, distance further than the walking distance for a respective user (and therefore having to use a mode of travel other than walking), etc. In various embodiments, server 112 identifies the pathway characteristics by retrieving the pathway characteristics from one or more of: travel time database 120, map database 126, and map server 130.
  • In some embodiments, determining the travel time includes obtaining a representative travel time from the origin to the event location from a travel time database (636). In one example, travel time database 120 includes a representative travel time, and server 112 obtains the representative travel time from travel time database 120. In some other embodiments, server 112 obtains the representative travel time by adding representative travel time for respective segments for the pathway. In other embodiments, server 112 obtains the representative travel time by calculating respective travel time for a respective segment (e.g., by dividing the distance for the respective segment by an estimated speed of travel).
  • In some embodiments, server 112 updates travel time database 120 in accordance with actual travel times of the respective user (638). For example, server 112 determines the arrival of the respective user at the event location by comparing the location of the respective user and the event location. Then, server 112 updates the travel time database in accordance with actual travel time of the respective user. In some other embodiments, server 112 tracks the location of the respective user from a position sensing device 104 or a mobile phone device and determines the travel time for respective segment of the pathway that the respective user has traveled. Then server 112 updates travel time database 120 for the respective traveled segment.
  • In some embodiments, determining a travel time includes rounding the travel time based on a predetermined time increment. In one example when the predetermined time increment is five minutes and the travel time is fourteen minutes, server 112 determines the travel time to be fifteen minutes by rounding fourteen minutes to the nearest increment of five minutes (i.e., fifteen is the closest number to fourteen among increments of five). In another example when the predetermined time increment is ten minutes and the travel time is twenty-one minutes, server 112 determines the travel time to be twenty minutes (i.e., twenty is the closest number to twenty-one among increments of ten).
  • In some other embodiments, determining a travel time includes rounding up the travel time based on a predetermined time increment. In one example when the predetermined time increment is five minutes and the travel time is twelve minutes, server 112 determines the travel time to be fifteen minutes by rounding up twelve minutes to the closest five minute increment (i.e., fifteen is the smallest number among increments of five that is not less than twelve). In another example, when the predetermined time increment is ten minutes and the travel time is twenty-one minutes, server 112 determines the travel time to be thirty minutes (i.e., thirty is the smallest number among increments of ten that is not less than twenty-one).
  • After determining the travel time, server 112 determines an event reminder time for the respective event, in accordance with the event start time and travel time (616). The event reminder time includes a time at which the respective user is to be provided a reminder of the respective event. In some embodiments, the event reminder time is a time preceding the event start time by the travel time. For example, if the event start time is 3:00 p.m. and the travel time is one hour, the event reminder time is 2:00 p.m. (one hour before 3:00 p.m.). In another example, if the event start time is 11:00 a.m. and the travel time is fifteen minutes, the event reminder time is 10:45 a.m. (fifteen minutes before 11:00 a.m.).
  • In some embodiments, server 112 stores the event reminder time in the event database 118. For example, server 112 updates the event database 118 with the event reminder time.
  • In some embodiments, determining the event reminder time includes adjusting the event reminder time in accordance with a buffer. The buffer is an additional time interval to provide the respective user time to prepare for travel or to account for potential delays during the travel. In some embodiments, the buffer is a fixed amount of time. In one example, when the event reminder time based on travel time is 2:45 p.m. and the buffer is five minutes, server 112 revises the event reminder time to 2:40 p.m. (i.e., five minutes before 2:45 p.m.). In other embodiments, the buffer is a predetermined fraction of the travel time. In one example where the travel time is one hour and the predetermined percentage is ten percent, server 112 revises the event reminder time by six minutes (i.e., ten percent of one hour). In some embodiments, the buffer is a sum of both a fixed amount of time and a fraction of the travel time.
  • In some embodiments, server 112 maintains two event reminder times: one based on a predetermined time interval before the event, and the other based on the origin of the respective user and the travel time. In some embodiments, server 112 provides at least one event time reminder, based on the predetermined time interval before the event. In some other embodiments, server 112 does not provide a reminder if the respective user is already at the event location before the event reminder time.
  • In some embodiments, the server provides a reminder of the respective event to the respective user at the event reminder time (618). In one example, server 112 indicates the event reminder time by updating the calendar data 120 for the respective user. In another example, server 112 provides a calendar display page containing the event reminder time to the respective user.
  • In some embodiments, server 112 updates the reminder time at a predetermined time interval prior to the event. For example when the predetermined time interval is one hour before a respective event, server 112 determines the event reminder time one hour before the event. In addition, server 112 optionally updates the predetermined time interval (e.g., to thirty minutes) so that server 112 updates the event reminder time at the revised time interval prior to the event (e.g., thirty minutes prior to the event) to account for any changes (e.g., change to the event location, cancellation, travel of the respective user) that may occur during the intervening time (i.e., from one event reminder time update to a next event reminder time update).
  • In some embodiments, the server provides the event reminder time to a client device of the respective user (620). For example, server 112 sends the event reminder time to client 102 of the respective user, and client 102 presents the reminder to the respective user at the event reminder time. For example, the event reminder time is provided to one or more clients 102 associated with the user, and at least one of those clients presents the reminder to the respective user at the event reminder time.
  • FIG. 7 is a flowchart illustrating processes performed by a client 102 and a calendar system 108, in accordance with some embodiments. It will be appreciated by those of ordinary skill in the art that one or more of the acts described may be performed by hardware, software, or a combination thereof, as may be embodied in one or more computing systems. In some embodiments, portions of the process performed by calendar system 108 can be performed by client 102.
  • Client 102 sends event information to calendar system 108 (sometimes called sever system 108) (702), and calendar system 108 performs initial processing of the event information (704). In some embodiments, initial processing includes parsing the event information to extract information recordable in an event database entry (e.g., event database entry 400-x in FIG. 4). Calendar system 108 stores event information in event database (706).
  • In some embodiments, client 102 initiates event database synchronization (708). In other embodiments, calendar system 108 initiates event database synchronization (710). Once event database synchronization is initiated, client 102 and calendar system 108 communicate with each other to synchronize the client and server event databases. In some embodiments, synchronizing the event databases includes synchronizing event reminder time. In some embodiments when client 102 determines an event reminder time, calendar system 108 copies the event reminder time in client 102 during event database synchronization. In some other embodiments when the calendar system 108 determines an event reminder time, client 102 copies the event reminder time in calendar system 108 during event database synchronization. In other embodiments when both the calendar system 108 and the client 102 determine an event reminder time, whether client 102 copies from calendar system 108 or vice versa depends on whether client 102 or calendar system 108 determined the event reminder time last. Stated another way, during event database synchronization, the last determined value of a respective event reminder time prevails and is copied to the other system. After the event database synchronization, the event reminder time in client 102 matches the event reminder time in calendar system 108.
  • Calendar system 108 receives a triggering event (712), and retrieves event information (714). In some embodiments, calendar system 108 retrieves event information from event database 118.
  • In addition to retrieving event information, calendar system 108 obtains an origin of the respective user (718). In some embodiments, the calendar system 108 obtains the origin of the respective user as described with reference to operation 606 (FIG. 6A).
  • After obtaining the origin of the respective user, calendar system 108 determines a travel time to the event location (720). In some embodiments, calendar system 108 determines the travel time as described with reference to operation 614.
  • After determining the travel time, calendar system 108 determines an event reminder time (722). In some embodiments, calendar system 108 determines the event reminder time as described with reference to operation 616.
  • In some embodiments, client 102 requests the event reminder time (724), and calendar system 108 sends the event reminder time to client 102 in response to the request. In other embodiments, calendar system 108 transmits the event reminder time to client 102 without a request from client 102. For example, calendar system 108 sends the event reminder time at a predetermined time. The predetermined time can be, for example, a predetermined time of the day, or a predetermined time interval before the event reminder time.
  • Client 102 receives the event reminder time (726). In some embodiments, client 102 stores the event reminder time as reminder data (e.g., reminder data 324 in FIG. 3).
  • Client 102 presents an event reminder to the respective user at the event reminder time (728). In some embodiments, reminder module 316 (in FIG. 3) presents the event reminder to the respective user at the event reminder time. In other embodiments, the event reminder is presented as part of a calendar display page (e.g., calendar display page 318 in FIG. 3).
  • FIGS. 8A-8C are flowcharts representing a method 800 of providing scheduling assistance, in response to a request from a requester for scheduling a meeting, in a calendar system (e.g., calendar system 108), in accordance with some embodiments. In certain embodiments, calendar system 108 includes a server (e.g., server 112). The server provides scheduling assistance in response to a request from a requester for scheduling a meeting (802).
  • In some circumstances, the request from a requester for scheduling a meeting includes a request for scheduling a new meeting. In some other circumstances, the request for scheduling a meeting includes a request for rescheduling a meeting in the calendar (e.g., changing the meeting time). In yet other circumstances, the request for scheduling a meeting includes a request to add one or more additional invitees to a meeting in the calendar.
  • The request includes a meeting location and a meeting start time. The server extracts the meeting location and the meeting start time from the request (804). In some embodiments, the request is stored in event database 118. In other embodiments, the request is stored in the front end server 122, or in memory 206 of server 108 or server 112. Server 112 retrieves the request and extracts the meeting location and the meeting start time from the request. Any calendar system records linked to or associated with the request that contain meeting time and start time information are considered to be part of the request for purposes of extracting information such as the meeting location and meeting start time.
  • The server also retrieves, from an event database, event information for a preceding event occurring before the meeting, including an event location and an event end time (806). In some embodiments, retrieving event information for the preceding event includes identifying the preceding event, if any. When multiple events occur before a meeting, the preceding event is a closest event that occurs before the meeting. For example when the requester is scheduled to attend one-hour meetings at 9:00 a.m., 12:00 p.m., and 3:00 p.m., and a newly requested meeting starts at 2:00 p.m., server 112 identifies the 12:00 p.m. meeting as the preceding event occurring before the 2:00 p.m. meeting. After identifying the 12:00 p.m. meeting as the preceding event, server 112 retrieves event information for the 12:00 p.m. meeting from the event database. In some embodiments, the event information stored in the event database includes the event start time and the duration instead of the event end time. In such embodiments, server 112 determines the event end time based on event information stored in the event database, such as the event start time and the duration.
  • After retrieving the event location and the event end time, the server determines travel time from the event location to the meeting location (808). For example, server 112 determines a travel time by retrieving a travel time corresponding to the event location (as a starting point) and the meeting location (as a destination) from travel time database 120.
  • In some embodiments, determining the travel time includes identifying a location near the event location or the meeting location. The identified location is a location for which travel time database 120 includes travel time information. In some embodiments, determining the travel time also includes determining whether travel time database 120 includes or does not include travel time information for the event location or the meeting location.
  • In one example, when the requester travels from the event location, conference room ABC, to the meeting location, conference room XYZ, travel time database 120 does not include travel time information for the conference room ABC. When server 112 determines that travel time database 120 does not include travel time information for conference room ABC, it identifies a location near the event location, for example a conference room DEF. In this example, travel time database 120 includes the travel time from the conference room DEF to the conference room XYZ.
  • In some embodiments, server 112 identifies the location near the event location or the meeting location in accordance with the map server 130 and travel time database 120. In some other embodiments, travel time database 120 includes location information for the starting point (i.e., origin) and the ending point (i.e., destination). For example, travel time database 120 additionally includes that the conference room DEF is located in the north-west corner of the eighth floor. If the map database 126 or the map server 130 includes information that the conference room ABC is also located in the north-west corner of the eighth floor, server 112 determines that the conference rooms ABC and DEF are located close to each other, and that the travel time from the conference room DEF represents the travel time from the conference room ABC.
  • In some embodiments, determining the travel time includes additional steps as described with reference to FIG. 8B.
  • In some embodiments, determining the travel time includes determining a pathway from the event location to the meeting location (816). When there are multiple pathways from the event location to the meeting location, server 112 determines a pathway and determines the travel time corresponding to the determined pathway. In some embodiments, after determining a pathway, server 112 determines the travel time by retrieving the travel time from travel time database 120 based on the event location, the meeting location, and the determined pathway.
  • In some embodiments, determining the pathway includes calculating a distance from the event location to the meeting location (818). For example, when calendar system 108 includes or has access to a map database 126, server 112 retrieves the distance information from the map database 126. In some embodiments, server 112 calculates the distance from the event location to the meeting location by adding distances between intermediate points available in the map database.
  • In some embodiments, determining the pathway further includes determining a mode of travel based on the distance (820). As described with reference to operation 626, in one example user preferences for a respective user stored in user information database 116 includes that the respective user prefers to walk when the distance is less than 2 miles and prefers to drive a car when the travel distance is more than 2 miles. In this example, if the distance from an origin to a destination is less than 2 miles, server 112 determines that the mode of travel for the pathway is walking.
  • In some embodiments, determining the pathway includes identifying a plurality of candidate pathways from the event location to the meeting location, and selecting a pathway from the plurality of candidate pathways based on a predefined criteria (822). As discussed above with reference to operation 628, in some embodiments, travel time database 120 includes a travel time information for a plurality of pathways from the event location (as an origin) to the meeting location (as a destination). In some other embodiments, map database 126 or map server 130 provides a plurality of pathways from the event location to the meeting location. Server 112 identifies a plurality of candidate pathways by retrieving/requesting the pathways from travel time database 120, map database 126, or map server 130.
  • When more than one pathway matches the predefined criteria, server 112 selects one of pathways that match the predefined criteria. In some embodiments, server 112 selects a pathway that best matches the predefined criteria.
  • In some embodiments, the predefined criteria include a user preference (824). As described with reference to operation 630, the user preference can be one of the set consisting of: high way v. local road, going through a building v. going around the building, driving v. public transportation, and driving v. walking. The user preference can also include mobility limitations of the user. In some embodiments, the server compares respective pathways with the user preference, and deselects pathways that do not meet the user preferences. For example, when the user preferences include avoiding stairways, the server deselects pathways that include travel on stairways from the identified plurality of pathways.
  • In some embodiments, the predefined criteria include an estimated travel time from the event location to the meeting location for each candidate pathway (826). For example, server 112 obtains an estimated travel time for each candidate pathway by retrieving the travel time from travel time database 120. Then, server 112 selects a pathway with the shortest travel time.
  • In some embodiments, determining the pathway includes identifying the pathway characteristics (828). As described with reference to operation 634, pathway characteristics include for example, different floors, different buildings, potential traffic, distance further than the walking distance for a respective user (and therefore having to use a mode of travel other than walking), etc. In various embodiments, server 112 identifies the pathway characteristics by retrieving the pathway characteristics from one or more of: travel time database 120, map database 126, and map server 130.
  • In some embodiments, determining the travel time includes obtaining a representative travel time from the event location to the meeting location from a map server (830). In various embodiments, when server 112 includes or has access to map server 130, server 112 obtains the representative travel time from map server 130. In some embodiments, map server 130 is a remote map server, which is located remotely from calendar system 108.
  • In some embodiments, determining the travel time includes obtaining a representative travel time from the event location to the meeting location from a travel time database (832). As described with reference to operation 636, in some embodiments, travel time database 120 includes a representative travel time, and server 112 obtains the representative travel time from travel time database 120. In some other embodiments, server 112 obtains the representative travel time by adding representative travel time for respective segments for the pathway. In other embodiments, server 112 obtains the representative travel time by calculating respective travel time for a respective segment (e.g., by dividing the distance for the respective segment by an estimated speed of travel).
  • In some embodiments, the server updates the travel time database in accordance with actual travel times of the respective user (834). As described with reference to operation 638, server 112 for example, determines the arrival of the respective user (e.g., a requester) at the event location by comparing the location of the respective user and the event location. In some other embodiments, server 112 tracks the location of the respective user from a position sensing device 104 or a mobile phone device and determines the travel time for a respective segment of the pathway that the respective user has traveled. Then the server updates travel time database 120 for respective traveled segment.
  • After determining the travel time, the server identifies a potential travel time scheduling conflict when the travel time exceeds a time difference between the event end time and the meeting start time (810 in FIG. 8A). For example, the preceding event ends at 3:00 p.m., and the requested meeting starts at 3:30 p.m. If the travel time from the event location to the meeting location is more than 30 minutes (e.g., 45 minutes), the travel time exceeds a time difference between the event end time and the meeting start time, and server 112 identifies a potential travel time scheduling conflict.
  • The server provides notification of the potential travel time scheduling conflict to the requester (812). In some embodiments, the notification includes just a fact that there is a potential travel time scheduling conflict. For example, the notification includes a flag that indicates a potential travel time scheduling conflict. Optionally, if no potential travel time scheduling conflict is identified (at operation 810), a flag or other indicator is produced to indicate that no potential travel time scheduling conflict has been identified. Alternatively, if no potential travel time scheduling conflict is identified (at operation 810), no notification of a scheduling conflict is provided to the requester. In other embodiments, the notification of the potential travel time scheduling conflict includes other information including two or more selected from the group consisting of: the preceding event end time, the meeting start time, the travel time, and identification of the person (e.g., an invitee) for whom the potential travel time scheduling conflict has been identified. Based on the information included in the notification, the requester may decide to schedule the meeting at the requested time despite the potential travel time scheduling conflict, or may decide to schedule the meeting at another time or location.
  • In some embodiments, server 112 provides the notification by transmitting the notification to the client 102 associated with the requester. In other embodiments, the server posts the notification, which can be retrieved by client 102. In some embodiments, server 112 includes notification as part of calendar display page (e.g., calendar display page 318 as stored in client 102). In other embodiments, server 112 provides notification separately.
  • Some meetings include one or more invitees, and the meeting request for such a meeting typically includes a list of invitees. In some embodiments, handling a meeting request with a list of invitees includes additional steps (814), as described with reference to FIG. 8C.
  • The server extracts from the request the list of invitees (840). As described with reference to 804, in some embodiments, the request is stored in event database 118. In other embodiments, the request is stored in the front end server 122, or in memory 206 of server 108 or server 112. Server 112 retrieves the request and extracts the list of invitees from the request.
  • In some embodiments, the server also retrieves from the event database a plurality of preceding events occurring before the meeting (842). Each preceding event includes an event associated with at least one of the invitees and requester. Server 112 retrieves respective preceding events for at least one of the invitees and requester.
  • For example, when the requested meeting at 3:00 p.m. involves the requester R, and two invitees S and T, server 112 retrieves respective preceding events for the requester R, invitee S, and invitee T. In this example, the requester R has a preceding event starting at 1:00 p.m. and ending at 2:00 p.m., the invitee S's preceding event starting at 11:00 a.m. and ending at 1:00 p.m., and the invitee T's preceding event starting at 1:30 p.m. and ending at 2:45 p.m. Server 112 retrieves R's 1:00 p.m. meeting, S's 11:00 a.m. meeting, and T's 1:30 p.m. meeting from the event database. Server also extracts event location and event end time for respective preceding events. This example is summarized in the following table.
  • Preceding Preceding Preceding
    Event Event Event
    Attendee Start time End time Location
    Requester R 1:00 p.m. 2:00 p.m. ABC
    Invitee S 11:00 a.m.  1:00 p.m. DEF
    Invitee T 1:30 p.m. 2:45 p.m. GHI
  • In some embodiments, server 112 retrieves preceding events for all the invitees and the requester. As discussed with reference to 806, in some embodiments, retrieving event information for the preceding event includes identifying the preceding event.
  • In some embodiments, the server determines a respective travel time from an event location associated with each of the preceding events to the meeting location (844). Each respective travel time further corresponds to the event end time of a corresponding event. Various methods for determining the travel time are described above with reference to operation 808 and FIG. 8B, and thus are not repeated here.
  • In one example, if the meeting location is XYZ, the travel times are as follows.
  • Preceding Preceding Preceding
    Event Event Event Travel Time
    Attendee Starting time End time Location to XYZ
    Requester R 1:00 p.m. 2:00 p.m. ABC 30 minutes
    Invitee S 11:00 a.m.  1:00 p.m. DEF 60 minutes
    Invitee T 1:30 p.m. 2:45 p.m. GHI 20 minutes
  • In some embodiments, the server identifies a potential travel time scheduling conflict when at least one of the respective travel times exceeds a corresponding time difference between the corresponding event end time and the meeting start time (846).
  • In the above example, the time difference between the corresponding event end time and the meeting start time is as follows.
  • Time Difference
    Between Event
    Preceding Preceding Travel End Time and
    Event Event Time Meeting Start
    Attendee Starting time End time to XYZ Time at 3:00 p.m.
    Requester R 1:00 p.m. 2:00 p.m. 30 minutes 60 minutes
    Invitee S 11:00 a.m.  1:00 p.m. 60 minutes 120 minutes 
    Invitee T 1:30 p.m. 2:45 p.m. 20 minutes 15 minutes
  • In this example, for R's 1:00 p.m. event, the respective travel time (30 minutes) does not exceed the corresponding time difference (60 minutes) between the corresponding event end time and the meeting start time. For S's 11:00 a.m. event, the respective travel time (60 minutes) does not exceed the corresponding time difference (120 minutes) between the corresponding event end time and the meeting start time. For T's 1:30 p.m. event, the respective travel time (20 minutes) exceeds the corresponding time difference (15 minutes) between the corresponding event end time and the meeting start time. Because at least one of the respective travel times (in this example, T's travel time) exceeds the corresponding time difference between the corresponding event end time and the meeting start time, the server identifies a potential travel time scheduling conflict.
  • In some embodiments, the server provides notification of the potential travel time scheduling conflict to the requester (848). In some embodiments, the notification includes just a fact that there is a potential travel time scheduling conflict (e.g., a flag that indicates a potential travel time scheduling conflict). In other embodiments, the notification includes other information including two or more selected from the group consisting of: the invitee with a potential travel time scheduling conflict, the end time of the event with the potential travel time scheduling conflict, the meeting start time, and the travel time for the invitee with the potential travel time scheduling conflict. Based on the information included in the notification, the requester may decide to schedule the meeting at the requested time despite the potential travel time scheduling conflict, or may decide to schedule the meeting at another time or location.
  • In some embodiments, server 112 provides notification by transmitting the notification to the client 102 associated with the requester. In other embodiments, the server posts the notification, which can be retrieved by the client 102. In some embodiments, server 112 includes notification as part of calendar display page (e.g., calendar display page 318 as stored in client 102). In other embodiments, server 112 provides notification separately.
  • FIGS. 9A-9C are flowcharts illustrating processes performed by client(s) and a server system, in accordance with some embodiments. It will be appreciated by those of ordinary skill in the art that one or more of the acts described may be performed by hardware, software, or a combination thereof, as may be embodied in one or more computing systems. In some embodiments, portions of the process performed by calendar system 108 can be performed by client 102.
  • In FIG. 9A, client 102 is a computer or other device used by a meeting requester. Client 102 sends a request for scheduling a meeting to a calendar system 108 (902). The calendar system 108 responds by extracting a meeting location and a meeting start time from the request (904), and retrieving event information for a preceding event occurring before the meeting (906). In some embodiments, the calendar system 108 extracts the meeting location and the meeting start time as described above with reference to operation 804. In some embodiments, the calendar system 108 retrieves event information as described above with reference to operation 806.
  • Based on the meeting location and the event location, calendar system 108 determines travel time from the event location to the meeting location (908). In some embodiments, the calendar system 108 determines the travel time as described above with reference to operation 808.
  • Based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 identifies a potential travel time scheduling conflict (910). In some embodiments, the calendar system 108 identifies the potential travel time scheduling conflict as described above with reference to operation 810.
  • The calendar system 108 provides notification of the potential travel time scheduling conflict (912). In some embodiments, the calendar system 108 provides notification of the potential travel time scheduling conflict as described above with reference to operation 812.
  • Client 102 receives notification of the potential travel time scheduling conflict (914). In some embodiments, client 102 receives the notification via network interface 304 and networking communication module 312.
  • Client 102 presents notification of the potential travel time scheduling conflict to the requester (916). In some embodiments, client 102 presents the notification in calendar display page 318. In some embodiments, client 102 presents the notification on GUI 111.
  • When there is potential travel time scheduling conflict, the requester may decide to schedule (or try to schedule) the meeting at a different time. In that circumstance, client 102 sends a request for scheduling a meeting at a different time (918). In response, calendar system 108 repeats the process described above (904-912).
  • In FIG. 9B, client 102-1 is a computer or other device used by a meeting requester. Client 102-1 sends a request for scheduling a meeting to a calendar system 108 (902). Calendar system 108 responds by extracting a meeting location and a meeting start time from the request (922). In some embodiments, calendar system 108 extracts the meeting location and the meeting start time as described above with reference to operation 804. In addition, calendar system 108 extracts a list of invitees (924). In some embodiments, calendar system 108 extracts the list of invitees as described above with reference to operation 840.
  • Server system retrieves event information for preceding events occurring before the meeting for respective invitees (926). In some embodiments, calendar system 108 retrieves event information as described above with reference to operation 842. In other embodiments, when clients 102 store the most current event information, calendar system 108 retrieves event information for preceding events by synchronizing with respective clients (e.g., clients 102-2 through 102-n) associated with the respective invitees, or by retrieving the event information from the respective clients.
  • Based on the event location associated with each of the preceding events, the meeting location, and the event end time of a corresponding event, calendar system 108 determines travel time from the event location to the meeting location for respective invitees (928). In some embodiments, calendar system 108 determines the travel time as described above with reference to operation 844.
  • Based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 identifies a potential travel time scheduling conflict for respective invitees (930). In some embodiments, the calendar system 108 identifies the potential travel time scheduling conflict as described above with reference to operation 846.
  • The calendar system 108 provides notification of the potential travel time scheduling conflict (932) to client 102-1 (the client used by the requester).
  • Client 102-1 receives notification of the potential travel time scheduling conflict (934). In some embodiments, client 102-1 receives the notification via network interface 304 and networking communication module 312.
  • Client 102-1 presents notification of the potential travel time scheduling conflict to the requester (936). In some embodiments, client 102-1 presents the notification in calendar display page 318. In some embodiments, client 102-1 presents the notification on GUI 111.
  • In some embodiments depicted in FIG. 9C, client 102-1 sends to a calendar system 108 a meeting invitation to an invitee (940). Stated another way, client 102-1 sends a request to calendar system 108 to send a meeting invitation to an invitee. Calendar system 108 responds by extracting a meeting location and a meeting start time from the invitation (942). In some embodiments, calendar system 108 extracts the meeting location and the meeting start time as described with reference to 804 (except that such information is retrieved from the invitation, rather than from the request). Alternately, the request sent by client 102-1 identifies the meeting or event, but does not include the meeting location and meeting start time, in which case that information is retrieved from event database 118 of calendar system 108.
  • Server system retrieves (from event database 118) event information for preceding events occurring before the meeting for respective invitees, the preceding event comprising a calendar event in a calendar associated with the invitee (944). The event information includes an event location and an event end time. In some embodiments, calendar system 108 retrieves event information as described above with reference to operation 806. In other embodiments, calendar system 108 retrieves event information as described above with reference to operation 842.
  • Based on the event location and the meeting location, calendar system 108 determines travel time from the event location to the meeting location (945). In some embodiments, calendar system 108 determines the travel time as described above with reference to operation 808.
  • Based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 identifies a potential travel time scheduling conflict for the invitee (946). In some embodiments, the calendar system 108 identifies the potential travel time scheduling conflict as described above with reference to operation 810. Stated another way, based on the travel time and the time difference between the event end time and the meeting start time, calendar system 108 determines whether or not there is a potential travel time scheduling conflict, and if the determination is positive, the potential travel time scheduling conflict is identified.
  • Calendar system 108 provides notification of the potential travel time scheduling conflict (947) to client 102-2 associated with the invitee for whom the potential travel time scheduling conflict has been identified. The invitee notification of the potential travel time scheduling conflict may be accomplished as described above with reference to operation 812 (except that the notification is provided to the invitee, rather than the requester). Optionally, the notification is also provided to the meeting requester.
  • Client 102-2 receives notification of the potential travel time scheduling conflict (948). For example, client 102-2 may receive the notification via network interface 304 and networking communication module 312.
  • Client 102-2 presents notification of the potential travel time scheduling conflict to the requester (950). In some embodiments, client 102-2 presents the notification in calendar display page 318, which is typically displayed in GUI 111.
  • In some embodiments, server 112 includes or implements two or more of the embodiments described herein. In one example, server 112 determines that there is a potential travel time scheduling conflict for the requester as well as one of the invitees, and provides notification of both potential travel time scheduling conflicts to the requester. In another example, server 112 determines that there is a potential travel time scheduling conflict for one of the invitees, and provides notification to both the invitee and the requester. It will be appreciated by those of ordinary skill in the art that other combinations of embodiments descried herein can be implemented.
  • The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.

Claims (21)

1. A computer-implemented method of determining a time to provide an event reminder for a respective event for a respective user, performed on a system having one or more processors and memory storing one or more programs for execution by the one or more processors, comprising:
in response to a predefined triggering event,
retrieving, from an event database, event information for the respective event, including an event location and an event start time;
obtaining an origin of the respective user, including obtaining from the event database a location of a preceding event for the respective user, the preceding event occurring before the respective event;
determining a travel time for the respective user to travel from the origin to the event location; and
determining, in accordance with the event start time and travel time, an event reminder time for the respective event, the event reminder time comprising a time at which the respective user is to be provided a reminder of the respective event.
2. The method of claim 1, including:
providing to the respective user, at the event reminder time, a reminder of the respective event.
3. The method of claim 1, including:
providing the event reminder time to a client device of the respective user.
4. The method of claim 1, wherein obtaining the origin includes obtaining a location of the respective user from a position sensing device.
5. The method of claim 1, wherein obtaining the origin includes obtaining location information of the respective user from a mobile phone device.
6. (canceled)
7. The method of claim 1, wherein determining the travel time includes determining a pathway from the origin to the event location.
8. The method of claim 7, wherein determining the pathway includes calculating a distance from the origin to the event location.
9. The method of claim 8, wherein determining the pathway further includes determining a mode of travel based on the distance.
10. The method of claim 7, wherein determining the pathway includes:
identifying a plurality of candidate pathways from the origin to the event location; and
selecting a pathway from the plurality of candidate pathways based on a predefined criteria.
11. The method of claim 10, wherein the predefined criteria includes a user preference.
12. The method of claim 10, wherein the predefined criteria includes an estimated travel time from the origin to the event location for each candidate pathway.
13. The method of claim 7, wherein determining the pathway includes identifying the pathway characteristics.
14. The method of claim 1, wherein determining the travel time includes obtaining a representative travel time from the origin to the event location from a travel time database.
15. The method of claim 14, including updating the travel time database in accordance with actual travel times of the respective user.
16. A server system for determining a time to provide an event reminder for a respective event for a respective user, comprising:
one or more processors;
memory; and
one or more programs stored in the memory, the one or more programs comprising
instructions executed by the one or more processors so as to:
respond to a predefined triggering event by:
retrieving, from an event database, event information for the respective event, including an event location and an event start time;
obtaining an origin of the respective user, including obtaining from the event database a location of a preceding event for the respective user, the preceding event occurring before the respective event;
determining a travel time for the respective user to travel from the origin to the event location; and
determining, in accordance with the event start time and travel time, an event reminder time for the respective event, the event reminder time comprising a time at which the respective user is to be provided a reminder of the respective event.
17. The server system of claim 16, wherein the instructions for determining the travel time include instructions for determining a pathway from the origin to the event location.
18. (canceled)
19. A non-transitory computer readable storage medium storing one or more programs configured for execution by one or more processors of a computer for determining a time to provide an event reminder for a respective event for a respective user, the one or more programs comprising instructions to be executed by the one or more processors so as to:
respond to a predefined triggering event by:
retrieving, from an event database, event information for the respective event, including an event location and an event start time;
obtaining an origin of the respective user, including obtaining from the event database a location of a preceding event for the respective user, the preceding event occurring before the respective event;
determining a travel time for the respective user to travel from the origin to the event location; and
determining, in accordance with the event start time and travel time, an event reminder time for the respective event, the event reminder time comprising a time at which the respective user is to be provided a reminder of the respective event.
20. The computer readable storage medium of claim 19, wherein the one or more programs include instructions for determining a pathway from the origin to the event location.
21. (canceled)
US13/162,502 2010-06-17 2011-06-16 Distance and Location-Aware Reminders in a Calendar System Abandoned US20120136572A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/162,502 US20120136572A1 (en) 2010-06-17 2011-06-16 Distance and Location-Aware Reminders in a Calendar System
PCT/US2011/040922 WO2011160044A2 (en) 2010-06-17 2011-06-17 Distance and location-aware reminders and scheduling assistance in a calendar system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US35600010P 2010-06-17 2010-06-17
US13/162,502 US20120136572A1 (en) 2010-06-17 2011-06-16 Distance and Location-Aware Reminders in a Calendar System

Publications (1)

Publication Number Publication Date
US20120136572A1 true US20120136572A1 (en) 2012-05-31

Family

ID=46127186

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/162,502 Abandoned US20120136572A1 (en) 2010-06-17 2011-06-16 Distance and Location-Aware Reminders in a Calendar System
US13/162,505 Active 2031-11-19 US8504404B2 (en) 2010-06-17 2011-06-16 Distance and location-aware scheduling assistance in a calendar system with notification of potential conflicts

Family Applications After (1)

Application Number Title Priority Date Filing Date
US13/162,505 Active 2031-11-19 US8504404B2 (en) 2010-06-17 2011-06-16 Distance and location-aware scheduling assistance in a calendar system with notification of potential conflicts

Country Status (1)

Country Link
US (2) US20120136572A1 (en)

Cited By (237)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120036437A1 (en) * 2010-08-04 2012-02-09 Alberth Jr William P Method, Devices, and System for Delayed Usage of Identified Content
US20130046795A1 (en) * 2011-08-16 2013-02-21 Walk Score Management, LLC System and method for the calculation and use of travel times in search and other applications
US20130096813A1 (en) * 2011-10-18 2013-04-18 Microsoft Corporation Location enhanced meetings and collaboration
US8484482B1 (en) * 2011-03-07 2013-07-09 Sprint Communications Company L.P. Password generation and validation system and method
CN103514533A (en) * 2012-06-08 2014-01-15 微软公司 Location aware reminders
WO2014019059A1 (en) * 2012-07-31 2014-02-06 Research In Motion Limited Apparatus and method for attribute-based scheduling
US8775820B1 (en) 2006-06-02 2014-07-08 Sprint Communications Company L.P. System and method of enterprise administrative password generation and control
US20140236876A1 (en) * 2013-02-20 2014-08-21 International Business Machines Corporation Associating a meeting room with a meeting
US20140287774A1 (en) * 2013-03-22 2014-09-25 Fujitsu Limited Method of controlling mobile information terminal and mobile information terminal
US8892446B2 (en) 2010-01-18 2014-11-18 Apple Inc. Service orchestration for intelligent automated assistant
CN104156384A (en) * 2013-05-14 2014-11-19 索尼公司 Adaptive push calendar
US9190062B2 (en) 2010-02-25 2015-11-17 Apple Inc. User profiling for voice input processing
US20150347966A1 (en) * 2014-05-31 2015-12-03 Hartford Fire Insurance Company Meeting management and project management element reconciliation
US20150346983A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Travel time estimation and alerting
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US9271110B1 (en) 2012-07-09 2016-02-23 Sprint Communications Company L.P. Location awareness session management and cross application session management
US9300784B2 (en) 2013-06-13 2016-03-29 Apple Inc. System and method for emergency calls initiated by voice command
US9307033B1 (en) * 2013-08-20 2016-04-05 Google Inc. Scheduling alerts based on calendar and location
US20160112575A1 (en) * 2013-10-18 2016-04-21 Plantronics, Inc. Speaker Identification for Use in Multi-Media Conference Call System
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US20160127483A1 (en) * 2014-10-31 2016-05-05 Xiaomi Inc. Method and device for displaying item content
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9348493B2 (en) * 2014-05-13 2016-05-24 Jack Ke Zhang Automated subscriber-based customization of electronic channels for content presentation
US9355233B1 (en) 2014-01-27 2016-05-31 Sprint Communications Company L.P. Password reset using hash functions
US20160153798A1 (en) * 2014-12-01 2016-06-02 The Boeing Company Systems and Methods For The Determination Of A User's 4D Trajectory
US9368114B2 (en) 2013-03-14 2016-06-14 Apple Inc. Context-sensitive handling of interruptions
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US20160300053A1 (en) * 2013-08-30 2016-10-13 Hewlett-Packard Development Company, L.P. Comparing real-time movements to pattern profile background
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
US9502031B2 (en) 2014-05-27 2016-11-22 Apple Inc. Method for supporting dynamic grammars in WFST-based ASR
US20160357804A1 (en) * 2015-06-07 2016-12-08 Apple Inc. Determining location of a calendar event
US9535906B2 (en) 2008-07-31 2017-01-03 Apple Inc. Mobile device having human language translation capability with positional feedback
US20170004146A1 (en) * 2015-07-02 2017-01-05 Fannie Mae Selecting properties using location constraints based on travel time contours
US20170017928A1 (en) * 2015-07-15 2017-01-19 Microsoft Technology Licensing, Llc Inferring physical meeting location
US9552560B1 (en) * 2013-12-31 2017-01-24 Google Inc. Facilitating communication between event attendees based on event starting time
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
US9602975B2 (en) * 2015-05-22 2017-03-21 Microsoft Technology Licensing, Llc Intelligent surfacing of reminders
US20170093994A1 (en) * 2014-03-25 2017-03-30 Sony Corporation Server, client, control method, and storage medium
US20170091890A1 (en) * 2014-03-19 2017-03-30 Nissan Motor Co., Ltd. Operator management device, operator management system, and operator management method
US9620104B2 (en) 2013-06-07 2017-04-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9620105B2 (en) 2014-05-15 2017-04-11 Apple Inc. Analyzing audio input for efficient speech and music recognition
US20170103370A1 (en) * 2014-05-12 2017-04-13 Diebold, Incorporated In-branch financial institution calednaring solution
US9626955B2 (en) 2008-04-05 2017-04-18 Apple Inc. Intelligent text-to-speech conversion
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US9633674B2 (en) 2013-06-07 2017-04-25 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
US9642219B2 (en) 2014-06-05 2017-05-02 Steelcase Inc. Environment optimization for space based on presence and activities
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US9646614B2 (en) 2000-03-16 2017-05-09 Apple Inc. Fast, language-independent method for user authentication by voice
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US9697822B1 (en) 2013-03-15 2017-07-04 Apple Inc. System and method for updating an adaptive speech recognition model
US9711141B2 (en) 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9716861B1 (en) 2014-03-07 2017-07-25 Steelcase Inc. Method and system for facilitating collaboration sessions
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9734193B2 (en) 2014-05-30 2017-08-15 Apple Inc. Determining domain salience ranking from ambiguous words in natural speech
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US9766079B1 (en) 2014-10-03 2017-09-19 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US9798393B2 (en) 2011-08-29 2017-10-24 Apple Inc. Text correction processing
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
US9852388B1 (en) 2014-10-03 2017-12-26 Steelcase, Inc. Method and system for locating resources and communicating within an enterprise
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US9921726B1 (en) 2016-06-03 2018-03-20 Steelcase Inc. Smart workstation method and system
US9922642B2 (en) 2013-03-15 2018-03-20 Apple Inc. Training an at least partial voice command system
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9954867B1 (en) * 2015-12-15 2018-04-24 Amazon Technologies, Inc. Verification of credential reset
US9955318B1 (en) 2014-06-05 2018-04-24 Steelcase Inc. Space guidance and management system and method
US9953088B2 (en) 2012-05-14 2018-04-24 Apple Inc. Crowd sourcing information to fulfill user requests
US9959870B2 (en) 2008-12-11 2018-05-01 Apple Inc. Speech recognition involving a mobile device
US9966068B2 (en) 2013-06-08 2018-05-08 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US9966065B2 (en) 2014-05-30 2018-05-08 Apple Inc. Multi-command single utterance input method
US9971774B2 (en) 2012-09-19 2018-05-15 Apple Inc. Voice-based media searching
US9970776B2 (en) * 2015-04-08 2018-05-15 Nec Corporation WiFi-based indoor positioning and navigation as a new mode in multimodal transit applications
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US10079014B2 (en) 2012-06-08 2018-09-18 Apple Inc. Name recognition system
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10089072B2 (en) 2016-06-11 2018-10-02 Apple Inc. Intelligent device arbitration and control
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US20180341923A1 (en) * 2017-05-25 2018-11-29 Microsoft Technology Licensing, Llc Persistent next calendar item surfaced in electronic mailbox
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US10185542B2 (en) 2013-06-09 2019-01-22 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10199051B2 (en) 2013-02-07 2019-02-05 Apple Inc. Voice trigger for a digital assistant
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US10255566B2 (en) 2011-06-03 2019-04-09 Apple Inc. Generating and processing task items that represent tasks to perform
US10264213B1 (en) 2016-12-15 2019-04-16 Steelcase Inc. Content amplification system and method
US10269345B2 (en) 2016-06-11 2019-04-23 Apple Inc. Intelligent task discovery
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10283110B2 (en) 2009-07-02 2019-05-07 Apple Inc. Methods and apparatuses for automatic speech recognition
US10289433B2 (en) 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
US10297253B2 (en) 2016-06-11 2019-05-21 Apple Inc. Application integration with a digital assistant
US10303715B2 (en) 2017-05-16 2019-05-28 Apple Inc. Intelligent automated assistant for media exploration
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US10318871B2 (en) 2005-09-08 2019-06-11 Apple Inc. Method and apparatus for building an intelligent automated assistant
US10332518B2 (en) 2017-05-09 2019-06-25 Apple Inc. User interface for correcting recognition errors
US10354011B2 (en) 2016-06-09 2019-07-16 Apple Inc. Intelligent automated assistant in a home environment
US10356243B2 (en) 2015-06-05 2019-07-16 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10361862B2 (en) * 2016-08-16 2019-07-23 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Input assembly and terminal
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
US10403283B1 (en) 2018-06-01 2019-09-03 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US10410637B2 (en) 2017-05-12 2019-09-10 Apple Inc. User-specific acoustic models
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
US20190304461A1 (en) * 2017-03-31 2019-10-03 Alibaba Group Holding Limited Voice function control method and apparatus
US10433646B1 (en) 2014-06-06 2019-10-08 Steelcaase Inc. Microclimate control systems and methods
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
US10451436B2 (en) * 2017-04-12 2019-10-22 Microsoft Technology Licensing, Llc Generating routes using events
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
US10482874B2 (en) 2017-05-15 2019-11-19 Apple Inc. Hierarchical belief states for digital assistants
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10496705B1 (en) 2018-06-03 2019-12-03 Apple Inc. Accelerated task performance
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10510050B2 (en) * 2012-09-10 2019-12-17 Private Secretary, Ltd. Meetings and events coordinating system and method
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10521466B2 (en) 2016-06-11 2019-12-31 Apple Inc. Data driven natural language event detection and classification
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
US10552013B2 (en) 2014-12-02 2020-02-04 Apple Inc. Data detection
US10568032B2 (en) 2007-04-03 2020-02-18 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US10592095B2 (en) 2014-05-23 2020-03-17 Apple Inc. Instantaneous speaking of content on touch devices
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
US10643611B2 (en) 2008-10-02 2020-05-05 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US10664772B1 (en) 2014-03-07 2020-05-26 Steelcase Inc. Method and system for facilitating collaboration sessions
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US10684703B2 (en) 2018-06-01 2020-06-16 Apple Inc. Attention aware virtual assistant dismissal
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
US10733993B2 (en) 2016-06-10 2020-08-04 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10733371B1 (en) 2015-06-02 2020-08-04 Steelcase Inc. Template based content preparation system for use with a plurality of space types
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10748546B2 (en) 2017-05-16 2020-08-18 Apple Inc. Digital assistant services based on device capabilities
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US10755703B2 (en) 2017-05-11 2020-08-25 Apple Inc. Offline personal assistant
US10762293B2 (en) 2010-12-22 2020-09-01 Apple Inc. Using parts-of-speech tagging and named entity recognition for spelling correction
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10791216B2 (en) 2013-08-06 2020-09-29 Apple Inc. Auto-activating smart responses based on activities from remote devices
US10791176B2 (en) 2017-05-12 2020-09-29 Apple Inc. Synchronization and task delegation of a digital assistant
US10789945B2 (en) 2017-05-12 2020-09-29 Apple Inc. Low-latency intelligent automated assistant
US10789041B2 (en) 2014-09-12 2020-09-29 Apple Inc. Dynamic thresholds for always listening speech trigger
US10810274B2 (en) 2017-05-15 2020-10-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US11010127B2 (en) 2015-06-29 2021-05-18 Apple Inc. Virtual assistant for media playback
US11023513B2 (en) 2007-12-20 2021-06-01 Apple Inc. Method and apparatus for searching using an active ontology
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US11070949B2 (en) 2015-05-27 2021-07-20 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on an electronic device with a touch-sensitive display
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US11217251B2 (en) 2019-05-06 2022-01-04 Apple Inc. Spoken notifications
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US11227504B1 (en) * 2017-12-22 2022-01-18 Charles Isgar Group study system
US11231904B2 (en) 2015-03-06 2022-01-25 Apple Inc. Reducing response latency of intelligent automated assistants
US20220030318A1 (en) * 2013-07-31 2022-01-27 Maxell, Ltd. Mobile terminal and video display apparatus
US11237797B2 (en) 2019-05-31 2022-02-01 Apple Inc. User activity shortcut suggestions
US11257038B2 (en) * 2017-06-02 2022-02-22 Apple Inc. Event extraction systems and methods
US11269678B2 (en) 2012-05-15 2022-03-08 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US11277673B2 (en) * 2016-02-12 2022-03-15 Rovi Guides, Inc. Systems and methods for recording broadcast programs that will be missed due to travel delays
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
US11288636B2 (en) * 2020-01-23 2022-03-29 Capital One Services, Llc Computer-implemented systems configured for automated electronic calendar item predictions for calendar item rescheduling and methods of use thereof
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11314370B2 (en) 2013-12-06 2022-04-26 Apple Inc. Method for extracting salient dialog usage from live data
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11467802B2 (en) 2017-05-11 2022-10-11 Apple Inc. Maintaining privacy of personal information
US11468282B2 (en) 2015-05-15 2022-10-11 Apple Inc. Virtual assistant in a communication session
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US11488406B2 (en) 2019-09-25 2022-11-01 Apple Inc. Text detection using global geometry estimators
US11495218B2 (en) 2018-06-01 2022-11-08 Apple Inc. Virtual assistant operation in multi-device environments
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
US11532306B2 (en) 2017-05-16 2022-12-20 Apple Inc. Detecting a trigger of a digital assistant
CN115587804A (en) * 2022-12-07 2023-01-10 中通服建设有限公司 Smart community management system
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11657813B2 (en) 2019-05-31 2023-05-23 Apple Inc. Voice identification in digital assistant systems
US11696060B2 (en) 2020-07-21 2023-07-04 Apple Inc. User identification using headphones
US11744376B2 (en) 2014-06-06 2023-09-05 Steelcase Inc. Microclimate control systems and methods
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
US11765209B2 (en) 2020-05-11 2023-09-19 Apple Inc. Digital assistant hardware abstraction
US11790914B2 (en) 2019-06-01 2023-10-17 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11798547B2 (en) 2013-03-15 2023-10-24 Apple Inc. Voice activated device for use with a voice-based digital assistant
US11809483B2 (en) 2015-09-08 2023-11-07 Apple Inc. Intelligent automated assistant for media search and playback
US11838734B2 (en) 2020-07-20 2023-12-05 Apple Inc. Multi-device audio adjustment coordination
US11853536B2 (en) 2015-09-08 2023-12-26 Apple Inc. Intelligent automated assistant in a media environment
US11886805B2 (en) 2015-11-09 2024-01-30 Apple Inc. Unconventional virtual assistant interactions
US11914848B2 (en) 2020-05-11 2024-02-27 Apple Inc. Providing relevant data items based on context
US11924254B2 (en) 2021-05-03 2024-03-05 Apple Inc. Digital assistant hardware abstraction

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110246062A1 (en) * 2011-04-08 2011-10-06 Whitmyer Jr Wesley W Map and directions system with vertical distance
US8942729B2 (en) * 2012-02-02 2015-01-27 Apple Inc. Location based methods, systems, and program products for performing an action at a user device
US10430736B2 (en) * 2012-05-25 2019-10-01 Conduent Business Services, Llc System and method for estimating a dynamic origin-destination matrix
CN104396284B (en) 2012-06-22 2016-09-07 谷歌公司 Present the information for current location or time
US9080876B2 (en) * 2012-06-25 2015-07-14 Derrick Denicola Intermediate rendezvous location identifier application
WO2014000081A1 (en) * 2012-06-26 2014-01-03 Research In Motion Limited Methods and apparatus to detect and add impact events to a calendar program
CN104704797B (en) 2012-08-10 2018-08-10 纽昂斯通讯公司 Virtual protocol communication for electronic equipment
US9276802B2 (en) 2012-12-11 2016-03-01 Nuance Communications, Inc. Systems and methods for sharing information between virtual agents
US9560089B2 (en) 2012-12-11 2017-01-31 Nuance Communications, Inc. Systems and methods for providing input to virtual agent
US9659298B2 (en) 2012-12-11 2017-05-23 Nuance Communications, Inc. Systems and methods for informing virtual agent recommendation
US9679300B2 (en) 2012-12-11 2017-06-13 Nuance Communications, Inc. Systems and methods for virtual agent recommendation for multiple persons
US9148394B2 (en) 2012-12-11 2015-09-29 Nuance Communications, Inc. Systems and methods for user interface presentation of virtual agent
US9262175B2 (en) 2012-12-11 2016-02-16 Nuance Communications, Inc. Systems and methods for storing record of virtual agent interaction
CA2838362A1 (en) * 2013-01-18 2014-03-18 Target Brands, Inc. Reducing meeting travel
US20140278680A1 (en) * 2013-03-14 2014-09-18 Yakov Z. Mermelstein Method for alerting people to events
US10534623B2 (en) 2013-12-16 2020-01-14 Nuance Communications, Inc. Systems and methods for providing a virtual assistant
US9760600B2 (en) 2014-01-14 2017-09-12 Google Inc. Serving recurrent calendar events
US20160148163A1 (en) * 2014-11-20 2016-05-26 Lenovo (Singapore) Pte. Ltd. Representing in an electronic calendar travel time to and from an event
US20160292602A1 (en) * 2015-03-30 2016-10-06 International Business Machines Corporation Calendar management with flexible duration meetings
US11403312B2 (en) * 2016-03-14 2022-08-02 Microsoft Technology Licensing, Llc Automated relevant event discovery
US11089132B2 (en) 2016-03-29 2021-08-10 Microsoft Technology Licensing, Llc Extensibility for context-aware digital personal assistant
US20180039931A1 (en) * 2016-08-04 2018-02-08 International Business Machines Corporation System, method and recording medium for resolving calendar conflicts
US10803189B2 (en) * 2016-08-31 2020-10-13 Microsoft Technology Licensing, Llc Location-based access control of secured resources
US10731991B2 (en) * 2017-08-16 2020-08-04 Wipro Limited Method and device for determining navigation of a vehicle based on feasibility of events
US11138862B2 (en) 2019-03-29 2021-10-05 Lenovo (Singapore) Pte. Ltd. Systems and methods to electronically indicate whether conference room is in use based on sensor input
US10735212B1 (en) * 2020-01-21 2020-08-04 Capital One Services, Llc Computer-implemented systems configured for automated electronic calendar item predictions and methods of use thereof

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020004703A1 (en) * 2000-07-10 2002-01-10 Gaspard James G. Method to schedule in real-time the transportion of freight and passengers
US20070036318A1 (en) * 2005-07-27 2007-02-15 Cisco Technology, Inc. RFID for available resources not connected to the network
US20080167937A1 (en) * 2006-12-29 2008-07-10 Aol Llc Meeting notification and modification service
US20090036148A1 (en) * 2007-08-01 2009-02-05 Research In Motion Limited Mapping an event location via a calendar application
US7680594B2 (en) * 2004-04-06 2010-03-16 Honda Motor Co., Ltd. Display method and system for a vehicle navigation system
US20110090078A1 (en) * 2009-10-19 2011-04-21 Qualcomm Incorporated Methods and Apparatus for Estimating Departure Time Based on Known Calendar Events

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732080B1 (en) 1999-09-15 2004-05-04 Nokia Corporation System and method of providing personal calendar services
US9100776B2 (en) 2004-10-06 2015-08-04 Intelligent Mechatronic Systems Inc. Location based event reminder for mobile device
US7528713B2 (en) 2006-09-28 2009-05-05 Ektimisi Semiotics Holdings, Llc Apparatus and method for providing a task reminder based on travel history

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020004703A1 (en) * 2000-07-10 2002-01-10 Gaspard James G. Method to schedule in real-time the transportion of freight and passengers
US7680594B2 (en) * 2004-04-06 2010-03-16 Honda Motor Co., Ltd. Display method and system for a vehicle navigation system
US20070036318A1 (en) * 2005-07-27 2007-02-15 Cisco Technology, Inc. RFID for available resources not connected to the network
US20080167937A1 (en) * 2006-12-29 2008-07-10 Aol Llc Meeting notification and modification service
US20090036148A1 (en) * 2007-08-01 2009-02-05 Research In Motion Limited Mapping an event location via a calendar application
US20110090078A1 (en) * 2009-10-19 2011-04-21 Qualcomm Incorporated Methods and Apparatus for Estimating Departure Time Based on Known Calendar Events

Cited By (422)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9646614B2 (en) 2000-03-16 2017-05-09 Apple Inc. Fast, language-independent method for user authentication by voice
US10318871B2 (en) 2005-09-08 2019-06-11 Apple Inc. Method and apparatus for building an intelligent automated assistant
US8775820B1 (en) 2006-06-02 2014-07-08 Sprint Communications Company L.P. System and method of enterprise administrative password generation and control
US9117447B2 (en) 2006-09-08 2015-08-25 Apple Inc. Using event alert text as input to an automated assistant
US8942986B2 (en) 2006-09-08 2015-01-27 Apple Inc. Determining user intent based on ontologies of domains
US8930191B2 (en) 2006-09-08 2015-01-06 Apple Inc. Paraphrasing of user requests and results by automated digital assistant
US10568032B2 (en) 2007-04-03 2020-02-18 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US11671920B2 (en) 2007-04-03 2023-06-06 Apple Inc. Method and system for operating a multifunction portable electronic device using voice-activation
US11012942B2 (en) 2007-04-03 2021-05-18 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US11023513B2 (en) 2007-12-20 2021-06-01 Apple Inc. Method and apparatus for searching using an active ontology
US10381016B2 (en) 2008-01-03 2019-08-13 Apple Inc. Methods and apparatus for altering audio output signals
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US9865248B2 (en) 2008-04-05 2018-01-09 Apple Inc. Intelligent text-to-speech conversion
US9626955B2 (en) 2008-04-05 2017-04-18 Apple Inc. Intelligent text-to-speech conversion
US10108612B2 (en) 2008-07-31 2018-10-23 Apple Inc. Mobile device having human language translation capability with positional feedback
US9535906B2 (en) 2008-07-31 2017-01-03 Apple Inc. Mobile device having human language translation capability with positional feedback
US11900936B2 (en) 2008-10-02 2024-02-13 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US11348582B2 (en) 2008-10-02 2022-05-31 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10643611B2 (en) 2008-10-02 2020-05-05 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US9959870B2 (en) 2008-12-11 2018-05-01 Apple Inc. Speech recognition involving a mobile device
US10475446B2 (en) 2009-06-05 2019-11-12 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US11080012B2 (en) 2009-06-05 2021-08-03 Apple Inc. Interface for a virtual digital assistant
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US10795541B2 (en) 2009-06-05 2020-10-06 Apple Inc. Intelligent organization of tasks items
US10283110B2 (en) 2009-07-02 2019-05-07 Apple Inc. Methods and apparatuses for automatic speech recognition
US9548050B2 (en) 2010-01-18 2017-01-17 Apple Inc. Intelligent automated assistant
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
US8892446B2 (en) 2010-01-18 2014-11-18 Apple Inc. Service orchestration for intelligent automated assistant
US10706841B2 (en) 2010-01-18 2020-07-07 Apple Inc. Task flow identification based on user intent
US10741185B2 (en) 2010-01-18 2020-08-11 Apple Inc. Intelligent automated assistant
US8903716B2 (en) 2010-01-18 2014-12-02 Apple Inc. Personalized vocabulary for digital assistant
US11423886B2 (en) 2010-01-18 2022-08-23 Apple Inc. Task flow identification based on user intent
US9633660B2 (en) 2010-02-25 2017-04-25 Apple Inc. User profiling for voice input processing
US10049675B2 (en) 2010-02-25 2018-08-14 Apple Inc. User profiling for voice input processing
US9190062B2 (en) 2010-02-25 2015-11-17 Apple Inc. User profiling for voice input processing
US10692504B2 (en) 2010-02-25 2020-06-23 Apple Inc. User profiling for voice input processing
US20120036437A1 (en) * 2010-08-04 2012-02-09 Alberth Jr William P Method, Devices, and System for Delayed Usage of Identified Content
US10762293B2 (en) 2010-12-22 2020-09-01 Apple Inc. Using parts-of-speech tagging and named entity recognition for spelling correction
US8484482B1 (en) * 2011-03-07 2013-07-09 Sprint Communications Company L.P. Password generation and validation system and method
US10417405B2 (en) 2011-03-21 2019-09-17 Apple Inc. Device access using voice authentication
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US10102359B2 (en) 2011-03-21 2018-10-16 Apple Inc. Device access using voice authentication
US11120372B2 (en) 2011-06-03 2021-09-14 Apple Inc. Performing actions associated with task items that represent tasks to perform
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US10255566B2 (en) 2011-06-03 2019-04-09 Apple Inc. Generating and processing task items that represent tasks to perform
US10706373B2 (en) 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
US11350253B2 (en) 2011-06-03 2022-05-31 Apple Inc. Active transport based notifications
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10962373B2 (en) 2011-08-16 2021-03-30 Walk Score Management, LLC System and method for assessing quality of transit networks at specified locations
US10317219B1 (en) * 2011-08-16 2019-06-11 Walk Score Management, LLC System and method for the calculation and use of travel times in search and other applications
US20130046795A1 (en) * 2011-08-16 2013-02-21 Walk Score Management, LLC System and method for the calculation and use of travel times in search and other applications
US9195953B2 (en) * 2011-08-16 2015-11-24 Walk Score Management LLC System and method for the calculation and use of travel times in search and other applications
US9964410B2 (en) 2011-08-16 2018-05-08 Walk Score Management, LLC System and method for the calculation and use of travel times in search and other applications
US9798393B2 (en) 2011-08-29 2017-10-24 Apple Inc. Text correction processing
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US9146115B2 (en) * 2011-10-18 2015-09-29 Microsoft Technology Licensing, Llc Location enhanced meetings and collaboration
US20130096813A1 (en) * 2011-10-18 2013-04-18 Microsoft Corporation Location enhanced meetings and collaboration
US11069336B2 (en) 2012-03-02 2021-07-20 Apple Inc. Systems and methods for name pronunciation
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US9953088B2 (en) 2012-05-14 2018-04-24 Apple Inc. Crowd sourcing information to fulfill user requests
US11269678B2 (en) 2012-05-15 2022-03-08 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US11321116B2 (en) 2012-05-15 2022-05-03 Apple Inc. Systems and methods for integrating third party services with a digital assistant
CN103514533A (en) * 2012-06-08 2014-01-15 微软公司 Location aware reminders
WO2013184363A3 (en) * 2012-06-08 2014-08-28 Microsoft Corporation Location aware reminders
US10079014B2 (en) 2012-06-08 2018-09-18 Apple Inc. Name recognition system
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
US9271110B1 (en) 2012-07-09 2016-02-23 Sprint Communications Company L.P. Location awareness session management and cross application session management
US20150193722A1 (en) * 2012-07-31 2015-07-09 Blackberry Limited Apparatus and method for attribute-based scheduling
WO2014019059A1 (en) * 2012-07-31 2014-02-06 Research In Motion Limited Apparatus and method for attribute-based scheduling
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US10510050B2 (en) * 2012-09-10 2019-12-17 Private Secretary, Ltd. Meetings and events coordinating system and method
US9971774B2 (en) 2012-09-19 2018-05-15 Apple Inc. Voice-based media searching
US11636869B2 (en) 2013-02-07 2023-04-25 Apple Inc. Voice trigger for a digital assistant
US10978090B2 (en) 2013-02-07 2021-04-13 Apple Inc. Voice trigger for a digital assistant
US11557310B2 (en) 2013-02-07 2023-01-17 Apple Inc. Voice trigger for a digital assistant
US10199051B2 (en) 2013-02-07 2019-02-05 Apple Inc. Voice trigger for a digital assistant
US10714117B2 (en) 2013-02-07 2020-07-14 Apple Inc. Voice trigger for a digital assistant
US11862186B2 (en) 2013-02-07 2024-01-02 Apple Inc. Voice trigger for a digital assistant
US9727846B2 (en) 2013-02-20 2017-08-08 International Business Machines Corporation Associating a meeting room with a meeting
US20140236876A1 (en) * 2013-02-20 2014-08-21 International Business Machines Corporation Associating a meeting room with a meeting
US9710793B2 (en) * 2013-02-20 2017-07-18 International Business Machines Corporation Associating a meeting room with a meeting
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US9368114B2 (en) 2013-03-14 2016-06-14 Apple Inc. Context-sensitive handling of interruptions
US11388291B2 (en) 2013-03-14 2022-07-12 Apple Inc. System and method for processing voicemail
US9922642B2 (en) 2013-03-15 2018-03-20 Apple Inc. Training an at least partial voice command system
US11798547B2 (en) 2013-03-15 2023-10-24 Apple Inc. Voice activated device for use with a voice-based digital assistant
US9697822B1 (en) 2013-03-15 2017-07-04 Apple Inc. System and method for updating an adaptive speech recognition model
US20140287774A1 (en) * 2013-03-22 2014-09-25 Fujitsu Limited Method of controlling mobile information terminal and mobile information terminal
US9341699B2 (en) * 2013-03-22 2016-05-17 Fujitsu Limited Method of controlling mobile information terminal and mobile information terminal
CN104156384A (en) * 2013-05-14 2014-11-19 索尼公司 Adaptive push calendar
US9620104B2 (en) 2013-06-07 2017-04-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9633674B2 (en) 2013-06-07 2017-04-25 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
US9966060B2 (en) 2013-06-07 2018-05-08 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US10657961B2 (en) 2013-06-08 2020-05-19 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US9966068B2 (en) 2013-06-08 2018-05-08 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10769385B2 (en) 2013-06-09 2020-09-08 Apple Inc. System and method for inferring user intent from speech inputs
US10185542B2 (en) 2013-06-09 2019-01-22 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
US11048473B2 (en) 2013-06-09 2021-06-29 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US11727219B2 (en) 2013-06-09 2023-08-15 Apple Inc. System and method for inferring user intent from speech inputs
US9300784B2 (en) 2013-06-13 2016-03-29 Apple Inc. System and method for emergency calls initiated by voice command
US20220030318A1 (en) * 2013-07-31 2022-01-27 Maxell, Ltd. Mobile terminal and video display apparatus
US11711585B2 (en) * 2013-07-31 2023-07-25 Maxell, Ltd. Mobile terminal and video display apparatus
US10791216B2 (en) 2013-08-06 2020-09-29 Apple Inc. Auto-activating smart responses based on activities from remote devices
US9307033B1 (en) * 2013-08-20 2016-04-05 Google Inc. Scheduling alerts based on calendar and location
US9965611B2 (en) * 2013-08-30 2018-05-08 Entit Software Llc Comparing real-time movements to pattern profile background
US20160300053A1 (en) * 2013-08-30 2016-10-13 Hewlett-Packard Development Company, L.P. Comparing real-time movements to pattern profile background
US9553994B2 (en) * 2013-10-18 2017-01-24 Plantronics, Inc. Speaker identification for use in multi-media conference call system
US20160112575A1 (en) * 2013-10-18 2016-04-21 Plantronics, Inc. Speaker Identification for Use in Multi-Media Conference Call System
US11314370B2 (en) 2013-12-06 2022-04-26 Apple Inc. Method for extracting salient dialog usage from live data
US9552560B1 (en) * 2013-12-31 2017-01-24 Google Inc. Facilitating communication between event attendees based on event starting time
US9355233B1 (en) 2014-01-27 2016-05-31 Sprint Communications Company L.P. Password reset using hash functions
US10664772B1 (en) 2014-03-07 2020-05-26 Steelcase Inc. Method and system for facilitating collaboration sessions
US11150859B2 (en) 2014-03-07 2021-10-19 Steelcase Inc. Method and system for facilitating collaboration sessions
US11321643B1 (en) 2014-03-07 2022-05-03 Steelcase Inc. Method and system for facilitating collaboration sessions
US9716861B1 (en) 2014-03-07 2017-07-25 Steelcase Inc. Method and system for facilitating collaboration sessions
US10353664B2 (en) 2014-03-07 2019-07-16 Steelcase Inc. Method and system for facilitating collaboration sessions
US10339621B2 (en) * 2014-03-19 2019-07-02 Nissan Motor Co., Ltd. Operator management device, operator management system, and operator management method
US20170091890A1 (en) * 2014-03-19 2017-03-30 Nissan Motor Co., Ltd. Operator management device, operator management system, and operator management method
US10601936B2 (en) * 2014-03-25 2020-03-24 Sony Corporation Server, client, control method, and non-transitory computer readable medium
US20170093994A1 (en) * 2014-03-25 2017-03-30 Sony Corporation Server, client, control method, and storage medium
US20170103370A1 (en) * 2014-05-12 2017-04-13 Diebold, Incorporated In-branch financial institution calednaring solution
US9348493B2 (en) * 2014-05-13 2016-05-24 Jack Ke Zhang Automated subscriber-based customization of electronic channels for content presentation
US9620105B2 (en) 2014-05-15 2017-04-11 Apple Inc. Analyzing audio input for efficient speech and music recognition
US10592095B2 (en) 2014-05-23 2020-03-17 Apple Inc. Instantaneous speaking of content on touch devices
US9502031B2 (en) 2014-05-27 2016-11-22 Apple Inc. Method for supporting dynamic grammars in WFST-based ASR
US11670289B2 (en) 2014-05-30 2023-06-06 Apple Inc. Multi-command single utterance input method
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US10169329B2 (en) 2014-05-30 2019-01-01 Apple Inc. Exemplar-based natural language processing
US10878809B2 (en) 2014-05-30 2020-12-29 Apple Inc. Multi-command single utterance input method
US10657966B2 (en) 2014-05-30 2020-05-19 Apple Inc. Better resolution when referencing to concepts
US11699448B2 (en) 2014-05-30 2023-07-11 Apple Inc. Intelligent assistant for home automation
US11810562B2 (en) 2014-05-30 2023-11-07 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US11257504B2 (en) 2014-05-30 2022-02-22 Apple Inc. Intelligent assistant for home automation
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US10699717B2 (en) 2014-05-30 2020-06-30 Apple Inc. Intelligent assistant for home automation
US9734193B2 (en) 2014-05-30 2017-08-15 Apple Inc. Determining domain salience ranking from ambiguous words in natural speech
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US10083690B2 (en) 2014-05-30 2018-09-25 Apple Inc. Better resolution when referencing to concepts
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US11133008B2 (en) 2014-05-30 2021-09-28 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10714095B2 (en) 2014-05-30 2020-07-14 Apple Inc. Intelligent assistant for home automation
US10417344B2 (en) 2014-05-30 2019-09-17 Apple Inc. Exemplar-based natural language processing
US10289433B2 (en) 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
US9966065B2 (en) 2014-05-30 2018-05-08 Apple Inc. Multi-command single utterance input method
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
US10497365B2 (en) 2014-05-30 2019-12-03 Apple Inc. Multi-command single utterance input method
US20150346983A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Travel time estimation and alerting
US20150347966A1 (en) * 2014-05-31 2015-12-03 Hartford Fire Insurance Company Meeting management and project management element reconciliation
US11212898B2 (en) 2014-06-05 2021-12-28 Steelcase Inc. Environment optimization for space based on presence and activities
US10561006B2 (en) 2014-06-05 2020-02-11 Steelcase Inc. Environment optimization for space based on presence and activities
US10057963B2 (en) 2014-06-05 2018-08-21 Steelcase Inc. Environment optimization for space based on presence and activities
US11085771B1 (en) 2014-06-05 2021-08-10 Steelcase Inc. Space guidance and management system and method
US9955318B1 (en) 2014-06-05 2018-04-24 Steelcase Inc. Space guidance and management system and method
US11307037B1 (en) 2014-06-05 2022-04-19 Steelcase Inc. Space guidance and management system and method
US11280619B1 (en) 2014-06-05 2022-03-22 Steelcase Inc. Space guidance and management system and method
US10225707B1 (en) 2014-06-05 2019-03-05 Steelcase Inc. Space guidance and management system and method
US9642219B2 (en) 2014-06-05 2017-05-02 Steelcase Inc. Environment optimization for space based on presence and activities
US11402216B1 (en) 2014-06-05 2022-08-02 Steelcase Inc. Space guidance and management system and method
US11402217B1 (en) 2014-06-05 2022-08-02 Steelcase Inc. Space guidance and management system and method
US11744376B2 (en) 2014-06-06 2023-09-05 Steelcase Inc. Microclimate control systems and methods
US10433646B1 (en) 2014-06-06 2019-10-08 Steelcaase Inc. Microclimate control systems and methods
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US11838579B2 (en) 2014-06-30 2023-12-05 Apple Inc. Intelligent automated assistant for TV user interactions
US10904611B2 (en) 2014-06-30 2021-01-26 Apple Inc. Intelligent automated assistant for TV user interactions
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US11516537B2 (en) 2014-06-30 2022-11-29 Apple Inc. Intelligent automated assistant for TV user interactions
US9668024B2 (en) 2014-06-30 2017-05-30 Apple Inc. Intelligent automated assistant for TV user interactions
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10431204B2 (en) 2014-09-11 2019-10-01 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10789041B2 (en) 2014-09-12 2020-09-29 Apple Inc. Dynamic thresholds for always listening speech trigger
US10390213B2 (en) 2014-09-30 2019-08-20 Apple Inc. Social reminders
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US10438595B2 (en) 2014-09-30 2019-10-08 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US10453443B2 (en) 2014-09-30 2019-10-22 Apple Inc. Providing an indication of the suitability of speech recognition
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US9986419B2 (en) 2014-09-30 2018-05-29 Apple Inc. Social reminders
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10970662B2 (en) 2014-10-03 2021-04-06 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US10121113B1 (en) 2014-10-03 2018-11-06 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US9852388B1 (en) 2014-10-03 2017-12-26 Steelcase, Inc. Method and system for locating resources and communicating within an enterprise
US11143510B1 (en) 2014-10-03 2021-10-12 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US9766079B1 (en) 2014-10-03 2017-09-19 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US11168987B2 (en) 2014-10-03 2021-11-09 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US11713969B1 (en) 2014-10-03 2023-08-01 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US11687854B1 (en) 2014-10-03 2023-06-27 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US10161752B1 (en) 2014-10-03 2018-12-25 Steelcase Inc. Method and system for locating resources and communicating within an enterprise
US20160127483A1 (en) * 2014-10-31 2016-05-05 Xiaomi Inc. Method and device for displaying item content
US10036647B2 (en) * 2014-12-01 2018-07-31 The Boeing Company Systems and methods for the determination of a user's 4D trajectory
EP3029616A1 (en) * 2014-12-01 2016-06-08 The Boeing Company Systems and methods for the determination of a user's 4d trajectory
US20160153798A1 (en) * 2014-12-01 2016-06-02 The Boeing Company Systems and Methods For The Determination Of A User's 4D Trajectory
US11556230B2 (en) 2014-12-02 2023-01-17 Apple Inc. Data detection
US10552013B2 (en) 2014-12-02 2020-02-04 Apple Inc. Data detection
US9711141B2 (en) 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US11231904B2 (en) 2015-03-06 2022-01-25 Apple Inc. Reducing response latency of intelligent automated assistants
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US11842734B2 (en) 2015-03-08 2023-12-12 Apple Inc. Virtual assistant activation
US11087759B2 (en) 2015-03-08 2021-08-10 Apple Inc. Virtual assistant activation
US10311871B2 (en) 2015-03-08 2019-06-04 Apple Inc. Competing devices responding to voice triggers
US10930282B2 (en) 2015-03-08 2021-02-23 Apple Inc. Competing devices responding to voice triggers
US10529332B2 (en) 2015-03-08 2020-01-07 Apple Inc. Virtual assistant activation
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US9970776B2 (en) * 2015-04-08 2018-05-15 Nec Corporation WiFi-based indoor positioning and navigation as a new mode in multimodal transit applications
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US11468282B2 (en) 2015-05-15 2022-10-11 Apple Inc. Virtual assistant in a communication session
KR102603477B1 (en) 2015-05-22 2023-11-16 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 Intelligent surfacing of reminders
US9602975B2 (en) * 2015-05-22 2017-03-21 Microsoft Technology Licensing, Llc Intelligent surfacing of reminders
KR20180010258A (en) * 2015-05-22 2018-01-30 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 Intelligent surfacing of reminders
CN107646119A (en) * 2015-05-22 2018-01-30 微软技术许可有限责任公司 The intelligence of prompting emerges
US11070949B2 (en) 2015-05-27 2021-07-20 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on an electronic device with a touch-sensitive display
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US11127397B2 (en) 2015-05-27 2021-09-21 Apple Inc. Device voice control
US11100282B1 (en) 2015-06-02 2021-08-24 Steelcase Inc. Template based content preparation system for use with a plurality of space types
US10733371B1 (en) 2015-06-02 2020-08-04 Steelcase Inc. Template based content preparation system for use with a plurality of space types
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US10681212B2 (en) 2015-06-05 2020-06-09 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10356243B2 (en) 2015-06-05 2019-07-16 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
WO2016200704A1 (en) * 2015-06-07 2016-12-15 Apple Inc. Travel updates for calendar events
US20160357804A1 (en) * 2015-06-07 2016-12-08 Apple Inc. Determining location of a calendar event
US9652486B2 (en) 2015-06-07 2017-05-16 Apple Inc. Power saving techniques for a navigation application
KR102359071B1 (en) * 2015-06-07 2022-02-08 애플 인크. Travel updates for calendar events
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
KR20210002762A (en) * 2015-06-07 2021-01-08 애플 인크. Travel updates for calendar events
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US20160358128A1 (en) * 2015-06-07 2016-12-08 Apple Inc. Travel updates for calendar events
EP3416116A1 (en) * 2015-06-07 2018-12-19 Apple Inc. Travel updates for calendar events
CN107690666A (en) * 2015-06-07 2018-02-13 苹果公司 Stroke for calendar event updates
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US11010127B2 (en) 2015-06-29 2021-05-18 Apple Inc. Virtual assistant for media playback
US11170030B2 (en) * 2015-07-02 2021-11-09 Fannie Mae Selecting properties using location constraints based on travel time contours
US20170004146A1 (en) * 2015-07-02 2017-01-05 Fannie Mae Selecting properties using location constraints based on travel time contours
US20170017928A1 (en) * 2015-07-15 2017-01-19 Microsoft Technology Licensing, Llc Inferring physical meeting location
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US11809483B2 (en) 2015-09-08 2023-11-07 Apple Inc. Intelligent automated assistant for media search and playback
US11853536B2 (en) 2015-09-08 2023-12-26 Apple Inc. Intelligent automated assistant in a media environment
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US11550542B2 (en) 2015-09-08 2023-01-10 Apple Inc. Zero latency digital assistant
US11126400B2 (en) 2015-09-08 2021-09-21 Apple Inc. Zero latency digital assistant
US11500672B2 (en) 2015-09-08 2022-11-15 Apple Inc. Distributed personal assistant
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US11526368B2 (en) 2015-11-06 2022-12-13 Apple Inc. Intelligent automated assistant in a messaging environment
US11809886B2 (en) 2015-11-06 2023-11-07 Apple Inc. Intelligent automated assistant in a messaging environment
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US11886805B2 (en) 2015-11-09 2024-01-30 Apple Inc. Unconventional virtual assistant interactions
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10354652B2 (en) 2015-12-02 2019-07-16 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10484390B2 (en) * 2015-12-15 2019-11-19 Amazon Technologies, Inc. Verification of credential reset
US9954867B1 (en) * 2015-12-15 2018-04-24 Amazon Technologies, Inc. Verification of credential reset
US11228599B2 (en) * 2015-12-15 2022-01-18 Amazon Technologies, Inc. Verification of credential reset
US11853647B2 (en) 2015-12-23 2023-12-26 Apple Inc. Proactive assistance based on dialog communication between devices
US10942703B2 (en) 2015-12-23 2021-03-09 Apple Inc. Proactive assistance based on dialog communication between devices
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US11863840B2 (en) * 2016-02-12 2024-01-02 Rovi Guides, Inc. Systems and methods for recording broadcast programs that will be missed due to travel delays
US11277673B2 (en) * 2016-02-12 2022-03-15 Rovi Guides, Inc. Systems and methods for recording broadcast programs that will be missed due to travel delays
US20220159348A1 (en) * 2016-02-12 2022-05-19 Rovi Guides, Inc. Systems and methods for recording broadcast programs that will be missed due to travel delays
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US11690111B1 (en) 2016-06-03 2023-06-27 Steelcase Inc. Smart workstation method and system
US11330647B2 (en) 2016-06-03 2022-05-10 Steelcase Inc. Smart workstation method and system
US10459611B1 (en) 2016-06-03 2019-10-29 Steelcase Inc. Smart workstation method and system
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US9921726B1 (en) 2016-06-03 2018-03-20 Steelcase Inc. Smart workstation method and system
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US11069347B2 (en) 2016-06-08 2021-07-20 Apple Inc. Intelligent automated assistant for media exploration
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
US10354011B2 (en) 2016-06-09 2019-07-16 Apple Inc. Intelligent automated assistant in a home environment
US11657820B2 (en) 2016-06-10 2023-05-23 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US11037565B2 (en) 2016-06-10 2021-06-15 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10733993B2 (en) 2016-06-10 2020-08-04 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10297253B2 (en) 2016-06-11 2019-05-21 Apple Inc. Application integration with a digital assistant
US11809783B2 (en) 2016-06-11 2023-11-07 Apple Inc. Intelligent device arbitration and control
US10269345B2 (en) 2016-06-11 2019-04-23 Apple Inc. Intelligent task discovery
US10942702B2 (en) 2016-06-11 2021-03-09 Apple Inc. Intelligent device arbitration and control
US10580409B2 (en) 2016-06-11 2020-03-03 Apple Inc. Application integration with a digital assistant
US11152002B2 (en) 2016-06-11 2021-10-19 Apple Inc. Application integration with a digital assistant
US11749275B2 (en) 2016-06-11 2023-09-05 Apple Inc. Application integration with a digital assistant
US10521466B2 (en) 2016-06-11 2019-12-31 Apple Inc. Data driven natural language event detection and classification
US10089072B2 (en) 2016-06-11 2018-10-02 Apple Inc. Intelligent device arbitration and control
US10361861B2 (en) * 2016-08-16 2019-07-23 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Input assembly and terminal
US10361862B2 (en) * 2016-08-16 2019-07-23 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Input assembly and terminal
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
US10553215B2 (en) 2016-09-23 2020-02-04 Apple Inc. Intelligent automated assistant
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US11190731B1 (en) 2016-12-15 2021-11-30 Steelcase Inc. Content amplification system and method
US11652957B1 (en) 2016-12-15 2023-05-16 Steelcase Inc. Content amplification system and method
US10264213B1 (en) 2016-12-15 2019-04-16 Steelcase Inc. Content amplification system and method
US10638090B1 (en) 2016-12-15 2020-04-28 Steelcase Inc. Content amplification system and method
US10897598B1 (en) 2016-12-15 2021-01-19 Steelcase Inc. Content amplification system and method
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US11656884B2 (en) 2017-01-09 2023-05-23 Apple Inc. Application integration with a digital assistant
US10991371B2 (en) 2017-03-31 2021-04-27 Advanced New Technologies Co., Ltd. Voice function control method and apparatus
US20190304461A1 (en) * 2017-03-31 2019-10-03 Alibaba Group Holding Limited Voice function control method and apparatus
US10643615B2 (en) * 2017-03-31 2020-05-05 Alibaba Group Holding Limited Voice function control method and apparatus
US10451436B2 (en) * 2017-04-12 2019-10-22 Microsoft Technology Licensing, Llc Generating routes using events
US10741181B2 (en) 2017-05-09 2020-08-11 Apple Inc. User interface for correcting recognition errors
US10332518B2 (en) 2017-05-09 2019-06-25 Apple Inc. User interface for correcting recognition errors
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
US10755703B2 (en) 2017-05-11 2020-08-25 Apple Inc. Offline personal assistant
US11599331B2 (en) 2017-05-11 2023-03-07 Apple Inc. Maintaining privacy of personal information
US11467802B2 (en) 2017-05-11 2022-10-11 Apple Inc. Maintaining privacy of personal information
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
US10847142B2 (en) 2017-05-11 2020-11-24 Apple Inc. Maintaining privacy of personal information
US10789945B2 (en) 2017-05-12 2020-09-29 Apple Inc. Low-latency intelligent automated assistant
US11538469B2 (en) 2017-05-12 2022-12-27 Apple Inc. Low-latency intelligent automated assistant
US11862151B2 (en) 2017-05-12 2024-01-02 Apple Inc. Low-latency intelligent automated assistant
US10410637B2 (en) 2017-05-12 2019-09-10 Apple Inc. User-specific acoustic models
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
US10791176B2 (en) 2017-05-12 2020-09-29 Apple Inc. Synchronization and task delegation of a digital assistant
US11405466B2 (en) 2017-05-12 2022-08-02 Apple Inc. Synchronization and task delegation of a digital assistant
US11580990B2 (en) 2017-05-12 2023-02-14 Apple Inc. User-specific acoustic models
US11380310B2 (en) 2017-05-12 2022-07-05 Apple Inc. Low-latency intelligent automated assistant
US10810274B2 (en) 2017-05-15 2020-10-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
US10482874B2 (en) 2017-05-15 2019-11-19 Apple Inc. Hierarchical belief states for digital assistants
US10909171B2 (en) 2017-05-16 2021-02-02 Apple Inc. Intelligent automated assistant for media exploration
US10748546B2 (en) 2017-05-16 2020-08-18 Apple Inc. Digital assistant services based on device capabilities
US11217255B2 (en) 2017-05-16 2022-01-04 Apple Inc. Far-field extension for digital assistant services
US10303715B2 (en) 2017-05-16 2019-05-28 Apple Inc. Intelligent automated assistant for media exploration
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US11532306B2 (en) 2017-05-16 2022-12-20 Apple Inc. Detecting a trigger of a digital assistant
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US11675829B2 (en) 2017-05-16 2023-06-13 Apple Inc. Intelligent automated assistant for media exploration
US10692049B2 (en) * 2017-05-25 2020-06-23 Microsoft Technology Licensing, Llc Displaying a countdown timer for a next calendar event in an electronic mail inbox
US20180341923A1 (en) * 2017-05-25 2018-11-29 Microsoft Technology Licensing, Llc Persistent next calendar item surfaced in electronic mailbox
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US11257038B2 (en) * 2017-06-02 2022-02-22 Apple Inc. Event extraction systems and methods
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
US11227504B1 (en) * 2017-12-22 2022-01-18 Charles Isgar Group study system
US11705014B1 (en) * 2017-12-22 2023-07-18 Charles Isgar Group study system
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US11710482B2 (en) 2018-03-26 2023-07-25 Apple Inc. Natural assistant interaction
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11900923B2 (en) 2018-05-07 2024-02-13 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11487364B2 (en) 2018-05-07 2022-11-01 Apple Inc. Raise to speak
US11854539B2 (en) 2018-05-07 2023-12-26 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US11169616B2 (en) 2018-05-07 2021-11-09 Apple Inc. Raise to speak
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11907436B2 (en) 2018-05-07 2024-02-20 Apple Inc. Raise to speak
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
US11630525B2 (en) 2018-06-01 2023-04-18 Apple Inc. Attention aware virtual assistant dismissal
US11431642B2 (en) 2018-06-01 2022-08-30 Apple Inc. Variable latency device coordination
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
US10684703B2 (en) 2018-06-01 2020-06-16 Apple Inc. Attention aware virtual assistant dismissal
US11360577B2 (en) 2018-06-01 2022-06-14 Apple Inc. Attention aware virtual assistant dismissal
US10403283B1 (en) 2018-06-01 2019-09-03 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US11495218B2 (en) 2018-06-01 2022-11-08 Apple Inc. Virtual assistant operation in multi-device environments
US11009970B2 (en) 2018-06-01 2021-05-18 Apple Inc. Attention aware virtual assistant dismissal
US10720160B2 (en) 2018-06-01 2020-07-21 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10984798B2 (en) 2018-06-01 2021-04-20 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
US10944859B2 (en) 2018-06-03 2021-03-09 Apple Inc. Accelerated task performance
US10504518B1 (en) 2018-06-03 2019-12-10 Apple Inc. Accelerated task performance
US10496705B1 (en) 2018-06-03 2019-12-03 Apple Inc. Accelerated task performance
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11893992B2 (en) 2018-09-28 2024-02-06 Apple Inc. Multi-modal inputs for voice commands
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11783815B2 (en) 2019-03-18 2023-10-10 Apple Inc. Multimodality in digital assistant systems
US11928604B2 (en) 2019-04-09 2024-03-12 Apple Inc. Method and apparatus for building an intelligent automated assistant
US11705130B2 (en) 2019-05-06 2023-07-18 Apple Inc. Spoken notifications
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11217251B2 (en) 2019-05-06 2022-01-04 Apple Inc. Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11675491B2 (en) 2019-05-06 2023-06-13 Apple Inc. User configurable task triggers
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11888791B2 (en) 2019-05-21 2024-01-30 Apple Inc. Providing message response suggestions
US11657813B2 (en) 2019-05-31 2023-05-23 Apple Inc. Voice identification in digital assistant systems
US11360739B2 (en) 2019-05-31 2022-06-14 Apple Inc. User activity shortcut suggestions
US11237797B2 (en) 2019-05-31 2022-02-01 Apple Inc. User activity shortcut suggestions
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
US11790914B2 (en) 2019-06-01 2023-10-17 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11488406B2 (en) 2019-09-25 2022-11-01 Apple Inc. Text detection using global geometry estimators
US11288636B2 (en) * 2020-01-23 2022-03-29 Capital One Services, Llc Computer-implemented systems configured for automated electronic calendar item predictions for calendar item rescheduling and methods of use thereof
US11765209B2 (en) 2020-05-11 2023-09-19 Apple Inc. Digital assistant hardware abstraction
US11914848B2 (en) 2020-05-11 2024-02-27 Apple Inc. Providing relevant data items based on context
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
US11838734B2 (en) 2020-07-20 2023-12-05 Apple Inc. Multi-device audio adjustment coordination
US11750962B2 (en) 2020-07-21 2023-09-05 Apple Inc. User identification using headphones
US11696060B2 (en) 2020-07-21 2023-07-04 Apple Inc. User identification using headphones
US11924254B2 (en) 2021-05-03 2024-03-05 Apple Inc. Digital assistant hardware abstraction
CN115587804A (en) * 2022-12-07 2023-01-10 中通服建设有限公司 Smart community management system

Also Published As

Publication number Publication date
US20120150580A1 (en) 2012-06-14
US8504404B2 (en) 2013-08-06

Similar Documents

Publication Publication Date Title
US8504404B2 (en) Distance and location-aware scheduling assistance in a calendar system with notification of potential conflicts
US20180107981A1 (en) Calendaring location-based events and associated travel
US20200242560A1 (en) Suggested locations for calendar events
US8498953B2 (en) Method for allocating trip sharing
US8296266B2 (en) Computer implemented method for integrating services in a calendar application via web services
US8126903B2 (en) Computer implemented method for allocating drivers and passengers sharing a trip
US20140149164A1 (en) Scheduling management system and scheduling management method
US20150161752A1 (en) Intelligent queuing for user selection in providing on-demand services
US20110066468A1 (en) Dynamic event planning through location awareness
US20130103450A1 (en) Computer implementation method for integrating services in a calendar application via meeting request e-mails
US20140278057A1 (en) System and method for automatically calendaring events and associated reminders
US20100094678A1 (en) System and method for providing delay notifications
KR20140039194A (en) System and method for an intelligent personal timeline assistant
CN107690666A (en) Stroke for calendar event updates
CN110612523B (en) Associating identifiers based on paired data sets
WO2011160044A2 (en) Distance and location-aware reminders and scheduling assistance in a calendar system
US20190034886A1 (en) System and method for automatic calendar maintenance
JP6633733B1 (en) Outside work management system
EP2336956A2 (en) Computer implemented methods for integrating services in a calendar application and computer implemented method for allocating drivers and passengers sharing a trip
US10036647B2 (en) Systems and methods for the determination of a user's 4D trajectory
Epstein et al. Obtaining and modeling variability in travel times from off-site satellite clinics to hospitals and surgery centers for surgeons and proceduralists seeing office patients in the morning and performing a to-follow list of cases in the afternoon
US20160048809A1 (en) Fuzzy planning for management of activities
WO2022045058A1 (en) Schedule management device, schedule management system, and storage medium
CN111680956B (en) Information processing device, information processing method, and computer-readable non-transitory storage medium storing program
JP7442492B2 (en) Information processing device, information processing method, and information processing program

Legal Events

Date Code Title Description
AS Assignment

Owner name: GOOGLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NORTON, KENNETH S.;REEL/FRAME:027128/0690

Effective date: 20111017

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044142/0357

Effective date: 20170929