---
title: "Konfigurácia — Notifications for Laravel | Roundly"
description: "Každý kľúč config/notifications.php s env premennou a predvolenou hodnotou — kľúče, tabuľky, front, schránka, e-mail, tiché hodiny, súhrny, routes."
url: https://roundly-consulting.com/sk/open-source/navody/notifications-for-laravel/konfiguracia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Notifications for Laravel](https://roundly-consulting.com/sk/open-source/navody/notifications-for-laravel.md)

# Konfigurácia

Balík funguje bez akejkoľvek konfigurácie. config/notifications.php publikujte, len ak chcete niečo zmeniť:

```bash
php artisan vendor:publish --tag="notifications-config"
```

Každá hodnota sa číta prísne: preklep vyhodí výnimku s názvom kľúča a prázdna env hodnota (KEY=) znamená „nenastavené“ — platí predvolená hodnota.

- Doby sú v ISO-8601 (PT5M, P1D); časy sú miestne HH:MM.
- Prepínače prijímajú true/false, 1/0, on/off a yes/no.
- Celé čísla musia byť v rozsahu uvedenom v tabuľke; hodnota mimo neho vyhodí výnimku, neoreže sa.
- Kľúče s triedami (resolvery, resources) musia uvádzať triedu správneho druhu; čokoľvek iné vyhodí výnimku s názvom kľúča.

## Konfiguračný súbor

```php
use RoundlyConsulting\Notifications\Http\Resources\NotificationActorResource;
use RoundlyConsulting\Notifications\Http\Resources\NotificationContextResource;
use RoundlyConsulting\Notifications\Http\Resources\NotificationSubjectResource;
use RoundlyConsulting\Notifications\Models\DigestRun;
use RoundlyConsulting\Notifications\Models\InboxItem;
use RoundlyConsulting\Notifications\Models\NotificationDelivery;
use RoundlyConsulting\Notifications\Models\NotificationReceipt;
use RoundlyConsulting\Notifications\Models\NotificationReminder;
use RoundlyConsulting\Notifications\Recipients\ContractGroupResolver;
use RoundlyConsulting\Notifications\Support\DefaultTimezoneResolver;

return [
    'types' => [],

    'key_type' => env('NOTIFICATIONS_KEY_TYPE', 'bigint'),
    'subject_key_type' => env('NOTIFICATIONS_SUBJECT_KEY_TYPE'),
    'context_key_type' => env('NOTIFICATIONS_CONTEXT_KEY_TYPE'),
    'primary_key_type' => env('NOTIFICATIONS_PRIMARY_KEY_TYPE', 'bigint'),

    'models' => [
        'inbox_item' => InboxItem::class,
        'delivery' => NotificationDelivery::class,
        'reminder' => NotificationReminder::class,
        'digest_run' => DigestRun::class,
        'receipt' => NotificationReceipt::class,
    ],

    'tables' => [
        'inbox_items' => 'notification_inbox_items',
        'deliveries' => 'notification_deliveries',
        'reminders' => 'notification_reminders',
        'digest_runs' => 'notification_digest_runs',
        'receipts' => 'notification_receipts',
    ],

    'queue' => [
        'enabled' => env('NOTIFICATIONS_QUEUE_ENABLED', true),
        'connection' => env('NOTIFICATIONS_QUEUE_CONNECTION'),
        'queue' => env('NOTIFICATIONS_QUEUE_NAME'),
    ],

    'fan_out' => [
        'queue_above' => 50,
        'chunk' => 100,
    ],

    'access' => [
        'ability' => 'view',
    ],

    'recipients' => [
        'group_resolver' => ContractGroupResolver::class,
    ],

    'idempotency' => [
        'ttl' => 'P30D',
    ],

    'inbox' => [
        'per_page' => 20,
        'max_per_page' => 100,
        'max_data_bytes' => 16384,
        'recheck_on_read' => env('NOTIFICATIONS_INBOX_RECHECK', false),
        'on_subject_deleted' => 'keep',
    ],

    'preferences' => [
        'inbox_mutable' => false,
        'lock_store' => env('NOTIFICATIONS_LOCK_STORE'),
        'lock_seconds' => 10,
    ],

    'mail' => [
        'strategy' => 'leading',
        'minimal_for_sensitive' => true,
        'address_resolver' => null,
        'preferences_url' => env('NOTIFICATIONS_PREFERENCES_URL'),
        'max_attempts' => 3,
        'backoff' => [60, 300, 900],
        'lease' => 'PT10M',
    ],

    'quiet_hours' => [
        'enabled' => true,
        'default' => null,
    ],

    'timezone' => [
        'resolver' => DefaultTimezoneResolver::class,
        'attribute' => 'timezone',
    ],

    'digest' => [
        'default' => 'off',
        'time' => '08:00',
        'weekly_day' => 'monday',
        'max_items' => 50,
        'lease' => 'PT15M',
    ],

    'reminders' => [
        'max_lateness' => 'P1D',
        'batch' => 500,
        'lease' => 'PT10M',
    ],

    'interop' => [
        'map' => [],
        'suppress' => [],
        'database' => 'redirect',
        'hold' => true,
        'notifiables' => [],
    ],

    'routes' => [
        'enabled' => env('NOTIFICATIONS_ROUTES_ENABLED', 'off'),
        'prefix' => 'notifications',
        'middleware' => ['api'],
        'auth_middleware' => ['auth'],
    ],

    'resources' => [
        'actor' => NotificationActorResource::class,
        'subject' => NotificationSubjectResource::class,
        'context' => NotificationContextResource::class,
    ],

    'prune' => [
        'inbox_after' => 'P180D',
        'deliveries_after' => 'P30D',
        'digest_runs_after' => 'P90D',
        'reminders_after' => 'P90D',
    ],
];
```

