-
Notifications
You must be signed in to change notification settings - Fork 0
Scheduled Announcements
Clock-triggered, independent of node activity.
- Plays a specific file on a cron-style schedule (
MIN HOUR DOM MON DOW) — fire once at a specific time, every N minutes, on selected days, and more -
Local or global playback — each scheduled announcement can play locally on this node only (
rpt localplay, the default) or globally to all connected/linked nodes (rpt playback) - Waits for unkey — if the node is currently keyed when a scheduled announcement is due, it holds off rather than playing over live traffic, and keeps checking until the node unkeys
-
Takes precedence over tail messages — if a scheduled announcement and a tail message would both fire at the same moment, the scheduled announcement always plays; the tail message simply retries on its next unkey once the announcement has finished, with no penalty against
MinInterval -
Per-announcement enable/disable — disable an entry without removing it (
herald toggle-schedule <name>or the web UI Status toggle); re-enable it the same way -
Adjustable TTS speech speed — a
0.5x–2.0xslider per entry, see Voices & TTS Engines
Entries can be edited in place (name, text, voice, schedule, play mode, speed) via herald edit-schedule or the web UI, instead of removing and re-adding.
Node targeting for multinodes= setups: any scheduled entry can optionally carry a Node override, targeting a specific node number for playback instead of the daemon's own configured Node.
Scheduled announcements run on a separate time-based path, unaffected by the tail message interval or node activity. Every poll, scheduled announcements are checked first, before the unkey/tail-message logic.
They're driven by a standard 5-field cron expression (MIN HOUR DOM MON DOW) and can fire once at a specific time, at a repeating interval (e.g. */20 * * * * = every 20 minutes), or on any cron-expressible schedule. Each entry fires at most once per matching minute; a */20 entry fires three times an hour, not once per day.
If the node is currently keyed when a scheduled announcement is due, it holds off and keeps re-checking every poll — even after the matching minute has passed — until the node unkeys, rather than missing the announcement or talking over live traffic. Once a scheduled announcement plays, its estimated audio duration (via soxi, or an 8-second fallback estimate) holds off any tail message for that long, so the two never overlap — this is also how a scheduled announcement takes precedence when both would fire at the same moment.
MIN (0–59) HOUR (0–23) DOM = Day of Month (1–31) MON = Month (1–12) DOW = Day of Week (0=Sun, 1=Mon … 6=Sat)
Use * for every, */n for every-n, n,m for specific values, n-m for a range.
sudo herald add-schedule "ARRL Audio News follows" --name arrl-news --cron "30 7 * * 6" # Saturdays at 7:30 AM
sudo herald add-schedule "Net check-in time" --name net-checkin --cron "*/20 * * * *" # every 20 minutes
sudo herald add-schedule "Hourly ID" --name hourly-id --cron "30 * * * *" # every hour at :30| Command | Description |
|---|---|
sudo herald add-schedule "<text>" --name <name> --cron "MIN HOUR DOM MON DOW" [--voice <voice>] [--play-mode local|global] [--node <n>] |
Generate TTS WAV and schedule it |
sudo herald add-schedule-file <path> --name <name> --cron "MIN HOUR DOM MON DOW" [--play-mode local|global] [--node <n>] |
Schedule an existing WAV file |
sudo herald edit-schedule <name> [--new-name <n>] [--cron "MIN HOUR DOM MON DOW"] [--play-mode local|global] [--text "<text>"] [--voice <v>] [--file <path>] [--node <n>] |
Edit an existing scheduled announcement in place |
sudo herald toggle-schedule <name> |
Enable or disable a scheduled announcement without removing it |
sudo herald remove <name> |
Remove a scheduled announcement |
sudo herald play <name> |
Test-play an announcement on the node immediately (always local, ignores PlayMode) |
Scheduled:
- Name: "ARRL Audio News"
Cron: "30 7 * * 6" # Saturdays at 7:30 AM
File: /etc/asterisk/scripts/herald/announcements/scheduled/arrl-news.wav
Enabled: true
- Name: "Second Saturday Breakfast Net"
Cron: "0 8 8-14 * 6" # 2nd Saturday (DOM 8-14, DOW 6) at 8:00 AM
File: /etc/asterisk/scripts/herald/announcements/scheduled/breakfast-net.wav
Enabled: trueSee Configuration Reference for every field.