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

Priradenie a sledujúci

Jeden riešiteľ na tiket: polymorfný vzťah na akýkoľvek model, ktorý implementuje Contracts\Assignee.

Tickets::for($ticket)->by($lead)->assign($agent);    // TicketAssigned
Tickets::for($ticket)->by($agent)->claim();          // the actor takes it
Tickets::for($ticket)->by($lead)->unassign();        // TicketUnassigned
$ticket->assignTo($agent, $lead);                    // model convenience, through the manager
  • Riešiteľ musí byť vhodný (isEligibleTicketAssignee()), inak InvalidAssigneeException. S Concerns\IsTicketAssignee je Authenticatable vhodný, keď je agentom pre tento tiket — prejde oprávnením agenta a AgentScope mu povolí na tikete pracovať —, takže nikto nedostane tiket, ktorý by nemohol otvoriť. Akýkoľvek iný model je vhodný vždy.
  • Ten istý riešiteľ znova nič nespraví: žiadna aktivita, žiadna udalosť.
  • Priradenie tiketu v počiatočnom stave spustí automatizáciu Assigned (new → open) a riešiteľ začne tiket sledovať (tickets.watchers.auto.assignee).
  • claim() potrebuje aktéra, ktorý je vhodným riešiteľom. V API vyžaduje priradenie niekomu inému oprávnenie assign; prevziať tiket smie ktorýkoľvek agent; držiteľ sa môže sám odobrať.
  • Pri založení bez riešiteľa sa balík opýta Contracts\AssignmentStrategy::assigneeFor($ticket) — predvolene predvoleného riešiteľa najbližšej kategórie.

Tím ako riešiteľ

Notifikácie dostanú jeho členovia:

use RoundlyConsulting\Tickets\Concerns\IsTicketAssignee;
use RoundlyConsulting\Tickets\Contracts\Assignee;
use RoundlyConsulting\Tickets\Models\Ticket;

final class Team extends Model implements Assignee
{
    use IsTicketAssignee;

    public function ticketNotifiables(): iterable
    {
        return $this->members()->where('active', true)->get();
    }

    public function isEligibleTicketAssignee(Ticket $ticket): bool
    {
        return true;
    }
}

Pre API pridajte triedu do tickets.assignables (['team' => Team::class]). Ako model tímu funguje aj teams-for-laravel.

Vlastné pravidlo priraďovania

Naviažte Contracts\AssignmentStrategy (assigneeFor(Ticket): ?Model) cez tickets.assignment.strategy alebo kontajner — round-robin, podľa vyťaženia, podľa potrieb vášho helpdesku. Beží na uloženom tikete, ktorý už má projekt, kategóriu, prioritu a kanál.

Sledujúci

Sledujúci tiketu — používatelia, akýkoľvek model alebo TicketGuest (hosť v kópii):

Tickets::for($ticket)->by($agent)->watchers()->add($colleague)->remove($former);
Tickets::for($ticket)->by($user)->watchers()->watch();      // the actor; ->unwatch()
Tickets::for($ticket)->watchers()->has($colleague);         // bool
Tickets::for($ticket)->watchers()->all();                   // TicketWatcher rows, watcher loaded
  • Unikátne pre (tiket, sledujúci); opätovné pridanie nič nespraví. watch() bez aktéra vyhodí InvalidWatcherException.
  • Automatické sledovanie (tickets.watchers.auto.*): žiadateľ pri založení, riešiteľ pri priradení, agenti, ktorí píšu, a (predvolene vypnuté) spomenutý čitateľ. Automatické sledovania sú tiché — žiadna aktivita, žiadna udalosť. TicketWatcher::$auto ich odlíši; add() na niekoho, kto už sleduje automaticky, z neho urobí zámerné sledovanie.
  • Odovzdanie žiadateľa (changeRequester()) odstráni automatické sledovanie predošlého žiadateľa, takže tiket už nevidí a nedostáva jeho notifikácie; sledovanie, ktoré agent pridal zámerne, zostane. Odkazy predošlého žiadateľa-hosťa sa zneplatnia.
  • Sledujúci, ktorý nie je agent, smie vidieť tiket aj jeho verejné vlákno a odpovedať ako účastník (tickets.watchers.can_view). Zoznamy sledujúcich sú v API len pre agentov.
  • TicketWatcherAdded / TicketWatcherRemoved sa spustia pri explicitných zmenách; ich záznamy aktivity sú interné.

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.