Telegram
Beschreibung
Dieses Plugin ermöglicht den Versand von Telegram-Nachrichten für verschiedene Alarmierungsarten. Um eine hohe Stabilität im BOS-Betrieb zu gewährleisten, erfolgt der Versand asynchron über eine interne Warteschlange (Queue) mit Überlastschutz.
Das Plugin hält die Vorgaben der Telegram API automatisch ein: Eine integrierte Retry-Logik mit exponentiellem Backoff verhindert Nachrichtenverluste bei temporären Netzwerkproblemen. Zudem werden Nachrichten, die das Telegram-Limit von 4.096 Zeichen überschreiten, automatisch gekürzt. Wenn Standortdaten (lat/lon) vorhanden sind, kann das Plugin diese als native Karte senden (erfordert Geocoding-Modul und Aktivierung via coordinates).
Unterstützte Alarmtypen
- FMS
- POCSAG
- ZVEI
- MSG
Resource
telegram
Konfiguration
| Feld | Beschreibung | Default |
|---|---|---|
| botToken | Der Api-Key des Telegram-Bots | - |
| chatIds | Liste mit Chat-Ids der Empfängers / der Empfänger-Gruppen | - |
| startup_message | Nachricht beim erfolgreichen Initialisieren des Plugins | leer |
| message_fms | Formatvorlage für FMS-Alarm | {FMS} |
| message_pocsag | Formatvorlage für POCSAG | {RIC}({SRIC})\n{MSG} |
| message_zvei | Formatvorlage für ZVEI | {TONE} |
| message_msg | Formatvorlage für MSG-Nachricht | {MSG} |
| max_retries | Anzahl Wiederholungsversuche bei Fehlern | 5 |
| initial_delay | Initiale Wartezeit bei Wiederholungsversuchen | 2 [Sek.] |
| max_delay | Maximale Retry-Verzögerung | 300 [Sek.] |
| parse_mode | Formatierung ("HTML" oder "MarkdownV2"), !Case-sensitive! Empfehlung: HTML | leer |
| coordinates | Aktiviert die Verarbeitung von Standortdaten | false |
Beispiel:
- type: plugin
name: Telegram Plugin
res: telegram
config:
coordinates: true
message_pocsag: |
<b>POCSAG Alarm:</b>
RIC: <b>{RIC}</b> ({SRIC})
{MSG}
parse_mode: "HTML"
startup_message: "Server up and running!"
botToken: "BOT_TOKEN"
chatIds:
- "CHAT_ID"
parse_mode
Über parse_mode kannst du Telegram-Formatierungen verwenden:
- HTML:
<b>fett</b>,<i>kursiv</i>,<u>unterstrichen</u>,<s>durchgestrichen</s>, ... - MarkdownV2:
**fett**,__unterstrichen__,_italic \*text_usw.
Wichtig: Bei MarkdownV2 werden alle Sonderzeichen innerhalb der Wildcards (wie {MSG}) automatisch escaped. Das verhindert zwar API-Fehler, macht aber eine bewusste Formatierung innerhalb des Funktextes unmöglich.
Nutze HTML, wenn du fettgedruckte oder kursive Elemente in deinem Template verwenden möchtest, ohne dass der Inhalt der Nachricht verändert wird.
# EMPFOHLEN: HTML für Formatierung
parse_mode: "HTML"
message_pocsag: |
<b>POCSAG Alarm:</b>
RIC: {RIC}
{MSG}
# NICHT EMPFOHLEN: MarkdownV2
# (alle Sonderzeichen in {MSG} werden escaped)
parse_mode: "MarkdownV2"
message_pocsag: "*Alarm*\nRIC: {RIC}"
Block-Strings (|) eignen sich perfekt für mehrzeilige Nachrichten und vermeiden Escape-Zeichen wie \n
coordinates
Der Versand von Standorten ist standardmäßig deaktiviert (coordinates: false), um unnötige Warnmeldungen im Log zu vermeiden, wenn keine Koordinaten im Datenpaket enthalten sind. Setze diesen Wert nur auf true, wenn du sicherstellst, dass die Alarmierung Koordinaten liefert (z.B. durch einen vorgeschalteten Geocoder).
Verhalten beim Standortversand: Bei aktivierten Koordinaten sendet das Plugin zusätzlich zum Alarmtext eine native Telegram-Karte als separate Nachricht. Es sind keine Wildcards im Nachrichtentext erforderlich; die Karte wird automatisch unter dem Text gepostet.
Modul Abhängigkeiten
OPTIONAL, nur für POCSAG-Locationversand: Aus dem Modul Geocoding:
latlon
Externe Abhängigkeiten
requests