The following relates to systems and methods for controlling event reminders.
Computing devices, both mobile and desktop, typically provide applications for organizing events such as meetings or other obligations. For example, a calendar application may be provided to enable a user to organize daily events, including those that require other attendees. When creating a new calendar event, the user is typically able to select or otherwise designate a reminder time. The reminder time generally specifies either a particular time at which the user will be reminded of the event, or an interval of time before the event at which the reminder will occur (e.g. 15 minutes prior).
Embodiments will now be described by way of example only with reference to the appended drawings wherein:
It has been recognized that although the purpose of creating an event, e.g. in a calendar application, is to allow one to organize their time, unforeseen circumstances may arise which can affect the details of the event. In order to accommodate these unforeseen circumstances, user interaction is typically required, e.g. to change the meeting time, adjust the reminder time, contact others involved in the event, etc. Moreover, if the time to get to the event is greater than the time which is available to the user to get there, either currently or after the designated reminder time, the user may be late or miss the event.
It has been found that by obtaining data that could affect event details, such data can be used to generate alerts that are sent early enough to give the user time to reach the event, predict lateness, arrange replacements/delegates, reschedule, cancel meetings in advance, etc. By more intelligently providing reminders to the user, the above-described unforeseen circumstances can be dealt with. In some embodiments, as will be explained below, an aggregation of various external data sources as well as internal data can be used to better predict when a user should be reminded of the time for their event (e.g. to give them enough time to arrive), determine and advise whether they may be late regardless, and/or enable the user to arrange a delegate or replacement or to reschedule or cancel the event. For example, external data such as traffic data, weather data, flight information, customs and security wait times, parking information; and/or internal data such as GPS location can be used to determine possible delays in getting to the event and thus require advance notice or rescheduling.
The following examples include communications between mobile or handheld devices, which will be commonly referred to as mobile devices hereinafter and referred to by numeral 10. As will be discussed, the principles discussed below are equally applicable to other computing devices, such as desktop computers and the like.
The mobile device 10 can be a multi-way communication device with advanced data communication capabilities including the capability to communicate with other mobile devices 10 or computer systems through a network of transceiver stations. The mobile device 10 may also have the capability to allow voice communication. Depending on the functionality provided by the mobile device 10, it may be referred to as a data messaging device, a multi-way pager, a cellular telephone with data messaging capabilities, a wireless Internet appliance, or a data communication device (with or without telephony capabilities). The mobile device 10 can also be one that is used in a system that is configured for continuously routing all forms of pushed information from a host system 25 to the mobile device 10. One example of such a system will now be described making reference to
Message C in
The mobile device 10 may be adapted for communication within wireless network 20 via wireless links, as required by each wireless network 20 being used. As an illustrative example of the operation for a wireless router 26 shown in
Although the above describes the host system 25 as being used within a networked environment, this is just one embodiment of one type of host service that offers push-based messages for a handheld wireless device that is capable of notifying and presenting the data to the user in real-time at the mobile device when data arrives at the host system.
By offering a wireless router 26 (sometimes referred to as a “relay”, “message server”, “data redirector”, etc.), there are a number of major advantages to both the host system 25 and the wireless network 20. The host system 25 in general runs a host service that is considered to be any computer program that is running on one or more computer systems. The host service is said to be running on a host system 25, and one host system 25 can support any number of host services. A host service may or may not be aware of the fact that information is being channeled to mobile devices 10. For example an e-mail or message program 138 (see
Although the system is exemplified as operating in a multi-way communications mode, certain aspects of the system could be used in a “one and one-half” or acknowledgment paging environment, or even with a one-way paging system. In such limited data messaging environments, the wireless router 26 still could abstract the mobile device 10 and wireless network 20, offer push services to standard web-based server systems and allow a host service in a host system 25 to reach the mobile device 10 in many countries.
The host system 25 shown herein can have many methods when establishing a communication link to the wireless router 26. For one skilled in the art of data communications the host system 25 could use connection protocols like TCP/IP, X.25, Frame Relay, ISDN, ATM or many other protocols to establish a point-to-point connection. Over this connection there are several tunneling methods available to package and send the data, some of these include: HTTP/HTML, HTTP/XML, HTTP/Proprietary, FTP, SMTP or some other proprietary data exchange protocol. The type of host systems 25 that might employ the wireless router 26 to perform push could include: field service applications, e-mail services, stock quote services, banking services, stock trading services, field sales applications, advertising messages and many others. This wireless network 20 abstraction is made possible by the wireless router 26, which implements this routing and push functionality. The type of user-selected data items being exchanged by the host could include: E-mail messages, events, meeting notifications, address entries, journal entries, personal alerts, alarms, warnings, stock quotes, news bulletins, bank account transactions, field service updates, stock trades, heart-monitoring information, vending machine stock levels, meter reading data. GPS data, etc., but could, alternatively, include any other type of message that is transmitted to the host system 25, or that the host system 25 acquires through the use of intelligent agents, such as data that is received after the host system 25 initiates a search of a database or a website or a bulletin board.
The wireless router 26 provides a range of services to make creating a push-based host service possible. These networks may comprise: (1) the Code Division Multiple Access (CDMA) network, (2) the Groupe Special Mobile or the Global System for Mobile Communications (GSM) and the General Packet Radio Service (GPRS), and (3) the existing and upcoming third-generation (3G) and fourth generation (4G) networks like EDGE, UMTS and HSDPA, LTE, Wi-Max etc. Some older examples of data-centric networks include, but are not limited to: (1) the Mobitex Radio Network (“Mobitex”) and (2) the DataTAC Radio Network (“DataTAC”).
To be effective in providing push services for host systems 25, the wireless router 26 may implement a set of defined functions. It can be appreciated that one could select many different hardware configurations for the wireless router 26, however, many of the same or similar set of features would likely be present in the different configurations. The wireless router 26 may offer any one or more of the following features for host services: 1) An addressing method so that mobile device 10 traffic can be addressed to a host system 25 without the need for the wireless network 20 to assign an identity to each host system 25; 2) An efficient and authenticated method for the host system 25 to initiate a communication connection to the wireless router 26 for the purposes of opening a communication tunnel to the one or more mobile devices 10 that the host system 25 wishes to communicate with; 3) A reliable method for exchanging data between the host system 25 and the mobile device 10, in a manner consistent with the abilities of the wireless network 20; 4) Providing feedback to the host system 25 when data is delivered, which allows the host system to clean up any wireless delivery queues if necessary, or inform the original sender (user or program) that the data has been delivered to the mobile device 10; 5) Implementation of a wireless network 20 initiated push of services or data to a mobile device 10, from a wireless router 26; and 6) Connect to a wide range of wireless networks 20 and provide a way of tracking the user's location so that a ‘follow you anywhere’ solution can be provided.
An example configuration for the mobile device 10 is illustrated in
The main processor 102 also interacts with additional subsystems such as a Random Access Memory (RAM) 106, a flash memory 108, a display 110, an auxiliary input/output (I/O) subsystem 112, a data port 114, a keyboard 116, a speaker 118, a microphone 120, a GPS receiver 121, short-range communications 122, and other device subsystems 124. As will be discussed below, the short-range communications 122 can implement any suitable or desirable device-to-device or peer-to-peer communications protocol capable of communicating at a relatively short range, e.g. directly from one device to another. Examples include Bluetooth®, ad-hoc WiFi, infrared, or any “long-range” protocol re-configured to utilize available short-range components. It will therefore be appreciated that short-range communications 122 may represent any hardware, software or combination of both that enable a communication protocol to be implemented between devices or entities in a short range scenario, such protocol being standard or proprietary.
Some of the subsystems of the mobile device 10 perform communication-related functions, whereas other subsystems may provide “resident” or on-device functions. By way of example, the display 110 and the keyboard 116 may be used for both communication-related functions, such as entering a text message for transmission over the network 20, and device-resident functions such as a calculator or task list.
The mobile device 10 can send and receive communication signals over the wireless network 20 after required network registration or activation procedures have been completed. Network access is associated with a subscriber or user of the mobile device 10. To identify a subscriber, the mobile device 10 may use a subscriber module component or “smart card” 126, such as a Subscriber Identity Module (SIM), a Removable User Identity Module (RUIM) and a Universal Subscriber Identity Module (USIM). In the example shown, a SIM/RUIM/USIM 126 is to be inserted into a SIM/RUIM/USIM interface 128 in order to communicate with a network. Without the component 126, the mobile device 10 is not fully operational for communication with the wireless network 20. Once the SIM/RUIM/USIM 126 is inserted into the SIM/RUIM/USIM interface 128, it is coupled to the main processor 102.
The mobile device 10 is typically a battery-powered device and in this example includes a battery interface 132 for receiving one or more rechargeable batteries 130. In at least some embodiments, the battery 130 can be a smart battery with an embedded microprocessor. The battery interface 132 is coupled to a regulator (not shown), which assists the battery 130 in providing power V+ to the mobile device 10. Although current technology makes use of a battery, future technologies such as micro fuel cells may provide the power to the mobile device 10.
The mobile device 10 also includes an operating system 134 and software components 136 to 146 which are described in more detail below. The operating system 134 and the software components 136 to 146 that are executed by the main processor 102 are typically stored in a persistent store such as the flash memory 108, which may alternatively be a read-only memory (ROM) or similar storage element (not shown). Those skilled in the art will appreciate that portions of the operating system 134 and the software components 136 to 146, such as specific device applications, or parts thereof, may be temporarily loaded into a volatile store such as the RAM 106. Other software components can also be included, as is well known to those skilled in the art.
The subset of software applications 136 that control basic device operations, including data and voice communication applications, may be installed on the mobile device 10 during its manufacture. Software applications may include a message application 138, a device state module 140, a Personal Information Manager (PIM) 142, a connect module 144 and an IT policy module 146. A message application 138 can be any suitable software program that allows a user of the mobile device 10 to send and receive electronic messages, wherein messages are typically stored in the flash memory 108 of the mobile device 10. A device state module 140 provides persistence, i.e. the device state module 140 ensures that important device data is stored in persistent memory, such as the flash memory 108, so that the data is not lost when the mobile device 10 is turned off or loses power. A PIM 142 includes functionality for organizing and controlling data items of interest to the user, such as, but not limited to, e-mail, text messages, instant messages, contacts, events, and voice mails, and may interact with the wireless network 20. A connect module 144 implements the communication protocols that are required for the mobile device 10 to communicate with the wireless infrastructure and any host system 25, such as an enterprise system, that the mobile device 10 is authorized to interface with. An IT policy module 146 receives IT policy data that encodes the IT policy, and may be responsible for organizing and securing rules such as the “Set Maximum Password Attempts” IT policy.
Other types of software applications or components 139 can also be installed on the mobile device 10. These software applications 139 can be pre-installed applications (i.e. other than message application 138) or third party applications, which are added after the manufacture of the mobile device 10. Examples of third party applications include games, calculators, utilities, etc. The additional applications 139 can be loaded onto the mobile device 10 through at least one of the wireless network 20, the auxiliary I/O subsystem 112, the data port 114, the short-range communications subsystem 122, or any other suitable device subsystem 124.
The data port 114 can be any suitable port that enables data communication between the mobile device 10 and another computing device. The data port 114 can be a serial or a parallel port. In some instances, the data port 114 can be a USB port that includes data lines for data transfer and a supply line that can provide a charging current to charge the battery 130 of the mobile device 10.
For voice communications, received signals are output to the speaker 118, and signals for transmission are generated by the microphone 120. Although voice or audio signal output is accomplished primarily through the speaker 118, the display 110 can also be used to provide additional information such as the identity of a calling party, duration of a voice call, or other voice call related information.
For composing data items, such as e-mail messages, for example, a user or subscriber could use a touch-sensitive overlay (not shown) on the display 110 that is part of a touch screen display (not shown), in addition to possibly the auxiliary I/O subsystem 112. The auxiliary I/O subsystem 112 may include devices such as: a mouse, track ball, infrared fingerprint detector, or a roller wheel with dynamic button pressing capability. A composed item may be transmitted over the wireless network 20 through the communication subsystem 104.
The instant messaging application 50 is an instant messaging service that may hosted and provided by the host system 25, e.g. using a messaging server at the wireless router 26 or may be associated with a 3rd party instant messaging service (not shown). The instant messaging application 50 comprises or otherwise has access to contact information often referred to as a “buddy” list 30. The events application 52 comprises or otherwise has access to a portion of memory, database or other data storage device storing event entries 32 which may include any data or information associated with a particular date and time in the events application 52 and may be displayed in a graphical user interface (GUI) therefor.
The intelligent reminder module 53 comprises or otherwise has access to a set of notification rules 33, which may be stored in memory such as a database. The notification rules 33 in the examples described herein may generally refer to any data or information that is used or referred to by the intelligent reminder module 53 in performing its operations and may be updatable, e.g. through user profiles or preferences, user input, IT policies, external commands (i.e. from other devices), etc.
It will be appreciated that any module or component exemplified herein that executes instructions may include or otherwise have access to computer readable media such as storage media, computer storage media, or data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by an application, module, or both. Any such computer storage media may be part of the mobile device 10, wireless router 26, host system 25, etc., or accessible or connectable thereto. Any application or module herein described may be implemented using computer readable/executable instructions that may be stored or otherwise held by such computer readable media.
Turning now to
The intelligent reminder module 53 may perform the above-noted comparison and reference the notification rules 33 to determine an appropriate remediation process to be initiated. The remediation process can be as simple as adjusting the reminder time and displaying a reminder at an earlier time (or warning of lateness if applicable) or may initiate a process wherein the event is rescheduled, an alternate or delegate is notified and arranged, or the event is cancelled (both locally and for any attendees if applicable). The external data may be obtained from one or more external web services 62 via the wireless network 20 and the communication subsystem 104 as shown. The web services 62 may be polled periodically or data may be uploaded to the mobile device 10 or downloaded from the web service 62 at predetermined times or requested in relation to the reminder algorithm. The web services 62 may be publicly available sources, e.g. available via a web page, or may be dedicated or custom services, e.g. provided in conjunction with the wireless router 26 or host system 25. The intelligence obtained from the external and internal data, and the resulting proposed reminder time (or indication of possible lateness) can be used to notify both the user of the mobile device 10 on which the intelligent reminder module 53 resides, as well as other recipients 64, e.g. other mobile devices 10. For displaying messages and/or reminders on the mobile device 10, the intelligent reminder module 53 may utilize the display 110 and receive inputs from the mobile device inputs such as the auxiliary I/O 112, keyboard 116, etc. to obtain instructions for performing further operations pertaining to the event.
In order to intelligently control event reminder notifications, one or more event entries 32 is required. A event entry 32 may be entered in response to a meeting or other event request (from a meeting organizer) or may be entered locally by the user, e.g. into a calendar or organizer application. In the following examples, an event entry 32 is generated in the events application 52 to enable settings associated with the intelligent reminder module 53 and thus the notification rules 33 to be specified.
The events application 52 may be initiated or otherwise accessed or launched by, for example, selecting a corresponding icon (not shown) displayed on the mobile device 10 as is well known in the art. Within atypical events application 52, new events, also known as appointments can be entered into a user's organizer or event related application in various ways. For example, the user may select a block of time within a day, week or month view and begin entering text associated with the event or appointment to create a new entry. Alternatively, as shown in
In the example shown in
The details portion 158 provides the ability to specify various parameters 162 for the event. In the example shown, the parameters include a start time, an end time, a duration, a time zone, how to display the user's availability during that time (Show Time As), and when to provide a reminder (if any). It can be appreciated that such parameters may be interrelated and a setting in one or more of the parameters can thus cause another parameter to change. For example, the end time with respect to the start time should automatically adjust the duration accordingly. Rather than specify specific times for the appointment, an All Day Event option 160 can also be provided to enable the event to span the entire day in the organizer. An event can also be a recurring event and thus recurrence settings 164 can also be specified in this example. In
In order to control the event's visibility to other attendees in a shared events application 52, a Mark As Private option 166 can also be provided. In this way, by selecting the Mark As Private option 166, the user can control read permissions across a group sharing their events applications 52. For example, if a user that normally shares their events application 52 has a private meeting, e.g. a job interview that they do not wish to divulge, they can use the Mark as Private option 166 to ensure that the other members of the group know that they are busy but do not know the details.
To enable the user to have some control over the intelligent reminder module 53 and the notification rules 33, the details portion 158 may also include an intelligent alerts portion 168 as shown in
The example shown in
Various notification messages will now be described by way of example, making reference to
In one embodiment, by selecting the Notify Others button 76 shown in
As discussed above, for certain event types, e.g. a meeting with other attendees, User A may be provided with the ability to request a rescheduling of the event. It can be appreciated that such rescheduling options can also be performed for event entries 32 that reside only on one mobile device 10. For example, if the event in question is a haircut appointment and User A is able to arrange for another time, the events application 52 can be automatically updated to “reschedule” the new time for the haircut.
To continue with the example concerning the Project Meeting shown in
If User B selects the Agree button 90, a reschedule confirmation notification 92 may be displayed on User A's mobile device 10 as shown in
It can therefore be seen that various notification mechanisms and options therewithin can be used to notify both the user associated with the mobile device 10 on which the intelligent reminder module 53 resides, and others associated with the event. It can also be appreciated that using such notifications can enable the intelligent reminder module 53 and/or a third party service to negotiate alternates/delegates, reschedule meetings, and notify others of cancelled events. The notification rules 33 can be used to define which notification mechanisms are used for different event types and for different situations, e.g. when the user “may” be late versus is already late.
Turning now to
The device data 202 can be any data or information provided by or available from the mobile device 10 that can be used in determining whether or not to adjust the alert time. For example, a GPS location for the mobile device 10 obtained using the GPS receiver 121 can be used to determine the distance between where the mobile device 10 currently is and where it needs to go, in other words how far the mobile device 10 is from the location associated with the event. The event details 204 can be any relevant information pertaining to the event, such as the location at which the event will be held, the time at which the event is to be held, the duration of the event, other attendees associated with the event, etc.
The external events 200, device events 202, and event details 204 may then be used to determine an appropriate alert time at 206. For example, an aggregation routine or algorithm can be used by the aggregator 60 to determine when the reminder should be displayed on the mobile device 10 and/or if an alternate or delegate should be arranged, others should be notified, etc. as shown by way of example above. An example aggregation algorithm is as follows:
Location data (device location, destination location, estimated time between)+Traffic data (possible delays along the route between locations)+Weather data (possible delays for rain, wind, snow, etc.)+Appointment type (e.g. time associated with clearing security at airport)=Adjusted Reminder Time.
In this example, the Location data, Traffic data, Weather data, and Appointment type each have a duration of time associated with it, such that the aggregate of these durations of time equal a total duration of time that is representative of approximately how much advance notice the user may need to get from their current location to the event. That duration can be used to then determine an appropriate time prior to the event to provide a reminder on the display of the mobile device 10. It can be appreciated that the algorithm shown above is for illustrative purposes only and that more or less sophisticated calculations can be used to make such an estimation. Also, it can be appreciated that the algorithm and the operations shown in
At 208, the intelligent reminder module 53 then determines if the appropriate alert time determined in 206 falls on a time which is prior to the reminder set for the event, e.g. as determined from the event details 204. For example, if the appropriate alert time is calculated to be 1 hour but a 1.5 hour reminder time is set, there is no need to adjust the alert time as the earlier time should supersede a later one. If the alert time determined in 206 does fall on a time that is prior to the current reminder setting, the alert setting can be adjusted at 210 with the new time. The intelligent reminder module 53 then determines at 212 if the new time for the reminder is earlier than the current time. If not, then the events application 52 is enabled to simply display the adjusted reminder time at the earlier time at 214. However, if the adjusted reminder time falls prior to the current time, i.e. it would have needed to be provided in the past to give the user enough time to reach the event, a remediation process can be initiated at 216. It can be appreciated that various remediation processes can be implemented at 216 in order to address the possibility that the user would be late or cannot make the event. For example, as will be discussed in greater detail below, alternates or delegates can be appointed, the event time adjusted, etc. and the notifications shown in
An example set of computer executable instructions for executing an example remediation process 216a is shown in
Another remediation process 216b is shown by way of example in
Returning to operation 256, if on the other hand, it is detected that the alternate has agreed to the request, e.g. by selecting the Agree button 80 at 256, an acceptance message can be generated and returned to User A's mobile device 10 at 268. The acceptance message 82 can be received by User A's mobile device 10 at 270 and displayed, e.g. as shown in
Yet another remediation process 216c is shown by way of example in
The message to be sent to the other attendee is sent to the attendee at 290, which is received by the attendee at 292. In this example, a request to reschedule 89 such as the one shown in
A message with a proposed alternative new time (not shown) may then be received by User A's mobile device 10 at 306 and User A may then be given the opportunity to accept, deny or propose yet another time at 308 and 310. For example a message with various options to that effect can be displayed to User A using the intelligent reminder module 53 enabling such selections to be detected. If the new time proposed by the attendee is accepted at 308, the new time may be set at 312. If the new time proposed by the attendee is not accepted at 308, and a new time is not proposed at 310, the event can be cancelled at 302. Finally, if the new time proposed by the attendee is not accepted at 308 but yet another new time is proposed at 310, a new message can be prepared at 290 and the process repeated until the event is cancelled or a new time is negotiated. It can therefore be appreciated that the intelligent reminder module 53 can be configured to enable both notifications and exchanges of requests or proposals between devices in order to complete the remediation process 216.
Yet another example remediation process 216d is shown in
If at 334, the computing device associated with User B determines that User B has denied the proposal to fill in for User A, the service may be notified of the denial at 336, which is received by the service at 338. The service then determines at 340 whether or not there are additional potential alternates. If there are on or more additional alternates, the hierarchy is examined again at 326 and the process repeats. If there are no additional alternates, a notification of a failed alternative is prepared and sent to User A's mobile device at 342. User A's mobile device 10 then receives the message of a failed alternative at 344.
In some embodiments (not shown explicitly), the intelligent reminder module 53 can be configured to perform any one or more of the example remediation processes 216 shown herein and thus the intelligent reminder module 53 can be configured to enable further remediation at 346. For example, if the service is unable to find an alternative using the stored hierarchy, the intelligent reminder module 53 can enable User A to send a customized message to any desired recipient using the process shown in
Although the above principles have been described with reference to certain specific embodiments, various modifications thereof will be apparent to those skilled in the art without departing from the scope of the claims appended hereto.