Announcements inside
Announcements go through one queue. The queue waits for the idle slot: a short quiet time after the last talker. Nothing that the node sends by itself plays over a talker, except the timeout warning.
Kinds of announcement #
| Kind | Examples |
|---|---|
link | A link connects or disconnects. |
status | *70 and the other status commands. |
time | The time that someone asks for, with *722. |
command | The reply to a DTMF command. |
weather | A new weather alert or the all clear. |
| Timed reports | The hourly time and the current weather at an interval. |
| Station ID | The ID at id_interval. |
The queue #
Text version of figure 1
- An announcement goes into the queue.
- If an announcement of the same kind (time, tail or timed report) is already in the queue, the new one replaces it.
- The announcement waits for the idle slot. The slot opens when nobody has talked for
announce_idle(2 seconds): no local receive, no link audio to local users and no web or app talker. - In the slot, the node keys up, waits
keyup_delayand plays the station ID if it is due. Then it plays all the waiting announcements, in order.
An announcement does not expire. If a talker starts before the slot opens, the announcement waits for the next slot. If a talker starts before an announcement starts to play, the node holds it again. The node makes the words when the announcement plays, so the time and the weather are correct then.
Only the timeout warning plays over a talker. Link and command answers, weather alerts, the alert tail, timed reports and the ID all wait for the slot, in duplex and in simplex mode. When the hourly time and the current weather are due at the same time, the node says them in one report.
In simplex mode (duplex 0 or 1), the node never keys the transmitter while it receives a local signal. This applies to the ID, the announcements, the courtesy tone and the ack tone. The hang time also stops when a local signal starts.
Timed reports play only in report_hours, which is 7-22 when empty.
Voices #
- Built-in voice. The node has the Allison clips from the Asterisk and app_rpt prompts. It needs no network.
- CW. With
telemetry: cw, the node sends the announcements in CW, atcw_wpmandcw_freq. - Voice server. With
voice_server.url, the node asks a Kokoro voice server for speech. It can then say node names, callsigns and weather alerts. The node keeps a copy of each answer invoice-cache/in the state folder. To set up a voice server, read the voice server guide.
The node asks the voice server for most speech before it plays: the ID, the timed reports, the node names and the time. These requests can wait. They go one at a time. Each one has a time limit: the time when its announcement plays, or 10 minutes. A request that a listener waits for goes at once. There is no setting for this.
If the voice server does not answer in time, the node says the announcement with the built-in voice. Text that only the voice server can say, such as a weather alert, is dropped. The Health page counts both cases.
Caution: The voice server has no password. Keep it on your own network.
Station ID #
The ID comes due 1 minute before id_interval, or at 90% of a short interval (for example at 9 minutes of 10). It then waits for the idle slot and plays first in it. Other announcements in the slot also bring the ID if it is due. If no slot comes before the full id_interval, the node sends a CW ID over the talker on a duplex repeater. In simplex mode, the node sends this CW ID immediately after the local signal stops.
id_mode is cw, voice (the callsign spelled out) or both. id_text changes the text, for example N0CALL/R. With a voice server, voice_server.id_text is the spoken ID. It must contain the callsign.
Node names and callsigns #
With a voice server, allstar.node_names lets the node say a name in place of a number. With say_callsigns and the node database, the node spells the callsign of a node.
Weather alerts #
- The node gets the alerts from
api.weather.govevery 60 seconds. This works in the United States only. - It uses the county and zone codes in
weather.zones. Keep both codes, because some warnings come by county. weather.groupsselects the alert types: tornado, thunderstorm, flood, tropical, tsunami, winter, wind, cold_heat, fire, dust and fog.- A new alert is the kind
weather.all_clearsays when the last alert ends. tail_intervalrepeats the alerts in effect after a conversation, at most at that interval.report_intervalgives the current weather fromweather.station, or the nearest station, as a timed report.- *76 gives the current weather and the alerts at any time.
The weather service is for the whole install. Each node can set enabled, tail_interval and report_interval in its module file.