Alerting Settings Odoo

Hallo zusammen,

noch eine etwas spezifischere Frage:

Wie soll das hier im Odoo umgesetzt werden/funktionieren?

	private boolean shouldReceiveMail(Edge edge, UserAlertingSettings setting) {
		final var lastMailRecievedAt = setting.getLastNotification();
		final var edgeOfflineSince = edge.getLastmessage();

		var hasNotRecievedMailYet = true;
		var neverRecievedAnyMail = lastMailRecievedAt == null;

		if (!neverRecievedAnyMail) {
			var nextMailRecieveAt = edgeOfflineSince.plus(setting.getDelayTime(), ChronoUnit.MINUTES);
			hasNotRecievedMailYet = nextMailRecieveAt.isAfter(lastMailRecievedAt);
		}

		return neverRecievedAnyMail || hasNotRecievedMailYet;
	}

Nach meinem Verständnis, erhält der Benutzer NUR dann eine Mail, wenn er nicht schon JEMALS eine erhalten hat.

Oder wenn der Benutzer bereits eine Benachrichtigung erhalten hat, wird basierend auf dem Zeitpunkt, zu dem das Edge-Gerät offline gegangen ist (edgeOfflineSince ), und der in den Benutzereinstellungen festgelegten Verzögerungszeit (setting.getDelayTime() ) der nächste Zeitpunkt berechnet, zu dem der Benutzer eine weitere Benachrichtigung erhalten sollte (nextMailReceiveAt ).

Heisst das im zweiteren Fall, dass der User im 15 Minutentakt eine Mail bekommen wird?

@stefan.feilmeier

Grüße

Hallo @Sn0w3y,

Diese Funktion soll verhindern, das ein Benutzer Mehrfach eine E-Mail für den selben Fall bekommt.

Dies kann vorallem passieren, wenn das Backend mal neugestarted wird.
Edge Offline → E-Mail gesendet → Backend neustart → Edge Immernoch Offline → keine neue E-Mail.

Hier wird also verglichen, wann eine mail versendet werden würde, und sollte der Zeitpunkt mit der von der letzten E-Mail übereinstimmen, wird keine neue versendet.

1 Like

Hallo Kai,

danke für deine Erklärung, aber aktuell finde ich nach dem Initialen Check bei Backend start keinen erneuten Check, auch meine Logs zeigen auf, dass dies nicht passiert.

Siehe hier:

journalctl | grep "check Metadata for Offline Edges"

Feb 01 08:31:06 java[304103]: 2024-02-01T08:31:06,145 [eTimer-0] INFO  [ing.handler.OfflineEdgeHandler] [OfflineEdgeHandler] check Metadata for Offline Edges

Ich habe hier mal einen Pullrequest erstellt, indem ich das versuche zu fixen:

Aktuell ist es so:

Edge Offline → E-Mail gesendet → Backend neustart → Edge Offline aber das Feld last_notification beinhaltet einen Wert → keine neue E-Mail

Grüße !