Schlagwörter: Ticketbenachrichtigung Tags Artikel
-
AutorBeiträge
-
-
4. August 2026 um 11:40 Uhr - Views: 22 #42805
Hallo,
wir optimieren gerade unsere Ticketbenachrichtigungen für Agenden und Kundenbenutzer.
Für eine Rückfrageaktion würde ich gerne als Info, für z.B. einen Vorgesetzten den Text des ersten Artikel mitsenden.
In diesem steht bei uns meist die Anforderung/der Wunsch / … worum es geht.
Kann ich mit den Tags auf den ersten Artikel zugreifen?
In der Tag-Referenz finde ich immer nur den letzten , also den akutellsten Artikel.
Vielleicht bin ich auch nur Blind, im Forum habe ich schon die Tag Referenz zu OTRS gefunden, die ja analog angewendet werden kann.https://academy.otrs.com/doc/admin/tutorials/otrs-tags/
Hat hier jemand Tipps für mich?
Danke.
Gruß
Wolfgang
-
4. August 2026 um 15:49 Uhr #42814
Servus Wolfgang,
den „letzten Artikel“ holt OTOBO fest im
TemplateGeneratorfür Notifications. Da stehtOnlyLast => 1. Für den ersten Artikel nimmst du denselben Code und setztOnlyFirst => 1(API kann beides, nur nicht gleichzeitig).Stock (letzter Customer-Artikel → u.a.
):https://github.com/RotherOSS/otobo/blob/rel-11_0/Kernel/System/TemplateGenerator.pm#L932-L949
`perl
# Get last article from customer.
my @CustomerArticles = $ArticleObject->ArticleList(
TicketID => $Param{TicketData}->{TicketID},
SenderType => ‚customer‘,
OnlyLast => 1,
);my %CustomerArticle;
ARTICLE:
for my $Article (@CustomerArticles) {
next ARTICLE if !$Article->{ArticleID};%CustomerArticle = $ArticleObject->BackendForArticle( %{$Article} )->ArticleGet(
%{$Article},
DynamicFields => 0,
);
}
`ArticleListmitOnlyFirst/OnlyLast:https://github.com/RotherOSS/otobo/blob/rel-11_0/Kernel/System/Ticket/Article.pm#L71-L76
(im File die Stelle mitOnlyFirst/OnlyLastam Ende vonArticleList)Wenn du **nur** den ersten Artikel in den bestehenden Tags willst (Body/Subject wie gewohnt, nur erster statt letzter), in einem Custom-Override genau so ändern:
`perl
# Get first article from customer. (war: OnlyLast => 1)
my @CustomerArticles = $ArticleObject->ArticleList(
TicketID => $Param{TicketData}->{TicketID},
SenderType => ‚customer‘,
OnlyFirst => 1,
);
`Dann bleiben
/gültig, zeigen aber den ersten Customer-Artikel.Wenn du **beide** brauchst (last + first), parallel laden und eigene Tags ersetzen, z.B. in
Custom/Kernel/System/TemplateGenerator.pm(MethodeNotificationEventaus Core kopieren und erweitern):`perl
# — stock: last customer article (unverändert) —
my @CustomerArticles = $ArticleObject->ArticleList(
TicketID => $Param{TicketData}->{TicketID},
SenderType => ‚customer‘,
OnlyLast => 1,
);my %CustomerArticle;
ARTICLE:
for my $Article (@CustomerArticles) {
next ARTICLE if !$Article->{ArticleID};
%CustomerArticle = $ArticleObject->BackendForArticle( %{$Article} )->ArticleGet(
%{$Article},
DynamicFields => 0,
);
}# — neu: first customer article —
my @FirstCustomerArticles = $ArticleObject->ArticleList(
TicketID => $Param{TicketData}->{TicketID},
SenderType => ‚customer‘,
OnlyFirst => 1,
);my %FirstCustomerArticle;
FIRSTARTICLE:
for my $Article (@FirstCustomerArticles) {
next FIRSTARTICLE if !$Article->{ArticleID};
%FirstCustomerArticle = $ArticleObject->BackendForArticle( %{$Article} )->ArticleGet(
%{$Article},
DynamicFields => 0,
);
}# nach dem bestehenden Replace-Flow (wenn Body/Subject der Notification schon gesetzt sind), z.B.:
my $FirstBody = $FirstCustomerArticle{Body} // “;
my $FirstSubject = $FirstCustomerArticle{Subject} // “;# Plain preview analog zum Stock (ArticlePreview), falls du HTML strippen willst:
# $FirstBody = $LayoutObject->ArticlePreview(
# TicketID => $FirstCustomerArticle{TicketID},
# ArticleID => $FirstCustomerArticle{ArticleID},
# ResultType => ‚plain‘,
# UserID => $Param{UserID},
# );$Notification{Body} =~ s{}{$FirstBody}gi;
$Notification{Subject} =~ s{}{$FirstSubject}gi;
$Notification{Body} =~ s{<OTOBO_CUSTOMER_FIRST_BODY>}{$FirstBody}gi; # falls HTML-ContentType
`In der Benachrichtigung dann z.B.:
`
Erstanforderung:`Kein GenericAgent, kein DynamicField. Nur TemplateGenerator +
OnlyFirst, analog zum bestehenden Last-Article-Pfad.Cache/Config neu laden nach Custom-Deploy nicht vergessen.
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
