Skip to content

Releases: SyncNetOps/int_SNO_teammessage

V1.1.1

11 Jun 10:29
7ca8d46

Choose a tag to compare

Technischer Bugfix Report - V1.1.1

Ursachen und Lösungen der kritischen Payload- und Validierungs-Fehler, die nach dem Architektur-Update auf die TeamMessage REST-API v1.1.0 aufgetreten sind. Die strikte Typisierung durch die neue externe API erforderte einen Umbau der asynchronen Dienstlogik innerhalb der Home Assistant Integration.

1. HTTP 422: Missing Field mb beim Speichern von Kontakten

Symptom: Beim Versuch, einen bestehenden Kontakt über das Custom Panel in Home Assistant zu ändern, wurde ein Validierungsfehler (HTTP 422) geworfen: {'type': 'missing', 'loc': ['body', 'data', 'mb'], 'msg': 'Field required'}.
Ursache: Das JS-Frontend schickte die Daten als flache Hierarchie ({"mb_name": "...", "mb_contact": "..."}). Die neue API erwartete diese jedoch zwingend verschachtelt im JSON-Objekt data.
Fix: Der JSON-Payload-Builder in teammessage-panel.js (saveContact()) wurde umgeschrieben. Die api.py wurde zudem mit einem "Auto-Heal"-Mechanismus ausgestattet: Fehlen Pflichtfelder in der PUT-Anfrage, pausiert die Methode, lädt den bestehenden Datensatz per HTTP-GET nach, füllt die Lücken auf und sendet erst dann den bereinigten Payload.

2. API Fehler: invalid_to_mobile beim Senden an Gruppen

Symptom: Sowohl über den HA-Dienst (send_message) als auch über das Panel schlug der Versand an Listen (Team-IDs) mit dem Fehler "invalid_to_mobile - to_mobile (phone number) is missing" fehl.
Ursache: Die TeamMessage REST-API verarbeitet den Endpunkt /sms/send/ strikt. Sie erwartet bei SMS und Voice immer kommagetrennte Handynummern im Parameter to_mobile. Das reine Übergeben einer Listen-ID (tl) triggert bei der externen API keinen automatischen Broadcast an die Listenmitglieder.
Fix: Implementierung des Smart Group Resolver in der services.py.

  • Sobald das Attribut target_type: "list" erkannt wird, ruft die Integration via api.get_teamlist_members() asynchron alle Mitglieder der Teamliste ab.
  • Das JSON-Response wird geparst, nach mb_contacttype (sms, voice) gefiltert und bereinigt.
  • Die Integration baut daraus den geforderten kommagetrennten String (z.B. +491701...,+491602...) und übergibt diesen transparent an den SMS-Endpunkt.

3. API Fehler: closed_group_auth

Symptom: Beim Senden an geschlossene Gruppen lehnte die API die Anfrage aufgrund fehlender Authentifizierung ab.
Ursache: Das Custom Panel bot keine Eingabefelder für keyword und sender_email (Absender E-Mail) und verschluckte diese bei der Payload-Generierung.
Fix: Dynamische UI-Erweiterung (teammessage-panel.js). Wird "An Teamliste" ausgewählt, klappen dedizierte Auth-Felder aus. Diese werden vom JavaScript direkt an den HA Websocket-Bus und anschließend an den API-Client weitergeleitet.

4. Unklare Dienst-Aufrufe (UI/UX Fehler)

Symptom: Die Dienst-Maske in HA (services.yaml) erlaubte es, "Liste" und "Direkt" vermischt zu konfigurieren, was zu Routing-Abstürzen führte.
Fix: Einführung des Dropdowns target_type. Die Maske zwingt den Nutzer nun zu einer klaren Unterscheidung zwischen Direktversand und Listenversand, wodurch fehlgeleitete Parameter (channel: sms in Verbindung mit Listen-IDs) ausgeschlossen werden.

Changelog

[1.1.1] - 2026-06-11

