Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Alerts

Summary

An OVOS skill that manages alarms, timers, reminders, events, and todos, with optional sync to a CalDAV service.

Description

The skill creates alarms, timers, reminders, and todo lists. You can remove them by name, time, or type, and ask what is active. If you turn on sync with a DAV server, you can also reach your reminders and todo lists from other devices.

Alarms and reminders can recur daily or weekly. You can snooze an active alert for a set amount of time while it plays. Any alert you do not acknowledge goes on a list of missed alerts, which you can read and clear on request.

If you were away, or your device was off or napping, ask for a summary of what you missed. The number of missed notifications shows in the upper left corner of the home screen.

Distinction between reminder, event, and todo

Events Appointments, gigs, and other items that may (but do not have to) have a start and end time. The skill warns you if an event collides with another one. You can add a prenotification in advance.

Reminders Less formal dates with only a start time. (You can still set a repeating reminder with an endpoint, for example "remind me to take out the trash every day at 7pm until next saturday".)

Todos Items not tied to a time, for short-term memory of things to do. You can organize todos into lists, for example a shopping list.

Alert is the general term that covers all of the types above.


Intents

The skill matches utterances with file-based intents (padatious/padacioso), not Adapt keyword intents. Each .intent file under locale/<lang>/intent/ is a set of phrase templates, optionally referencing a .entity file for a {slot} value list or a .voc file for an inline <keyword> alternation.

  • create_alarm / create_alarm_alt — set an alarm, optionally recurring on given weekdays, or (with a media word) playing media through OCP when it fires.
  • create_timer — start a countdown timer.
  • create_reminder / create_reminder_recurring — set a reminder, optionally recurring.
  • create_event — schedule an event, with collision and prenotification handling.
  • reschedule_alert — move an existing alert earlier or later.
  • change_priority — change an alert's priority.
  • change_repeat — change an alert's recurrence.
  • change_until — change an alert's recurrence end date.
  • change_media_properties — change the media/sound an alert plays.
  • list_alerts — list active alerts, optionally within a timeframe.
  • timer_status — report the status of active timers.
  • missed_alerts — report and clear missed alerts.
  • cancel_alert — cancel one or more alerts.
  • create_list — create a todo list.
  • add_list_subitems — add items to a todo list.
  • query_list_names — list the names of existing todo lists.
  • query_list_entries — read the todo list, or the entries of a named list.
  • delete_list_entries — delete the todo entries, or the entries of a named list.
  • delete_list — delete a todo list and its entries.
  • calendar_list — list the CalDAV calendars available for sync.
  • dav_sync — sync with a configured CalDAV server.

Scenarios

Keywords are underlined, alert names are italic. If you do not name an alert (like bread timer, tennis event), the name defaults to the time it is set for (for example 8 AM alarm, 2 minute timer).

Alarms, Timers, Reminders, Events

One time alarms, timers, reminders, or events:

  • "Set an alarm for 8 AM."
  • "Set a bread timer for 30 minutes."
  • "Schedule a tennis event for 2 PM on friday spanning 2 hours." ... (you can add a prenotification in advance for events)

HINT: A timer started without a time acts as a stop timer, counting up from now. To stop it and hear the elapsed time, say "Timer stop".

Recurring alarms, reminders, or events:

  • "Set a daily alarm for 8 AM."
  • "Set an alarm for 8 AM on saturdays."
  • "remind me to take out the trash every Thursday and Sunday at 7 PM."

OCP Alarm: (An alarm that triggers the media player; depends on the OCP capabilities of your device or serving instance)

  • "wake me up at 8 AM with music." (in general: "... with {media type}") -> the skill asks which media title to play, then looks it up in the media library
  • "wake me with music." (sets media on an already created alarm; the skill picks the next alarm)

Reschedule an existing alarm, timer, reminder, or event: (by duration or fixed time)

  • "Reschedule my 8 AM alarm at 9 AM."
  • "Push the tennis event by one hour."
  • "Move my next event one hour earlier."
  • "Extend the bread timer by 2 minutes." (or: Extend the bread timer until 10 am)
  • "Change the 8 AM alarm recurring only mondays and tuesdays."
  • "Change tennis event length to 3 hours."

HINT: If you reschedule the time of a recurring alarm, the skill asks whether the change applies to all occurrences or just the next one.

Query:

  • "When is my next alarm?"
  • "Which reminders are scheduled today?"
  • "Are there any events between friday and sunday?" (also: "between friday 10am and 3 pm") running timer
  • "How much time is left on my bread timer?"

