-
AutorBeiträge
-
-
11. Juni 2026 um 9:51 Uhr - Views: 252 #41656
Hallo zusammen,
ich hätte gerne eine Benachrichtigung, wenn mir ein Ticket entzogen wird.
Ich bin der Besitzer von Ticket XY, ein anderer Agent wechselt den Besitzer auf sich oder auf einen anderen Agenten.
Ich möchte quasi als letzter Besitzer benachrichtigt werden, wenn mir ein Ticket genommen wird.
Gibt es diese Möglichkeit?
Gruß Lars
-
11. Juni 2026 um 10:06 Uhr #41660
Versuch mal dein Glück über Ticket-Benachrichtigungen, bin mir aber nicht 100% sicher.

-
11. Juni 2026 um 11:00 Uhr #41663
Hi Thomas,
leider funktioniert dies nicht. Keiner bekommt eine Mail – nicht der Ticket-Ersteller, nicht der „Vorbesitzer“, nicht der neue Besitzer.
Danke für Antwort.
Gruß Lars
-
-
11. Juni 2026 um 14:35 Uhr #41680
Ja, voll schade. Habe selbst eben auch erst realisiert, dass „Besitzer“ und „Verantwortlicher“ im OTOBO-Universum zwei verschiedene Rollen bzw. Personen sind…
-
12. Juni 2026 um 9:01 Uhr #41687
Hallo Lars,
bei mir funktioniert das, wenn ich als Ereignis das „TicketOwnerUpdate “ eintrage und meine Email bei zusätzliche Email Empfänger. Hab natürlich beim testen eben nich die Queue beim Ticketfilter hinterlegt.
Gruß Marcel
-
12. Juni 2026 um 9:23 Uhr #41688
schau auch mal bei Admin → Systemkonfiguration ->AgentSelfNotifyOnAction das der Haken gesetzt ist.
Damit klappt es bei mir beim Testen auch mit den Werten im Empfänger Bereich :)
Gruß Marcel
-
12. Juni 2026 um 10:10 Uhr #41691
Hi Marcel,
vielen Dank für deine Antwort und das Testen in deiner Umgebung – sehr nett :-)
Wir arbeiten mit mehreren Agenten und dies muss für jeden gelten – mit „Zusätzliche Empfänger-E-Mail-Adressen“ kann ich also nicht arbeiten.
Ich habe es mal nachgestellt mit der Option „AgentSelfNotifyOnAction“ und jetzt bekomme ich mehrere Nachrichten die ich nicht brauche. z.B. ich trage in mein eigenes Ticket eine Notiz ein.
Gruß Lars
-
12. Juni 2026 um 10:32 Uhr #41692
Hallo Lars,
die Ticketbenachrichtigung „Benachrichtigung über neue Notiz“ müsste hier angepasst werden bzw. deaktiviert werden.
Das mit der Zusätzliche Empfänger-E-Mail-Adresse war auch eher mal eine Test, ob das Ticketevent „TicketOwnerUpdate“ überhaupt angetriggert wird.
Gruß Marcel
-
12. Juni 2026 um 12:45 Uhr #41695
Hallo Lars,
mit einem kleinen Perl Script funktioniert das auch. Folgend mal die Anleitung dazu.
#—dynamisches Feld erstellen —
-> lege ein dynmische Feld -> Ticket ->Text mit dem Namen „TicketOldOwnerEmail“ an.#—erstelle einen Auftrag im Generic Agent —
-> Ereignisbaierte Ausführung -> Auslöser = TicketOwnerUpdate
-> stelle deine Ticketfilter ein, um erstmal auf Queue zu testen-> bei Benutzerdefiniertes Modul ausführen folgende Zeile einfügen:
Kernel::System::GenericAgent::SetOwnerEmailToDynamicField#—-Ticket Beachrichtigung erstellen—-
-> Ereignisbaierte Ausführung -> Auslöser = TicketOwnerUpdate
-> bei zusätzliche Email Adresse jetzt das dynamische Feld angeben: <OTOBO_TICKET_DynamicField_TicketOldOwnerEmail>
-> Benachrichtigunstext nach wünschen anpassenDanach in die Otobo Konsole (SSH) wechseln und dort dann, wenn Docker benutzt wird in den Container wechseln:
sudo docker exec -it otobo_web_1 bash
#— Datei SetOwnerEmailToDynamicField.pm erstellen—
nano /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm
Inhalt:
#—————————————————————————
package Kernel::System::GenericAgent::SetOwnerEmailToDynamicField;use strict;
use warnings;sub new {
my ( $Type, %Param ) = @_;
my $Self = {};
bless( $Self, $Type );
return $Self;
}sub Run {
my ( $Self, %Param ) = @_;my $TicketObject = $Kernel::OM->Get(‚Kernel::System::Ticket‘);
my $UserObject = $Kernel::OM->Get(‚Kernel::System::User‘);
my $DynamicFieldObject = $Kernel::OM->Get(‚Kernel::System::DynamicField‘);
my $BackendObject = $Kernel::OM->Get(‚Kernel::System::DynamicField::Backend‘);my $TicketID = $Param{TicketID};
if (!$TicketID) {
return 1;
}# 1. Ticket-Daten FRISCH aus der Datenbank laden (Behebt das Event-Schnittstellen-Problem)
my %Ticket = $TicketObject->TicketGet(
TicketID => $TicketID,
DynamicFields => 0,
UserID => 1,
);# Falls das Ticket nicht geladen werden kann, sauber abbrechen
if ( !%Ticket ) {
return 1;
}# Typen-Prüfung auf Deine erlaubten Ticket-Typen
my %AllowedTypes = (
‚Incident‘ => 1,
‚Problem‘ => 1,
‚E-Mail‘ => 1,
);if ( !$Ticket{Type} || !$AllowedTypes{ $Ticket{Type} } ) {
return 1;
}# 2. Die OwnerID des AKTUELLEN Besitzers direkt aus dem geladenen Ticket ziehen
my $CurrentOwnerID = $Ticket{OwnerID};if (!$CurrentOwnerID) {
return 1;
}# 3. E-Mail-Adresse des aktuellen Besitzers direkt aus dem Agentenstamm abrufen
my %OwnerData = $UserObject->GetUserData(
UserID => $CurrentOwnerID,
);# Alle gängigen E-Mail-Attribute im Agentenprofil prüfen
my $OwnerEmail = $OwnerData{UserEmail} || $OwnerData{Email} || $OwnerData{mail} || “;# Falls keine Mailadresse gefunden wird (z. B. System-User), brechen wir ab
if (!$OwnerEmail) {
return 1;
}# 4. In das dynamische Feld schreiben
my $DynamicFieldName = ‚TicketOldOwnerEmail‘; # Der Systemname Deines Zielfeldes
my $DynamicFieldConfig = $DynamicFieldObject->DynamicFieldGet(
Name => $DynamicFieldName,
);if (!$DynamicFieldConfig) {
return 1;
}# Wert im Ticket setzen
$BackendObject->ValueSet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $TicketID,
Value => $OwnerEmail,
UserID => 1,
);return 1;
}1;
#—————————————————————————
mit strg + x beenden
Y zum speichern#—Rechte auf die Datei setzen—
chown otobo:otobo /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm
chmod 644 /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pmum das dynamische Feld einmal zu prüfen, einfach unter Verwaltung von Dynamische Feldern <-> Oberflächen, das dynamische Feld „TicketOldOwnerEmail“ bei OverviewSmall zuweisen und
dann in der Ticketübersicht, bei Einstellungen (kleines Zahnrad) das Feld auswählen.In meinem Test wurde so bei jedem Besitzerwechsel eine Email an den letzen Ticketbesitzer gesendet.
Gruß Marcel
-
12. Juni 2026 um 13:00 Uhr #41697
wenn das alles funktioniert, die Datei nach /opt/otobo/Custom/Kernel/System/GenericAgent/ verschieben.
#—Verschieben nach Custom Kernel—
->Datei in den Custom-Ordner verschieben
mkdir -p /opt/otobo/Custom/Kernel/System/GenericAgent/
->erschiebe Deine Modul-Datei dorthin
mv /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm /opt/otobo/Custom/Kernel/System/GenericAgent/
->Berechtigungen zur Sicherheit für den OTOBO-Nutzer neu setzen
chown otobo:otobo /opt/otobo/Custom/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm
chmod 644 /opt/otobo/Custom/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm -
7. August 2026 um 10:19 Uhr #42841
Hi Marcel,
erstmal vielen Dank für deine Antwort und Entschuldigung für meine späte Reaktion. In der Urlaubszeit ist leider keine Zeit für Optimierungen :-)
Leider funktioniert es mit deiner Anleitung nicht. Ich habe die Schritte exakt so durchgeführt, aber irgendwo hängt es.
Ich habe für ein Ticket den Generic Agent ausgeführt und in der Übersicht mir die Spalte „TicketOldOwnerEmail“ eingeblendet – diese ist aber nicht gefüllt.
Hast du noch eine Idee?
Danke
Gruß Lars
-
7. August 2026 um 10:23 Uhr #42842
Hallo Lars,
ich habe meine Testumgebung gestern gelöscht, muss mir erstmal aus einem backup eine neue anlegen. Dann kann ich das nochmal testen.
Gruß Marcel
-
7. August 2026 um 11:13 Uhr #42843
Hallo Lars,
ich habe das eben nochmal nachgestellt und es funktioniert bei uns, so wie in meiner Anleitung beschrieben.
Otobo Ticketübersicht