## Druhy a typy kľúčov

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `types` | — | \[\] | Vaše druhy notifikácií: class-stringy tried, ktoré rozširujú NotificationType, vytvorené cez kontajner pri prvom použití. Čokoľvek iné vyhodí výnimku s názvom kľúča. Fluentné druhy pridáte cez Notifications::define(). |
| `key_type` | `NOTIFICATIONS_KEY_TYPE` | bigint | Kľúč príjemcov a aktérov — bigint, uuid alebo ulid. Musí sa zhodovať s typom kľúča vašich používateľov aj s options.key\_type, pretože preferencie sa ukladajú pre každého používateľa cez options-for-laravel. |
| `subject_key_type` | `NOTIFICATIONS_SUBJECT_KEY_TYPE` | blank = key\_type | Kľúč každého modelu subjektu. |
| `context_key_type` | `NOTIFICATIONS_CONTEXT_KEY_TYPE` | blank = key\_type | Kľúč každého modelu kontextu. |
| `primary_key_type` | `NOTIFICATIONS_PRIMARY_KEY_TYPE` | bigint | Vlastné id tabuliek balíka a cudzie kľúče medzi nimi. Čítajú ho migrácie — nastavte ho pred migráciou. |

## Modely a tabuľky

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `models.inbox_item` | — | InboxItem::class | Model vymeníte tak, že rozšírite triedu z balíka a uvediete tu podtriedu. |
| `models.delivery` | — | NotificationDelivery::class | Jeden riadok e-mailu na príjemcu, druh, subjekt a kontext v rámci okna. |
| `models.reminder` | — | NotificationReminder::class | Riadky pripomienok a eskalácií. |
| `models.digest_run` | — | DigestRun::class | Jeden riadok na príjemcu, frekvenciu a obdobie — evidencia súhrnov. |
| `models.receipt` | — | NotificationReceipt::class | Potvrdenky idempotencie. |
| `tables.inbox_items` | — | notification\_inbox\_items | Malé písmená, číslice a podčiarkovníky, najviac 30 znakov — MySQL obmedzuje názvy indexov na 64. |
| `tables.deliveries` | — | notification\_deliveries | Najviac 30 znakov. |
| `tables.reminders` | — | notification\_reminders | Najviac 24 znakov. |
| `tables.digest_runs` | — | notification\_digest\_runs | Najviac 30 znakov. |
| `tables.receipts` | — | notification\_receipts | Najviac 30 znakov. |

