- The checks on what a presenter wrote read an accented letter as part of its word. A persona's vocabulary is no longer found inside a longer word that happens to carry an accent, and a story is no longer marked as told because a fragment of an accented name ("rich" out of "Zürich") turned up in a break.
- On a station set to a language other than English, Chatterbox's multilingual model is asked to speak that language, whenever the model lists it. The plugin also reports which languages the loaded model speaks, so the station can warn you when the model can't speak the station's language: the other Chatterbox models only speak English.
- A bundled Discord plugin puts the station on Discord. Give it a bot token with the Message Content intent turned on and people can use the station's slash commands, or type them, in a direct message or in the channels you list, and press a button to pick when a request matches more than one record. It can post each record to a channel as it goes to air. The first time somebody in an unlisted channel speaks, the channel's id is written to the plugin's log so you can find it. It needs no public address: the station holds a connection open to Discord rather than waiting to be called.
- A messaging plugin can be told the station's commands, through a new optional
commands()on the capability, so a platform that lists commands in its own interface shows the station's. The station tells it each time it starts listening, including after a settings save. - Plugins can open an outbound WebSocket with
host.socket, for a platform that delivers over one. It answers to the same rules ashost.fetch: the host must be in the plugin's network permissions, a connect counts against its rate limit, and the manifest has to declare the newsocketspermission. The station closes every socket a plugin still holds when it is disabled or its settings are saved. firstSentence,truncateSentencesandsentencesWithinfind a sentence that starts with an accented capital, a guillemet or a Spanish opening mark. Before, a passage in German, French or Spanish often read as a single sentence, so a cut to length found nowhere to stop.- A bundled Slack plugin puts the station in a Slack workspace. Make an app from the manifest on the plugins page of the docs, paste its bot token and app-level token, and people can use the station's slash commands in a direct message or in the channels you list, and press a button to pick when a request matches more than one record. It can post each record to a channel as it goes to air. It needs no public address: the station holds a Socket Mode connection open to Slack.
- Speech requests carry the station's language as
SpeechRequest.languagewhenever it isn't English, and a speech plugin can say which languages its engine speaks with the new optionallistLanguages(). When your voice engine lists its languages and the station's language isn't among them, the station logs a warning once. It still speaks the line. The Rhapsode plugin sends the language to builds that list it and reports what every voice in use can speak. - On a station set to a language other than English, the checks on what the presenter wrote no longer refuse good breaks for not being in English. A record named in the German genitive, a persona's word with a German or Spanish ending or a French article in front of it, a date written
24.and a temperature written17,5are all read correctly. The checks that only understand English words (cueing a record on the wrong side, naming the wrong part of the day, a programme introducing itself twice) are switched off. Where the station can't tell whether a break mentioned the time or the weather, it assumes it did, so a late break is replaced rather than going out with a stale time or reading. - On a station set to a language other than English, the station's built-in English phrasings are no longer used. These are the lines it falls back on when no model wrote the break. Your own phrasings and a persona's still are, as long as they don't use the time or the greeting, which the station can only fill in English. With none, the break is left out: a warm-up, a jingle or a dedication plays only if somebody has written a line for it in the station's language.
- Set Language (
stream.language) to something other than English, such asdeorfr, and the presenter writes in it. Breaks, phone-ins and other productions are asked for in that language, while titles and names stay as written, and a persona generated from a description has its sample lines, catchphrases, stories and phrasings written in it too. An empty setting, or any English tag, leaves the station exactly as it was. - On a station set to a language other than English, a script reaches the voice without English words written into it. Numbers, times, symbols and abbreviations are left for the speech engine to read in its own language, instead of becoming "nineteen eighty-four" or "percent". Pronunciations mined from English articles are left out, while your own pronunciation entries still apply. A short lower-case stage direction such as
*lacht*or(seufzt)is removed rather than read aloud. - On a station set to a language other than English, the weather is asked for in that language. The place the presenter names comes back named for the station's listeners ("München" rather than "Munich"), and OpenWeatherMap describes the sky in that language too.
WeatherQueryhas a new optionallanguagefor any weather plugin that can use it.