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

Skupinové konverzácie

Messages::start() nastaví názov, verejnosť aj účastníkov v jednej reťazi. Prvý účastník v zozname sa stane vlastníkom vlákna, ostatní sa pridajú ako členovia:

use RoundlyConsulting\Messages\Facades\Messages;

$thread = Messages::start('Project X')
    ->public()                 // ->private(), ->direct()
    ->everyoneCanJoin()
    ->withParticipants([$alice, $bob, $carol])   // $alice becomes the owner
    ->create();

Messages::send($thread, $alice, 'Welcome everyone');

Priamo z modelu

Trait HasMessaging je skratka nad tým istým managerom — startConversationWith() urobí z volajúceho modelu vlastníka:

$thread = $alice->startConversationWith([$bob, $carol], name: 'Project X');
$alice->sendMessageTo($thread, 'Welcome everyone');

$alice->threads();        // every thread $alice is in, newest activity first
$alice->conversations();  // alias of threads() with a chat-inbox name
$alice->unreadThreads();  // only threads with unread messages
$dave->joinThread($thread);  // only when the thread is open to everyone

Verejné vlákna a pravidlá pridávania

Skupinové vlákna nesú dva príznaky, is_public a everyone_can_join. Ak ich volajúci nenastaví, prevezmú hodnoty publicity.public-by-default a publicity.everyone-can-join (THREADS_PUBLIC a THREADS_EVERYONE_CAN_JOIN). is_public určuje broadcast kanál nového vlákna a to, ktoré vlákna Messages::threads() zobrazí všetkým.

joinThread() slúži na to, aby sa model pridal sám: povolí to len vo vlákne vytvorenom s ->everyoneCanJoin() (alebo pri zapnutom publicity.everyone-can-join), inak vyhodí UnauthorizedMessagingAction — priame vlákna nie sú otvorené nikdy. Pre niekoho, kto už vo vlákne je, nerobí nič a vráti jeho existujúci záznam. Do uzavretého vlákna niekoho pridá až jeho správca.

Pridávanie a odoberanie účastníkov

Zmeny účastníkov idú cez handle participants() daného vlákna. Ak uvediete by: (vykonávateľa), roly sa vynucujú; pri dôveryhodnom serverovom kóde ho vynechajte:

use RoundlyConsulting\Messages\Enums\ParticipantRole;
use RoundlyConsulting\Messages\Facades\Messages;

$participants = Messages::thread($thread)->participants();

// $alice (the owner) adds Dave as an admin — a role above member needs the owner
$participants->add($dave, ParticipantRole::Admin, by: $alice);

// $alice removes Carol — takes a role above Carol's
$participants->remove($carol, by: $alice);

// Bob leaves on his own — no role needed (the owner hands over first)
$participants->leave($bob);

Pridanie niekoho, kto už je účastníkom, nikdy nevytvorí druhý záznam: add() vráti jeho existujúci Participant bez zmeny — bez udalosti, systémovej správy aj zmeny roly (na tú slúži setRole()). Kto vlákno opustil a pridáte ho znova, dostane nový záznam. Každá metóda prijme model účastníka aj jeho záznam Participant; záznam z iného vlákna vyhodí ParticipationException.

Každé nové pridanie a každý odchod aktualizuje last_activity_at vlákna, spustí ParticipantJoined alebo ParticipantLeft a — pri zapnutých systémových správach — zapíše systémovú správu. Odobratie modelu, ktorý vo vlákne nie je, vyhodí ParticipationException::notAParticipant() a vlastník nemôže odísť, kým je vo vlákne ešte niekto iný — najprv prevedie vlastníctvo (pozri Roly a oprávnenia).

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.