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

Modely vlastníkov

Model, ktorý vlastní kontroly, určuje, kto dostane notifikácie o alertoch. Implementujte HasNotifiablesForAlerts a použite trait UsesHealthChecks:

use Closure;
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Alerts\Interfaces\HasNotifiablesForAlerts;
use RoundlyConsulting\Alerts\Traits\UsesHealthChecks;

class Team extends Model implements HasNotifiablesForAlerts
{
    use UsesHealthChecks;

    public function forEachNotifiableForAlerts(Closure $callback): void
    {
        $this->members()
            ->where('alerts_enabled', true)
            ->each(fn (Member $member) => $callback($member));
    }
}

forEachNotifiableForAlerts() odovzdá callbacku každého príjemcu z predvolenej skupiny. Notifikácie sa posielajú cez fasádu Notification v Laraveli, preto príjemcom dajte trait Notifiable. Trait pridáva:

  • healthChecks() a alerts() — vzťahy morphMany na naplánované kontroly a alerty vlastníka.
  • monitorCheck(string $check) — skratka pre Health::for($this)->monitor($check), fluentný builder na plánovanie (pozri Plánovanie kontrol).
  • monitor(ScheduleHealthCheckData $data) — skratka pre Health::for($this)->schedule($data); createHealthCheck(…) je jej variant s pozičnými argumentmi.
  • notifiablesForAlertGroup(string $group) — cez pribalený trait ResolvesAlertGroups vráti pre akýkoľvek názov predvolenú skupinu. Pre pomenované eskalačné skupiny ho prepíšte (pozri Eskalačné politiky).

Skratky na plánovanie delegujú na Health::for($this), takže sa správajú presne ako volania fasády — a Health::fake() ich tiež zaznamená.

Vlastníkom môže byť akýkoľvek model

Tímy, tenanti, projekty či jeden používateľ — čokoľvek, čo má vlastniť svoje kontroly. Používateľ môže jednoducho upozorniť sám seba:

use Closure;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use RoundlyConsulting\Alerts\Interfaces\HasNotifiablesForAlerts;
use RoundlyConsulting\Alerts\Traits\UsesHealthChecks;

// A user can own checks and receive its own alerts.
class User extends Authenticatable implements HasNotifiablesForAlerts
{
    use Notifiable;
    use UsesHealthChecks;

    public function forEachNotifiableForAlerts(Closure $callback): void
    {
        $callback($this);
    }
}

Ak kontrola zlyhá pre vlastníka, ktorý rozhranie neimplementuje, beh vyhodí InvalidNotifiableForHealthCheck.

Čítanie alertov

Alert má scopes open() a recovered() a vzťahy späť na vlastníka a kontrolu:

$team->healthChecks()->get();                         // scheduled HealthCheck rows
$team->alerts()->open()->get();                        // incidents still in progress
$team->alerts()->recovered()->latest('recovered_at')->first();

$alert = $team->alerts()->open()->first();

$alert->status;            // Status::Failed or Status::Warning
$alert->message;           // the result message that opened it
$alert->meta;              // the result meta (plus 'muted' => true when muted)
$alert->escalation_level;  // 0 until a policy escalates it
$alert->triggered_at;      // Carbon
$alert->recovered_at;      // null while open
$alert->healthCheck;       // the scheduled HealthCheck row
$alert->notifiable;        // the owner

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.