Testbenachrichtigung bei Änderung im Outlook (Auschnitt)

Soll ich dir die Anleitung nochmal irgendwie zusenden?
Den Bereich #—Verschieben nach Custom Kernel— kann man zum testen erstmal weglassen.
Gruß Marcel
-
7. August 2026 um 11:24 Uhr #42845
---Anleitung---#—dynamisches Feld erstellen —
-> lege ein dynmisches Feld an -> Ticket ->Text mit dem Namen „TicketOldOwnerEmail“#—erstelle einen Auftrag „TicketOldOwnerEmail“ im Generic Agent —
-> Ereignisbaierte Ausführung -> Auslöser = TicketOwnerUpdate
-> stelle deine Ticketfilter ein, um erstmal auf Queue zu testen-> bei Benutzerdefiniertes Modul ausführen folgende Zeile einfügen:
Kernel::System::GenericAgent::SetOwnerEmailToDynamicField#—-Ticket Beachrichtigung „NotifyTicketOldOwnerEmail“ erstellen—-
-> Ereignisbasierte Ausführung -> Auslöser = TicketOwnerUpdate
-> bei zusätzliche Email Adresse jetzt das dynamische Feld angeben: <OTOBO_TICKET_DynamicField_TicketOldOwnerEmail>
-> Benachrichtigunstext nach wünschen anpassen#—-Im die Otobo Konsole (SSH) wechseln und dort denn Docker benutzt wird in den Container wechseln—
sudo docker exec -it otobo-web-1 bash (Achtung Containername beachten, wenn man bereits Docker Compose v2 geupdatet hat)
#—Datei SetOwnerEmailToDynamicField.pm erstellen—
nano /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm
Datei Inhalt:
package Kernel::System::GenericAgent::SetOwnerEmailToDynamicField;
use strict;
use warnings;sub new {
my ( $Type, %Param ) = @_;
my $Self = {};
bless( $Self, $Type );
return $Self;
}sub Run {
my ( $Self, %Param ) = @_;my $TicketObject = $Kernel::OM->Get(‚Kernel::System::Ticket‘);
my $UserObject = $Kernel::OM->Get(‚Kernel::System::User‘);
my $DynamicFieldObject = $Kernel::OM->Get(‚Kernel::System::DynamicField‘);
my $BackendObject = $Kernel::OM->Get(‚Kernel::System::DynamicField::Backend‘);my $TicketID = $Param{TicketID};
if (!$TicketID) {
return 1;
}# 1. Ticket-Daten FRISCH aus der Datenbank laden (Behebt das Event-Schnittstellen-Problem)
my %Ticket = $TicketObject->TicketGet(
TicketID => $TicketID,
DynamicFields => 0,
UserID => 1,
);# Falls das Ticket nicht geladen werden kann, sauber abbrechen
if ( !%Ticket ) {
return 1;
}# Typen-Prüfung auf Deine erlaubten Ticket-Typen
my %AllowedTypes = (
‚Incident‘ => 1,
‚Problem‘ => 1,
‚E-Mail‘ => 1,
);if ( !$Ticket{Type} || !$AllowedTypes{ $Ticket{Type} } ) {
return 1;
}# 2. Die OwnerID des AKTUELLEN Besitzers direkt aus dem geladenen Ticket ziehen
my $CurrentOwnerID = $Ticket{OwnerID};if (!$CurrentOwnerID) {
return 1;
}# 3. E-Mail-Adresse des aktuellen Besitzers direkt aus dem Agentenstamm abrufen
my %OwnerData = $UserObject->GetUserData(
UserID => $CurrentOwnerID,
);# Alle gängigen E-Mail-Attribute im Agentenprofil prüfen
my $OwnerEmail = $OwnerData{UserEmail} || $OwnerData{Email} || $OwnerData{mail} || “;# Falls keine Mailadresse gefunden wird (z. B. System-User), brechen wir ab
if (!$OwnerEmail) {
return 1;
}# 4. In das dynamische Feld schreiben
my $DynamicFieldName = ‚TicketOldOwnerEmail‘; # Der Systemname Deines Zielfeldes
my $DynamicFieldConfig = $DynamicFieldObject->DynamicFieldGet(
Name => $DynamicFieldName,
);if (!$DynamicFieldConfig) {
return 1;
}# Wert im Ticket setzen
$BackendObject->ValueSet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $TicketID,
Value => $OwnerEmail,
UserID => 1,
);return 1;
}1;
#—————————————————————————
mit STRG + X beenden
Y zum speichern#—Rechte auf die Datei setzen—
—————————————————————————-
chown otobo:otobo /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm
chmod 644 /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm##— dynamische Feld prüfen —-
um das dynamische Feld einmal zu prüfen, einfach unter Verwaltung von Dynamische Feldern <-> Oberflächen, das dynamische Feld „TicketOldOwnerEmail“ bei OverviewSmall zuweisen und
dann in der Ticketübersicht, bei Einstellungen (kleines Zahnrad) das Feld auswählen.Eine neue Email erstellen, bei dieser sollte nun direkt das dynamische Feld gefüllt werden.
#—Verschieben nach Custom Kernel—- (für den Test nicht notwendig)
1. Datei in den Custom-Ordner verschieben
Erstelle die passende Ordnerstruktur im Custom-Verzeichnis (falls noch nicht vorhanden)mkdir -p /opt/otobo/Custom/Kernel/System/GenericAgent/
Verschiebe Deine Modul-Datei dorthin
mv /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm /opt/otobo/Custom/Kernel/System/GenericAgent/
Berechtigungen zur Sicherheit für den OTOBO-Nutzer neu setzen
chown otobo:otobo /opt/otobo/Custom/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm
chmod 644 /opt/otobo/Custom/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pmGruß Marcel
-
7. August 2026 um 11:41 Uhr #42846
es sind laut Script nur die folgenden Tickettypen erlaubt, das muss ggf. noch angepasst werden.
# Typen-Prüfung auf Deine erlaubten Ticket-Typen
my %AllowedTypes = (
‚Incident‘ => 1,
‚Problem‘ => 1,
‚E-Mail‘ => 1,
);bei uns wäre das dann so.
# Typen-Prüfung auf Ihre aktiven OTOBO-Ticket-Typen
my %AllowedTypes = (
‚Chat‘ => 1,
‚E-Mail‘ => 1,
‚Formular‘ => 1,
‚Telefon‘ => 1,
‚Unclassified‘ => 1,
‚Webservice‘ => 1,
);oder ohne TicketTypPrüfung, entferne diesen Block, falls das Skript für ALLE Tickettypen gelten soll:
# Typen-Prüfung auf Deine erlaubten Ticket-Typen
my %AllowedTypes = (
‚Incident‘ => 1,
‚Problem‘ => 1,
‚E-Mail‘ => 1,
);if ( !$Ticket{Type} || !$AllowedTypes{ $Ticket{Type} } ) {
return 1;
} -
7. August 2026 um 14:07 Uhr #42850
Hi Marcel,
mit so einer detaillierten und super Anleitung sollte es eigentlich jeder hinbekommen – ich finde meinen Fehler nur nicht :-(
Ich habe im Script den Block mit den Tickettypen auskommentiert, da wir es für alle Tickets haben möchten.
Im „Generic Agent“ habe ich nur folgendes eingestellt:
Auftragsname: TicketOldOwnerEmail
Ereignisbasierte Ausführung (einzelnes Ticket): Typ = Ticket / Ereignis = TicketOwnerUpdate
Ticket selektieren: Nummer meines Test-Tickets
Benutzerdefiniertes Modul ausführen: Modul = Kernel::System::GenericAgent::SetOwnerEmailToDynamicFieldEine Idee:
Könnte es noch daran liegen, dass ein Filter im Script ist für UserID = 1?
(wir möchten diese Funktion für alle Tickets und Agenten haben – meine ID weiß ich nicht mal :-))Gruß Lars
-
7. August 2026 um 14:49 Uhr #42851
Hallo Lars,
wenn man die Agentenverwaltung öffnet und einen User dort auswählt, sieht man die jeweilige ID in der URL.
UserID=1 sollte bei Euch auch der User „root@localhost“ sein.
Wenn du den Geric Agent Task händisch ausführst, wird da ein Ticket angesprochen?
Bei mir sieht das so aus, wenn ich die Ticket ID im filter setze:
Ansonsten noch paar Fragen:
-dyn. Feld -TicketOldOwnerEmail ist erstellt?
-Auftrag „TicketOldOwnerEmail“ im Generic Agent ist erstellt -> das hattest du bestätigt
-Ticket Beachrichtigung „NotifyTicketOldOwnerEmail“ erstellen?
-wurde die Datei „SetOwnerEmailToDynamicField.pm“ erstellt und Rechte vergeben?
Der User Root@localhost hat bei uns folgende Settings. Die Email ist eine vorhandene gültige Emailadresse, da es sonst zu fehlern kommt.

