Universal Messenger 7.47.0

Das Release 7.47.0 Build 1820 wurde im Juli 2022 veröffentlicht. Dieses Release umfasst:

  • SMS-Versand entfernt

  • Unterscheidung Abonnement E-Mail vs. SMS entfernt

  • Optimierung des internen Datenmodells (Update des Datenbankschemas, DB-Backup dringend empfohlen!)

  • Core Scripting Engine: Entry-Klasse ableitbar (Polymorphie)

  • Funktionserweiterungen und Fehlerkorrekturen

  • Update diverser Komponenten

Vorbereitungen beim Update

Beim Update auf UM-Release 7.47 werden mehrere Datenbankschemaanpassungen durchgeführt.

Es wird daher dringend empfohlen, vor der Ausführung des Installers ein vollständiges Datenbankbackup zu erstellen. Darüber hinaus sollte der Updatevorgang – soweit möglich – zuvor in einem Test- oder Stagingsystem mit vergleichbarer Konfiguration getestet werden.

SMS-Versand entfernt

Mit Release 7.47 wurden die Funktionen für den Versand von Transaktionsmails und Newslettern als Short Message (“SMS”) entfernt.

Dementsprechend entfällt die “SMS”-Option sowohl bei der Bearbeitung von Mailingvorlagen als auch beim Newsletterversand.

Die folgenden zwei Attribute, die sich auf den SMS-Versand beziehen, entfallen ebenfalls:

  • mmsMMS bevorzugt?

  • cmsbs.numsmsAnzahl der versendeten Newsletter-SMS

Sollten gleichnamige Attribute in der additional.attributes-Datei angegeben sein, werden sie ignoriert und sind nicht nutzbar.

Unterscheidung Abonnement E-Mail vs. SMS entfernt

Mit Release 7.47 wird bei Listen-Abonnements nicht mehr zwischen einem Abo für den E-Mail- bzw. SMS-Versand unterschieden.

Im Backoffice entfällt damit die “SMS”-Checkbox bei der Bearbeitung von Listen-Abonnements.

Des Weiteren entfallen folgende Prädikate der Abfragesprache:

  • inChannelSms

  • notInChannelSms

  • newsletterSmsContacted

  • newsletterNotSmsContacted

Folgende Prädikate der Abfragesprache sollten nicht mehr verwendet werden, bleiben aber bis auf Weiteres noch nutzbar:

  • inChannelMail

  • notInChannelMail

Optimierung des internen Datenmodells

Das interne Datenmodell wurde zur Performanceoptimierung und zur Verbesserung der Übersichtlichkeit an mehreren Stellen angepasst.

Anwender des Universal Messenger sollten von diesen Anpassungen nicht beeinträchtigt werden.

Für Entwickler sind die Anpassungen nur relevant, falls im Projekt direkt per SQL auf die Datenbank des Universal Messenger zugegriffen wird. Vor allem in Bezug auf die Speicherung der Listen-Abonnements könnten an dieser Stelle Code-Änderungen erforderlich werden.

Listen / Channels

Die Definitionen von Listen (“Channels”) werden nun in der neuen Datenbanktabelle channels statt bisher in rights bzw. rights_attr gespeichert.

Listen-Abonnements / Channel Subscriptions

Listen-Abonnements werden nun nicht mehr in der Überlaufattributtabelle users_attr, sondern in einer neuen Relationstabelle users_channels gespeichert.

Segmente / VChannels

Die Definitionen von Segmenten (“VChannels”) werden nun in der neuen Datenbanktabelle vchannels statt bisher in metas bzw. metas_attr gespeichert.

CronJobs

Die Definitionen von CronJobs werden nun in der neuen Datenbanktabelle cronjobs statt bisher in metas bzw. metas_attr gespeichert.

Core Scripting Engine

Polymorphie für Entry-Klasse

Mit UM-Release 7.47 ist es in der Core Scripting Engine möglich, für unterschiedliche Entry-Types jeweils eigene Subklassen von Entry zu implementieren. Alle UM-Kernfunktionen, die Instanzen der Klasse Entry zurückliefern, liefern dann Instanzen der jeweiligen Subklasse zurück.

Für die Entry-Types admin bzw. customer könnte dies beispielsweise wie folgt aussehen:

cmsbs-conf/cse/plugins/.../shared/entry-types.mjs:

export class Customer extends Entry { get myClassname() { return 'Customer'; } toString() { return `Customer: ${this.fullname}`; } get fullname() { return `${this.get('firstname')} ${this.get('lastname')}`; } } export class Admin extends Entry { get myClassname() { return 'Admin'; } toString() { return `Admin: ${this.fullname}`; } get fullname() { return `${this.get('firstname')} ${this.get('lastname')}`; } } // Klassen als `Entry`-Subklassen registrieren: globalThis.Entry_customer = Customer; globalThis.Entry_admin = Admin;

Damit können dann die neuen Methoden und Eigenschaften verwendet werden:

const c = UM.addEntry('customer-1', 'customer'); c.set('firstname', 'Max'); c.set('lastname', 'Mustermann'); '' + c // -> "Customer: Max Mustermann"

Funktionserweiterungen

Listen (=Channels) können ab jetzt um Custom-Attribute erweitert werden, die über die Backoffice-Oberfläche bearbeitet und per CSE- oder REST-API abgerufen werden können. Siehe Handbuch für Entwickler.

Auf dem Dashboard unter Newsletter Tracking werden nur noch Newsletteraussendungen mit mindestens zehn potentiellen Empfängern in Form eines kleinen Briefumschlagsymbols angezeigt.

Alternativ zu reCAPTCHA von Google kann nun auch Friendly Captcha zur Absicherung der Newsletteranmeldeformulare verwendet werden.

Fehlerkorrekturen

Der Job zum Löschen alter Newsletter wurde optimiert und benötigt nun weniger Arbeitsspeicher.

Ein Fehler in der Newsletter App wurde behoben, durch den bei Aktivierung der anonymen Anmeldung die serverseitige Validierung der Eingaben außer Kraft gesetzt wurde.

Aktualisierte Bibliotheken