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

Priame správy

Najčastejší prípad zvládne jedno volanie — Messages::direct() nájde priamu konverzáciu dvoch modelov alebo ju vytvorí:

use RoundlyConsulting\Messages\Facades\Messages;

$thread = Messages::direct($alice, $bob);   // find-or-create the DM
Messages::send($thread, $alice, 'Hi Bob!');

Messages::unreadCount($bob);          // 1
Messages::markRead($thread, $bob);
Messages::unreadCount($bob);          // 0

Pre tých istých dvoch účastníkov vráti vždy to isté priame vlákno, takže duplicitné konverzácie nevzniknú. Hľadá priame vlákno, ktorého účastníkmi sú presne títo dvaja — tretí účastník by z neho urobil skupinu.

Bezpečné aj pri súbežnom prvom kontakte

Duplicita nevznikne ani vtedy, keď obe strany nadviažu prvý kontakt v tej istej chvíli: priama konverzácia nesie unikátny kľúč dvojice (direct_key), databáza druhý insert odmietne a prehrávajúca strana dostane vlákno víťaza. Priama konverzácia, ktorá bola zmazaná alebo ju niekto opustil, kľúč odovzdá novej.

Priamo z modelu

Trait HasMessaging ponúka ten istý postup ako skratku — conversationWith() v skutočnosti volá Messages::direct():

$thread = $alice->conversationWith($bob); // find-or-create the DM
$alice->sendMessageTo($thread, 'Hi Bob!');

$bob->unreadCount();          // 1
$bob->markThreadRead($thread);
$bob->unreadCount();          // 0

Čím sa priame vlákna líšia

  • Vždy súkromné — is_public aj everyone_can_join sú vynútene false bez ohľadu na konfiguráciu verejnosti.
  • Bez rolí — účastníci nemajú rolu, vynucovanie rolí sa preskakuje a setRole() či transferOwnership() vyhodí ParticipationException::directThreadHasNoRoles().
  • Bez názvu — priame vlákno vzniká bez mena.

Dopyty na priame vlákna

use RoundlyConsulting\Messages\Models\Thread;

Thread::query()->direct()->get();                 // every 1:1 thread
Thread::query()->between($alice, $bob)->first();  // the DM of exactly these two, or null

$thread->is_direct;   // true
$thread->is_public;   // always false for a direct thread
$thread->name;        // null
$thread->direct_key;  // the unique pair key — Thread::directKeyFor($alice, $bob)

Messages::start()->direct()->…->create() vytvorí zakaždým nové priame vlákno — ak chcete „nájdi alebo vytvor“, použite Messages::direct() alebo conversationWith().

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.