-
11. August 2026 um 9:26 Uhr #42872
Hallo Marcel,
genau – der Root-User ist ID=1 und hat jetzt eine gültige Emailadresse. Ein neuer Lauf mit dem Gen-Agent hat das Feld nicht gefüllt.
Wenn ich den Generic Agent ausführe wird mein Ticket angezeigt und ich führe es für dieses eine Ticket aus.
dyn. Feld erstellt – Ja
Generic Agent erstellt – Ja
Benachrichtigung erstellt – Ja
Datei erstellt und Berechtigungen vergeben – JaDu hast das so gut und detailliert beschrieben – ich weiß nicht wo etwas anders ist als bei dir …
Gruß Lars
-
11. August 2026 um 9:44 Uhr #42873
Hallo lars,
das kann ja nicht viel sein. Kannst du mal in die Console wechseln und den Befehl ausführen?
cd /opt/otobo-docker
sudo docker compose exec -u otobo web perl -cw /opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm
Als Ergebnis muss dann das folgende kommen:
/opt/otobo/Kernel/System/GenericAgent/SetOwnerEmailToDynamicField.pm syntax OK
Im Generic Agent wurde das Modul auch zugewiesen?

Eventuell wird der Quelltext hier im Forum verändert. Da könnte ich dir nochmal ein Textdatei irgendwie zukommen lassen.
Gruß Marcel
-
11. August 2026 um 9:57 Uhr #42874
schau doch nochmal in das Script
KI meint, die Hauptursachen für den Fehler:
Falsche Anführungszeichen (Copy-Paste-Fehler): In Ihrem Skript werden typografische Anführungszeichen (‚ und ‘ bzw. “) verwendet (z. B. Get(‚Kernel::System::Ticket‘) oder ‚Incident‘).Perl erkennt diese nicht als String-Begrenzer und bricht mit einem Syntaxfehler ab.
Es müssen zwingend Standard-Single- oder Double-Quotes (‚ oder „) genutzt werden.
Das Forum ändert das Format ab, schau mal so müssen die Hochkommas als Beispiel aussehen.