Cancel:

  • specific type/name: "Cancel my 8 AM alarm." (in general: "cancel my {name} {type}")
  • all / of a type: "Cancel all alerts." / "Cancel all alarms."
  • on a specific day: "Cancel alerts on saturday."
  • in a time period: "Cancel alerts between Friday 8 AM and 10 AM."
  • next: "Cancel my next alarm."

CAUTION: Double check before you "cancel all", especially with DAV active, because it drops all reminders and events.

Active alert (expired and currently speaking or playing):

  • dismiss: "Stop alert."
  • snooze: "Snooze." (default snooze is 15 minutes)
  • duration: "Snooze for 1 minute." / "Snooze until 8 AM."

HINT: You can also snooze an active reminder or timer with "remind me again at 10 AM." or "extend by 2 minutes". Do not name the alert in this case. The skill always treats active alerts as directly editable.

Missed alerts (expired and not acknowledged):

  • "Which alert did i miss?"
  • "Missed any alerts?"

Todo

  • walk the dog
  • shopping
    • milk
    • toast

(If you use Nextcloud as the DAV server, turn on the "Tasks" plugin application.)

Create:

  • "Remind me to walk the dog"
  • "create a shopping list" (you can populate the list afterward)

Sublist:

  • "add items to the shopping list" -> set the items one by one: for example milk pling toast pling ... (silence stops recording) (the skill shows or voices the list in advance)

Complete todos:

  • "scratch milk entry from the shopping list"
  • Optionally remove one or more items; the skill shows or voices the list: "remove item(s) from the shopping list"
  • Remove all items on the shopping list
  • Remove shopping list the same commands work for non-list todos:
  • "remove walk the dog note"
  • "remove todo entr(y/ies)"
  • "remove all memos"

(with DAV active, the server marks the item as complete)

Query:

  • list names : "which lists are stored?" ... "shopping"
  • list items : "which items are on the shopping list?" ... "milk and toast"
  • todo items : "Anything todo?" ... "i should remind you to walk the dog"

DAV

Calendar names:

  • which calendars are available?

Sync: (runs automatically every x minutes by default; you can also trigger it manually)

  • synchronize calendars

Settings

(this is the default)

{
    "speak_alarm": false,                              # if the alarm should be spoken
    "speak_timer": true,                               # if the timer should be spoken
    "sound_alarm": "<path/to/soundfile>",              # default constant_beep.mp3
    "sound_timer": "<path/to/soundfile>",              # default beep4.mp3
    "snooze_mins": 15,                                 # default snooze time if duration/time is not specified
    "timeout_min": 1,                                  # the duration the user is notified, after which the alert is considered missed
                                                       # (doesn't apply to media -radio/video/..- alarms)
    "play_volume": 90,                                 # volume of the alert sound
    "escalate_volume": true,                           # alarms only - raise volume over time (10% steps, dependent on timeout_min;
                                                       #                                       half the time on max volume = `play_volume`)
    "priority_cutoff": 8
    ...
}

See DAV settings below.

Setting up a DAV connection

(tested with NextCloud)

For now, you must edit the credential file by hand; this will change in the future. When the skill starts, it creates a template file at ~/.local/share/mycroft/filesystem/skills/<skillname>/dav_credentials.json.

{
    "<service>": {
        "url": "https://<ip:port>/remote.php/dav",
        "username": "...",
        "password": "...",
        "ssl_verify_cert": "..."                       # if SSL is set up, otherwise delete this line
    },
    "<another service>": ...
}

First set up the credentials, then fill in the matching parts of the skill settings file settings.json. The skill reloads its settings and starts the repeating sync event (every frequency seconds).

{
    ...,
    "services": "<service>,<another service>",         # comma separated string of services
    "frequency": 15,                                   # the number of minutes between syncronisation; default 15
    "sync_ask": false                                  # If it should be asked if a generated reminder/todo element should be synchronized
}

The skill fetches DAV calendar dates one year in advance. You can set up multiple calendars on the server; the skill asks which one to sync to. Connection errors are voiced; check the skill log for details.

Only events, reminders, and todos sync. Alarms and timers do not sync. Check the timezone on your server and events, because the skill sometimes reads the timezone wrong and schedules the alert incorrectly.

How alerts are timed

The skill does not keep its own clock. Every alert becomes one schedule in the scheduled-events service, named by the alert's own uuid, and a prenotification becomes a second schedule under that uuid with a .pre suffix. Scheduling the same name again replaces what is there, so an alert offered twice is still one alert.

