123
Senior Member
I've created a Reminder system that periodically reminds me (via speech) of current and upcoming events and tasks. If you have ideas about how such a system should work, I invite you to post your suggestions.
Here's how the current version works:
Three times a day, (morning, afternoon, and evening) a scheduled task announces the reminders applicable for that day. It refers to a master list of reminders (everything from holidays, birthdays, anniversaries, to trash day) and extracts all reminders that are applicable for the current day.
All reminders are in a central location (Media/Reminders).
Each reminder consists of a Message and a Time Filter.
A reminder's time filter consists of the following:
You can be forewarned an upcoming event by setting a reminder's AdvanceNotice property:
AdvanceNotice (None, 1, 1_3, 1_3_5, etc)
If you select "1_3_5" you will be forewarned of an upcoming event using the following pattern: 5, 3, and 1 day before the event occurs. You also create new patterns to suit your needs (i.e. 1_10_20_30, etc).
All eligible reminders are processed into a single text string. XML-based speech "hints" (emphasis and pauses) are included in string to help the Text-To-Speech function render the speech output. Here are two examples (without the XML hinting) for the same day:
Good Morning! There are two reminders this morning. One. It is Trash Day. Two. Advance Notice. In three days, It is Uncle Steve's birthday.
Good Evening! There is is only one reminder this evening. Advance Notice. In three days, It is Uncle Steve's birthday.
Future Features:
Here's how the current version works:
Three times a day, (morning, afternoon, and evening) a scheduled task announces the reminders applicable for that day. It refers to a master list of reminders (everything from holidays, birthdays, anniversaries, to trash day) and extracts all reminders that are applicable for the current day.
All reminders are in a central location (Media/Reminders).
Each reminder consists of a Message and a Time Filter.
A reminder's time filter consists of the following:
- Year (All/2008/2009/etc)
- Month (All/Jan/Feb/etc)
- Day (All/1/2/3/etc)
- Monday (true/false)
- Tuesday(true/false)
- ...
- Sunday (true/false)
- Period (All/Morning/Afternoon/Evening)
You can be forewarned an upcoming event by setting a reminder's AdvanceNotice property:
AdvanceNotice (None, 1, 1_3, 1_3_5, etc)
If you select "1_3_5" you will be forewarned of an upcoming event using the following pattern: 5, 3, and 1 day before the event occurs. You also create new patterns to suit your needs (i.e. 1_10_20_30, etc).
All eligible reminders are processed into a single text string. XML-based speech "hints" (emphasis and pauses) are included in string to help the Text-To-Speech function render the speech output. Here are two examples (without the XML hinting) for the same day:
Good Morning! There are two reminders this morning. One. It is Trash Day. Two. Advance Notice. In three days, It is Uncle Steve's birthday.
Good Evening! There is is only one reminder this evening. Advance Notice. In three days, It is Uncle Steve's birthday.
Future Features:
- A scheduled task that runs on January 1st and automatically includes reminders for holidays and other events with movable dates (like Easter).
- Birthday reminders could be automatically generated (at the beginning of the year) based on the individual's birth date. The resulting message will be more detailed and precise: "It is Uncle Steve's birthday. He is eighty-three years old."
- Each reminder can have several messages. Instead of hearing "It is Trash Day" all the time, it can be one of several randomly-selected choices ("Don't forget to haul out the trash.", "Yep, it is garbage day again.", etc).
- A reminder should have a reserved AdvanceNotice Message that permits you to create a phrase that sounds better (grammatically) when it is spoken as part of an Advance Notice.
- Have other monitoring functions automatically add their own reminders to the master list. For example, a function that monitors furnace operation would add a "change air filter" reminder at the appropriate time.