Habs mal bei WETransfer hochgeladen. Ist 3 Tage abrufbar.
-
11. August 2026 um 10:25 Uhr #42876
Hi Marcel,
die KI hatte recht – dort lag der Fehler. Die Quotes waren falsch in meinem Script.
Jetzt wird die Emailadresse vom Besitzer richtig gesetzt. Damit bin ich auf jeden Fall schon weiter.
Eine Benachrichtigung bekomme ich auch per Mail (so wie ich es gewollt habe). Vielen Dank dafür.
Bei meinem Test ist mir aufgefallen, dass diese Benachrichtigung auch im Ticket eingetragen wird. Wie stelle ich das ab? Weißt du das? Email reicht mir :-)
Des weiteren ist mir aufgefallen, dass bei einem Ticket-Ping-Pong nur der letzte Eintrag bleibt.
Beispiel: Mein Ticket = Agent A – meine Emailadresse wird als letzter Owner eingetragen. Agent B nimmt sich das Ticket, meine Emaildresse (Owner) bleibt eingetragen. Ich – also Agent A nimmt das Ticket zurück – Agent B bekommt darüber keinen Hinweis. Jetzt ist vermutlich die Lösung den Gen.Agent regelmäßig laufen zu lassen?Gruß und nochmal vielen vielen Dank
Lars
-
11. August 2026 um 12:23 Uhr #42881
Hallo Lars,
das lässt sich wegen der Revisionssicherheit nicht so einfach unterbinden. Man könne das sicher aber in dem Script mit einbinden.
Gruß Marcel
-
11. August 2026 um 12:57 Uhr #42883
Hallo Lars,
wenn du das Script „SetOwnerEmailToDynamicField.pm“ mit dem folgenden ersetzt, wir die Mail darüber ausgelöst. Die Ticketbenachrichtung musst du nun deaktivieren.
#–> Script Anfang–#
package Kernel::System::GenericAgent::SetOwnerEmailToDynamicField;
use strict;
use warnings;sub new {
my ( $Type, %Param ) = @_;
my $Self = {};
bless( $Self, $Type );
return $Self;
}sub Run {
my ( $Self, %Param ) = @_;my $TicketObject = $Kernel::OM->Get(‚Kernel::System::Ticket‘);
my $UserObject = $Kernel::OM->Get(‚Kernel::System::User‘);
my $DynamicFieldObject = $Kernel::OM->Get(‚Kernel::System::DynamicField‘);
my $BackendObject = $Kernel::OM->Get(‚Kernel::System::DynamicField::Backend‘);
my $EmailObject = $Kernel::OM->Get(‚Kernel::System::Email‘);my $TicketID = $Param{TicketID};
if (!$TicketID) {
return 1;
}# 1. Ticket-Daten laden
my %Ticket = $TicketObject->TicketGet(
TicketID => $TicketID,
DynamicFields => 0,
UserID => 1,
);if ( !%Ticket ) {
return 1;
}# 2. Konfiguration des dynamischen Feldes laden
my $DynamicFieldName = ‚TicketOldOwnerEmail‘;
my $DynamicFieldConfig = $DynamicFieldObject->DynamicFieldGet(
Name => $DynamicFieldName,
);if (!$DynamicFieldConfig) {
return 1;
}# 3. Den gespeicherten ALTEN Wert auslesen
my $OldOwnerEmail = $BackendObject->ValueGet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $TicketID,
);# 4. Daten des NEUEN (aktuellen) Besitzers ermitteln
my %NewOwnerData = $UserObject->GetUserData(
UserID => $Ticket{OwnerID},
);
my $NewOwnerName = $NewOwnerData{UserFirstname} . ‚ ‚ . $NewOwnerData{UserLastname};
my $NewOwnerEmail = $NewOwnerData{UserEmail} || $NewOwnerData{Email} || $NewOwnerData{mail} || “;# =========================================================================
# E-Mail-Versand (NUR WENN alt und neu nicht identisch sind!)
# =========================================================================
my $MailSuccess = 0;if ($OldOwnerEmail && $NewOwnerEmail && (lc($OldOwnerEmail) ne lc($NewOwnerEmail))) {
my $MailSubject = „[Ticket#$Ticket{TicketNumber}] Dir wurde ein Ticket entzogen“;
my $MailBody = <<„EOF“;
Hallo,dir wurde soeben das Ticket mit der Nummer $Ticket{TicketNumber} („$Ticket{Title}“) entzogen.
Neuer Besitzer des Tickets ist von nun an: $NewOwnerName
Link zum Ticket: http://dein-otobo-server/otobo/index.pl?Action=AgentTicketZoom;TicketID=$TicketID
Viele Grüße,
Dein OTOBO System
EOF$MailSuccess = $EmailObject->Send(
From => ‚otobo@deine-firma.de‘, # Bitte anpassen
To => $OldOwnerEmail,
Subject => $MailSubject,
Body => $MailBody,
MimeType=> ‚text/plain‘,
Charset => ‚utf-8‘,
);
} else {
# Wenn die Adressen gleich sind (z.B. beim ersten Mal oder Selbstanleitung),
# tun wir so, als wäre es erfolgreich, damit das Feld unten aktualisiert wird.
$MailSuccess = 1;
}# =========================================================================
# Feld aktualisieren: Jetzt wird der NEUE Besitzer für das nächste Mal hinterlegt
# =========================================================================
if ( $NewOwnerEmail ) {
$BackendObject->ValueSet(
DynamicFieldConfig => $DynamicFieldConfig,
ObjectID => $TicketID,
Value => $NewOwnerEmail,
UserID => 1,
);
}
# =========================================================================return 1;
}1;
#—script ende—#
Das From Feld und die URL muss angepasst werden, falls das so übernommen wird.
Achtung, wieder auf die Hochkommas achten.
Gruß Marcel
-
11. August 2026 um 17:10 Uhr #42898
Hallo Marcel,
ich belasse es bei der ersten Version. Dies gefällt mir unterm Strich am Besten.
Grundlegend möchte ich die Benachrichtigung nicht im Ticket haben, aber das ist auch nicht so schlimm.
Mir ist wichtiger, dass Agenten die Benachrichtigung auch abstellen können.
Ich habe übrigens den Cache gelöscht und das Web-Modul neu gestartet, dann wurden die Veränderungen des Owners immer sauber verändert. Irgendwas hing da wohl.
Vielen Dank für deine Mühe und Gedult.
Gruß Lars
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.