## Front a rozposielanie

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `queue.enabled` | `NOTIFICATIONS_QUEUE_ENABLED` | true | Spúšťa úlohy e-mailov, súhrnov a rozposielania vo fronte. Vypnuté: bežia priamo po commite. |
| `queue.connection` | `NOTIFICATIONS_QUEUE_CONNECTION` | blank = default | Spojenie frontu pre tieto úlohy. |
| `queue.queue` | `NOTIFICATIONS_QUEUE_NAME` | blank = default | Názov frontu pre tieto úlohy. |
| `fan_out.queue_above` | — | 50 | Viac vyhodnotených príjemcov, než je táto hodnota, doručia úlohy vo fronte (najmenej 1). |
| `fan_out.chunk` | — | 100 | Príjemcovia na jednu úlohu rozposielania, 1–10000; každá úloha znovu overí prístup. |

## Prístup, príjemcovia a idempotencia

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `access.ability` | — | view | Gate oprávnenie, ktoré predvolená kontrola prístupu overuje na subjekte. |
| `recipients.group_resolver` | — | ContractGroupResolver::class | Trieda ResolvesGroupMembers za Recipients::role() a Recipients::members(). |
| `idempotency.ttl` | — | P30D | Ako dlho sa pamätá kľúč idempotencie (->once(), odoslanie pripomienok a eskalácií); potvrdenky sa potom vymažú. |

## Schránka

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `inbox.per_page` | — | 20 | Predvolená veľkosť stránky, od 1 po inbox.max\_per\_page. |
| `inbox.max_per_page` | — | 100 | Najväčšia stránka a limit pre get(), 1–1000. |
| `inbox.max_data_bytes` | — | 16384 | Limit veľkosti JSON dát jedného odoslania, 256–1048576 bajtov. |
| `inbox.recheck_on_read` | `NOTIFICATIONS_INBOX_RECHECK` | false | Skryje položky, ku ktorých subjektu čitateľ už nemá prístup, po stránkach (počty zostávajú surové). |
| `inbox.on_subject_deleted` | — | keep | Čo sa stane s položkami schránky pri zmazaní subjektu: keep, archive alebo delete. Platí pre subjekty s HasNotificationReminders. |

## Preferencie

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `preferences.inbox_mutable` | — | false | Vypnuté: stlmenie zastaví len e-mail — schránka položku vždy ponechá. |
| `preferences.lock_store` | `NOTIFICATIONS_LOCK_STORE` | blank = default cache | Cache store pre zámok zápisu preferencií. Musí byť zdieľaný medzi servermi a podporovať atomické zámky; store bez zámkov vyhodí výnimku s názvom kľúča. |
| `preferences.lock_seconds` | — | 10 | Ako dlho sa zámok drží, 1–300 sekúnd. |

## E-mail

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `mail.strategy` | — | leading | leading: prvá udalosť odošle e-mail, ďalšie v okne sa doň zlúčia. trailing: jeden e-mail po skončení okna s konečným počtom. |
| `mail.minimal_for_sensitive` | — | true | Subjekty, ktoré druh označí ako sensitive(), dostanú len e-mail s nadpisom a odkazom. |
| `mail.address_resolver` | — | null | Trieda ResolvesMailAddress, ktorá určuje adresu každého e-mailu — typovaných aj súhrnov. null smeruje cez príjemcu. |
| `mail.preferences_url` | `NOTIFICATIONS_PREFERENCES_URL` | null | URL alebo názov route pre odkaz „spravovať notifikácie“ v pätičke. |
| `mail.max_attempts` | — | 3 | Počet pokusov o odoslanie e-mailu aj súhrnu, 1–20. |
| `mail.backoff` | — | \[60, 300, 900\] | Sekundy medzi pokusmi — neprázdny zoznam kladných celých čísel. |
| `mail.lease` | — | PT10M | E-mail prevzatý na odoslanie dlhšie, než je táto doba, sa označí ako zlyhaný a nikdy sa nepošle znova (najviac raz). |

## Tiché hodiny a časové pásmo

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `quiet_hours.enabled` | — | true | Globálny prepínač. |
| `quiet_hours.default` | — | null | Tiché hodiny používateľov bez vlastných, napr. \['start' => '22:00', 'end' => '07:00'\]; rovnaké časy vyhodia výnimku. |
| `timezone.resolver` | — | DefaultTimezoneResolver::class | Trieda ResolvesTimezone. |
| `timezone.attribute` | — | timezone | Atribút príjemcu s časovým pásmom IANA; prázdna hodnota ho vypne. |