Hinzugefügt

  • Smarte Dienst-Parameter (services.yaml): Neuer Parameter target_type hinzugefügt, um den Dienst (sno_teammessage.send_message) visuell und logisch in "Direkt an Handynummer" und "An Gruppe / Teamliste" zu unterteilen.
  • Smart Group Resolver (services.py): Implementierung einer intelligenten Auto-Resolve Funktion. Bei der Auswahl einer Gruppe/Teamliste ruft das Backend nun im Hintergrund vollautomatisch alle zugehörigen Listenmitglieder ab, extrahiert die Rufnummern (SMS/Voice-Kanäle) und transformiert diese in das von der TeamMessage REST-API geforderte, kommagetrennte Format (to_mobile).
  • Erweiterte UI Felder (teammessage-panel.js): Im Frontend-Panel wurden dedizierte Eingabefelder für Keyword und Absender E-Mail beim Gruppenversand integriert, um die Authentifizierung in geschlossenen Gruppen zu gewährleisten.
  • Auto-Heal Payload (api.py): Automatisiertes Füllen fehlender Felder via GET-Fallback-Anfrage beim Aktualisieren von Kontakten implementiert.
  • Sicheres URL-Routing (api.py): Funktion get_teamlist_members hinzugefügt, welche Endpunkte relativ und absolut fehlerfrei aus der Basis-Konstante (API_BASE_URL) generiert.

Behoben

  • Fehler HTTP 422 (mb is missing) beim Editieren von Kontakten: Die TeamMessage API (Pydantic) erwartete die Daten verschachtelt in einem data-Objekt. Der JSON-Payload in views.py und dem JS-Frontend wurde entsprechend umgebaut.
  • Fehler invalid_to_mobile beim Gruppenversand: Die API lehnte Listen-IDs auf dem SMS-Endpunkt ab, da zwingend physische Handynummern im Feld to_mobile gefordert werden. Gelöst durch den neuen Smart Group Resolver.
  • Fehler closed_group_auth: Wurde behoben, indem das Frontend nun die benötigten Auth-Felder (keyword und sender_email) fehlerfrei durch die views.py Proxy-Schicht transportiert.
  • Verbindungsfehler (/teamlist/members/): Behoben durch das sichere, dynamische Zusammensetzen absoluter URLs innerhalb der api.py-Klasse, anstatt unvollständiger Pfade.

06/2026

V1.1.0

10 Jun 12:36
7ca8d46

Choose a tag to compare

SNO - TeamMessage Integration für Home Assistant

GitHub Release
hacs_badge
License: MIT

Eine vollumfängliche, fehlertolerante Home Assistant Integration für den professionellen Multikanal-Nachrichtendienst TeamMessage.de.

Diese Integration ermöglicht dir den hochzuverlässigen Versand von Nachrichten über SMS, Voice-Anrufe (Text-to-Speech) und Push-Benachrichtigungen direkt aus deinem Smart Home heraus. Sie nutzt die moderne REST-API (v1.1.0) des Anbieters mit Bearer-Token-Authentifizierung und bietet ein atemberaubendes Frontend zur Verwaltung.

Entwickler: SyncNetOps
Offizielle FAQ & Dokumentation: SNO TeamMessage Doku

✨ Highlights & Features

  • 🎨 Modernes Glassmorphism-Panel: Eine reaktionsschnelle Single Page Application (SPA) direkt in deiner Home Assistant Seitenleiste.
  • 👥 Vollwertiges Kontakt-Management: Synchronisiere, erstelle und bearbeite deine TeamMessage-Kontakte und Teamlisten, ohne HA verlassen zu müssen.
  • 🛡 Smart Fallbacks & Auto-Korrektur: Falsch formatierte Handynummern (0170... statt +49170...)? Die Integration korrigiert Nummern in Echtzeit und füllt fehlende Daten aus deinen globalen Einstellungen auf.
  • 📊 Dashboard Custom Cards: Wunderschöne, per UI konfigurierbare Lovelace-Karten für Guthaben, Logbuch und Schnellversand.
  • 🔍 Echtzeit-Logbuch: Detailliertes, durchsuchbares Protokoll mit Auto-Refresh-Funktion, Fehlercodes und Zustellberichten.

🚀 Schnellstart

  1. Erstelle einen Account auf teammessage.eu/registrieren (inkl. 20 Frei-SMS).
  2. Generiere im TeamMessage Portal einen API-Token (Bearer Token).
  3. Installiere diese Integration über HACS (Benutzerdefiniertes Repository).
  4. Gehe in Home Assistant zu Einstellungen -> Geräte & Dienste, füge SNO - TeamMessage hinzu und gib deine Team-ID sowie den Token ein.

📚 Dokumentation

Alle weiteren Informationen, detaillierte YAML-Beispiele und Hilfe bei der Einrichtung findest du in unseren beiliegenden Dokumenten:


Hinweis: Dies ist eine Drittanbieter-Integration zur Nutzung eines API-Dienstes. Für den reellen Versand von SMS und Sprachanrufen fallen entsprechende Nutzungsgebühren beim Dienstanbieter TeamMessage.de an.

Full Changelog: https://github.com/SyncNetOps/int_SNO_teammessage/commits/V1.1.0