A one-shot alert is scheduled for a time-zone-aware instant, and an alert that repeats on a fixed interval is handed over as a period anchored on its first occurrence, so a late firing does not push the rest of the series along. An alarm that repeats on weekdays, and an alert that carries only an end date, are walked by the skill: a wall clock is what has to survive a daylight-saving change, so the alert works out its next occurrence in its own zone each time it rings and the schedule is moved on to it.

Schedules outlive both the skill and the service, and the service replays its store when it comes back. What does not outlive the skill is the handler the schedule calls, so on start the skill offers its pending alerts again under the names they already have.

An occurrence that arrives more than a minute after it was due is one the assistant was not there to ring: it goes on the missed list instead of going off out of the blue, as do the occurrences the service reports it could not deliver at all.

This needs ovos-bus-client >= 2.11.0a1 and ovos-workshop >= 9.6.4a1.

Known Bugs / Troubleshooting

This skill targets ovos-core >= 0.0.8 and its dependencies. On an older version, you might run into major problems; please update. The skill is tested mainly in German and, to a lesser extent, English, and might miss some individual speech patterns. Other languages are autotranslated and need review. During the alpha phase, contributions are welcome to build a well balanced experience across languages.

  • The skill does not understand or misreads what I am saying. Check the logs for the intent that fired and the utterance that was transcribed. STT might have gotten the words wrong. Try a different service (a known issue especially with non-English speakers using Whisper).
  • The notification system does not work properly. Missed alerts do not show. Notifications sometimes get mixed up; this is a known issue and work is in progress. Use the latest ovos-gui-plugin-shell-companion (#) and remove the old ovos-PHAL-plugin-notification-widgets.
  • When you populate a list, the last item is followed by an "unknown" utterance. This is a known issue that a future release will fix. It comes from how the skill handles input in a response context. It is not critical and you can ignore it; the list still populates correctly most of the time.

These are not hard requirements, since preferences vary, but recommended. GUI: skill-ovos-homescreen >= 0.0.3a6 (see also this pending PR)

Incompatible Skills

This skill has known intent collisions with, and replaces:

Remove these skills before you install this one.

Contributing Translations

Most of the skill is autotranslated, except for English and German, and needs review. Intent matching is file-based (padatious/padacioso), not Adapt: each .intent file under locale/<lang>/intent/ lists phrase templates, {slot} placeholders are optionally backed by a sibling .entity file, and a <keyword> reference inlines the matching alternation from a sibling .voc file.

A handful of .voc files (for example until.voc, priority.voc, repeat.voc, days.voc) are also read directly at runtime by the skill's own keyword-matching helpers, to recognize a concept anywhere in free text rather than through a fixed template slot. Dialogs are mostly straightforward and should include the correct mustache tags from the start. Keep these patterns in mind.

To contribute a translation, check the intent, entity, vocab, and dialog folders and add the files for your language, mirroring the structure of an existing locale (en-US or de-DE). For questions, contact @sgee_ in Matrix chat.

Contact Support

Use this link (Matrix Chat) or submit an issue on GitHub.

License

BSD-3-Clause

Credits

NeonGeckoCom NeonDaniel

Category

Productivity Daily

Tags

#OVOS #OpenVoiceOS #alert #alarm #timer #reminder #schedule

Release files for ovos-skill-alerts 0.6.6a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovos-skill-alerts 0.6.6a1
File Size Uploaded
ovos_skill_alerts-0.6.6a1.tar.gz 797.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ovos-skill-alerts 0.6.6a1
File Interpreter ABI Platform
ovos_skill_alerts-0.6.6a1-py3-none-any.whl Python 3 none any Details

Total release size: 2.2 MB

Release files / ovos_skill_alerts-0.6.6a1.tar.gz

Download URL ovos_skill_alerts-0.6.6a1.tar.gz
Size 797.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ee12058951a135f39e0aa4b3aa08b97b07ee67eb0953d323d48015de7883b3e9
BLAKE2b-256 checksum
How to use checksums
d7c03b254381f97aff4ecc33022e2460b6738f6e92ae60f747d6c9463c96063a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ovos_skill_alerts-0.6.6a1-py3-none-any.whl

Download URL ovos_skill_alerts-0.6.6a1-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
96a4d8cd599b5dbd809e62fa55d69e26d21f036dc9f72ad0e40bef3d4f2a0ce1
BLAKE2b-256 checksum
How to use checksums
64650d629710a6d2bea40a93deef15ed438274e6d63729196019cab5fa0d2598
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.6.6a1 This release

2 release files

0.1.28

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.17

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.3

2 release files

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page