## Súhrny

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `digest.default` | — | off | off, daily alebo weekly — frekvencia používateľov bez vlastnej preferencie. |
| `digest.time` | — | 08:00 | Miestny čas HH:MM. |
| `digest.weekly_day` | — | monday | Deň týždenného súhrnu, monday–sunday. |
| `digest.max_items` | — | 50 | Riadky v jednom súhrne, 1–1000; zvyšok je „a :count ďalších položiek v schránke“. |
| `digest.lease` | — | PT15M | Súhrn, ktorý sa po tejto dobe stále odosiela, zlyhá aj so svojimi položkami. |

## Pripomienky

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `reminders.max_lateness` | — | P1D | Pripomienka oneskorená viac než o túto dobu (po výpadku), ktorej dátum už prešiel, sa preskočí. |
| `reminders.batch` | — | 500 | Splatné riadky odoslané za jeden sweep, 1–10000. |
| `reminders.lease` | — | PT10M | Riadok, ktorý sa po tejto dobe stále odosiela, sa vráti do stavu pending; opakované odoslanie nič nepošle dvakrát. |

## Notifikácie iných balíkov

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `interop.map` | — | \[\] | Trieda notifikácie => kľúč jedného z vašich druhov. |
| `interop.suppress` | — | \[\] | Zoznam tried (všetky kanály) alebo trieda => zoznam kanálov. |
| `interop.database` | — | redirect | Mapovaný kanál database: redirect (do schránky), keep alebo both. |
| `interop.hold` | — | true | Podrží mapované e-maily počas tichých hodín. |
| `interop.notifiables` | — | \[\] | Ďalšie triedy príjemcov; modely s ReceivesNotifications sa rátajú vždy. |

## JSON API a resources

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `routes.enabled` | `NOTIFICATIONS_ROUTES_ENABLED` | off | Sprístupní JSON API — vypnuté, kým ho nezapnete. |
| `routes.prefix` | — | notifications | Prefix URI; lomky na okrajoch sa odstránia. Názvy route začínajú na notifications. |
| `routes.middleware` | — | \['api'\] | Middleware každého endpointu. |
| `routes.auth_middleware` | — | \['auth'\] | Autentifikačné middleware, napr. \['auth:sanctum'\]. Prázdny zoznam sa rešpektuje — controllery bez používateľa aj tak odpovedia 401. |
| `resources.actor` | — | NotificationActorResource::class | JsonResource, cez ktorý sa vykreslí aktér položky; dostane model aktéra. |
| `resources.subject` | — | NotificationSubjectResource::class | Dostane model subjektu. |
| `resources.context` | — | NotificationContextResource::class | Dostane ContextReference (kľúč, popis, morph typ a id). Prázdna hodnota alebo null = predvolené; čokoľvek, čo nie je inštanciovateľný potomok JsonResource, vyhodí výnimku s názvom kľúča. |

## Čistenie

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `prune.inbox_after` | — | P180D | Prečítané a archivované (alebo zmazané) položky schránky staršie než táto doba. |
| `prune.deliveries_after` | — | P30D | Ukončené doručenia. |
| `prune.digest_runs_after` | — | P90D | Dokončené súhrny bez živej položky. |
| `prune.reminders_after` | — | P90D | Ukončené pripomienky bez čakajúcej či odosielanej eskalácie. Každá doba čistenia je aspoň hodina. |

## Prostredie

```bash
NOTIFICATIONS_KEY_TYPE=bigint
NOTIFICATIONS_SUBJECT_KEY_TYPE=
NOTIFICATIONS_CONTEXT_KEY_TYPE=
NOTIFICATIONS_PRIMARY_KEY_TYPE=bigint
NOTIFICATIONS_QUEUE_ENABLED=true
NOTIFICATIONS_QUEUE_CONNECTION=
NOTIFICATIONS_QUEUE_NAME=
NOTIFICATIONS_INBOX_RECHECK=false
NOTIFICATIONS_LOCK_STORE=redis
NOTIFICATIONS_PREFERENCES_URL=settings.notifications
NOTIFICATIONS_ROUTES_ENABLED=on
```

V phpunit.xml píšte on/off (alebo 1/0): PHPUnit zmení false na prázdny reťazec, čo znamená „nenastavené“.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/notifications-for-laravel.md)
