Releases: SyncNetOps/int_SNO_teammessage
V1.1.1
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 viaapi.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 Parametertarget_typehinzugefü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ürKeywordundAbsender E-Mailbeim Gruppenversand integriert, um die Authentifizierung in geschlossenen Gruppen zu gewährleisten. - Auto-Heal Payload (
api.py): Automatisiertes Füllen fehlender Felder viaGET-Fallback-Anfrage beim Aktualisieren von Kontakten implementiert. - Sicheres URL-Routing (
api.py): Funktionget_teamlist_membershinzugefü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 einemdata-Objekt. Der JSON-Payload inviews.pyund dem JS-Frontend wurde entsprechend umgebaut. - Fehler
invalid_to_mobilebeim Gruppenversand: Die API lehnte Listen-IDs auf dem SMS-Endpunkt ab, da zwingend physische Handynummern im Feldto_mobilegefordert werden. Gelöst durch den neuen Smart Group Resolver. - Fehler
closed_group_auth: Wurde behoben, indem das Frontend nun die benötigten Auth-Felder (keywordundsender_email) fehlerfrei durch dieviews.pyProxy-Schicht transportiert. - Verbindungsfehler (
/teamlist/members/): Behoben durch das sichere, dynamische Zusammensetzen absoluter URLs innerhalb derapi.py-Klasse, anstatt unvollständiger Pfade.
06/2026
V1.1.0
SNO - TeamMessage Integration für Home Assistant
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
- Erstelle einen Account auf teammessage.eu/registrieren (inkl. 20 Frei-SMS).
- Generiere im TeamMessage Portal einen API-Token (Bearer Token).
- Installiere diese Integration über HACS (Benutzerdefiniertes Repository).
- Gehe in Home Assistant zu Einstellungen -> Geräte & Dienste, füge
SNO - TeamMessagehinzu 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