NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Každá udalosť je final readonly trieda v RoundlyConsulting\Tickets\Events s ShouldDispatchAfterCommit: spustí sa, až keď sa zmena potvrdí, nikdy pri rollbacku. $actor je ten, kto konal (null pre systém). Každá udalosť o jednom tikete — 33 z 34, všetky okrem GuestConverted — implementuje Contracts\TicketEvent:

interface TicketEvent
{
    public function ticket(): Ticket;   // TicketMerged: the source, the ticket merged away
    public function actor(): ?Model;    // null for the system, and always for TicketOverdue,
                                        // TicketDueSoon (the sweep) and TicketMentioned
}

Dispečer Laravelu doručí udalosť aj listenerom rozhraní, ktoré implementuje, takže jeden typovaný listener zachytí všetky — audit log, prenos na webhook či kanál pre dashboard:

use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Tickets\Contracts\TicketEvent;

Event::listen(TicketEvent::class, function (TicketEvent $event): void {
    AuditLog::create([
        'ticket' => $event->ticket()->reference,
        'event' => class_basename($event),          // TicketReplied, TicketAssigned, …
        'actor_type' => $event->actor()?->getMorphClass(),
        'actor_id' => $event->actor()?->getKey(),
    ]);
});

Skôr než čokoľvek pošlete von, myslite na udalosti len pre agentov: TicketNoteAdded a TicketMentioned či TicketCommentUpdated / TicketCommentDeleted o poznámke alebo zadržanej odpovedi nesú obsah, ktorý žiadny žiadateľ nesmie vidieť.

Zoznam udalostí

UdalosťPayloadSpustí sa, keď
TicketCreatedticket, actorTiket bol založený.
TicketUpdatedticket, changed, actorZmenil sa predmet, popis alebo meta hostiteľa (changed obsahuje kľúče).
TicketPriorityChangedticket, from, to, actorZmenila sa priorita (nie pri nastavení rovnakej hodnoty).
TicketCategoryChangedticket, from, to, actorcategorize() presunulo tiket — aj pre každý tiket, ktorý presunie zmazanie kategórie.
TicketDueDateChangedticket, from, to, actorTermín nastavený, posunutý alebo zrušený.
TicketRequesterChangedticket, requester, actorAj pri konverzii hosťa.
TicketDeleted / TicketRestoredticket, actorSoft delete / obnovenie.
TicketStatusChangedticket, transition, from, to, actor, systemKaždá zmena stavu okrem počiatočnej (vrátane rollbackov a adopcií); from / to sú surové hodnoty z lifecycle.
TicketResolved / TicketClosedticket, actorVstup do stavu kategórie Resolved / Closed.
TicketReopenedticket, actorOdchod z Resolved alebo Closed do Open, Active alebo Waiting.
TicketRepliedticket, comment, role, actorZverejnená verejná odpoveď (nie zadržaná).
TicketNoteAddedticket, comment, actorInterná poznámka.
TicketCommentUpdated / TicketCommentDeletedticket, comment, actorSpráva bola upravená / zmazaná — odpoveď, zadržaná odpoveď alebo poznámka: pred zobrazením komentár skontrolujte.
TicketFirstRespondedticket, comment, actorPrvá verejná odpoveď agenta.
TicketMentionedticket, comment, mentionedZmienka, len pre niekoho, kto smie komentár čítať.
TicketAssignedticket, assignee, actorPriradenie alebo prevzatie (nie pre toho istého riešiteľa znova).
TicketUnassignedticket, assignee, actorRiešiteľ bol odobratý (assignee je predošlý).
TicketWatcherAdded / TicketWatcherRemovedticket, watcher, actorExplicitné pridania a odobratia (automatické sledovania sú tiché).
TicketTagged / TicketUntaggedticket, tags, actorSkutočne pridané / odobraté štítky (názvy) — TicketUntagged aj pre každý živý tiket, z ktorého štítok odoberie jeho zmazanie.
TicketLinked / TicketUnlinkedticket, related, type, actorPrepojenie pridané / odobraté (duplicitné pridanie nespustí nič; prepojenie duplicates zo zlúčenia tiež nie).
TicketMergedsource, target, result, actorZlúčenie bolo potvrdené; ticket() je zdroj.
TicketAttachmentAdded / TicketAttachmentRemovedticket, media, actorSúbory na úrovni tiketu (súbory správ patria comments).
TicketFieldsChangedticket, keys, actorHodnoty vlastných polí nastavené alebo zabudnuté — kľúče, nikdy hodnoty.
TicketOverdue / TicketDueSoonticket, dueAtKontrola termínov ho označila, raz na termín.
GuestConvertedguest, user, tickets, actorHosť sa stal registrovaným používateľom (tickets = počet presunutých); nie je TicketEvent.
GuestAccessRevokedticket, version, actorVšetky odkazy pre hostí zneplatnené — explicitne, pri zlúčení alebo pri uzavretí s revoke_on_close.
  • Interná poznámka sa dostane aj k vlastným udalostiam comments-for-laravel (CommentCreated, CommentMentioned), ktoré sa spúšťajú pri každom komentári — pred upovedomením kohokoľvek skontrolujte meta.tickets.internal.
  • LifecycleTransitioning / LifecycleTransitioned z lifecycle sa spúšťajú aj pre tikety; uprednostnite udalosti tiketov vyššie.
  • Tickets::fake() udalosti nepodvrhuje — každé volanie sa aj tak vykoná —, takže Event::fake() funguje vedľa neho.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.