# Ütemezett értesítések és cron-feladat

> Emlékeztetők és utánkövető üzenetek időzített küldése, a szükséges cron-feladat beállítása szerveren vagy WP Crontrollal.

Az ütemezett értesítések nem a foglalás után azonnal, hanem a megadott időpontban mennek ki: emlékeztetőként vagy utánkövető üzenetként. Ehhez a kiszolgáló cron-rendszerének rendszeresen meg kell hívnia az Amelia ütemezőjét, hogy a bővítmény megnézhesse a közelgő vagy lezajlott időpontokat és eseményeket, és kiküldje a megfelelő üzeneteket.

Például ha a **Következő napi emlékeztető** sablont 18:00-ra állítod, a cron-feladat 15 percenként elindítja az Ameliát, és az a beállított időben elküldi az emlékeztetőt, kézi beavatkozás nélkül.

Az ütemezett sablonokat az **Amelia → Értesítések** oldalon látod: a nevük mellett óra ikon áll (például **Következő napi emlékeztető**, **Utánkövetés**, **Születésnapi köszöntő**).

![Az ütemezett értesítés sablonja a Küldés ekkor mezővel](./kepek/ertesitesek-utemezett-sablon.webp)

*Az ütemezett értesítés sablonja a Küldés ekkor mezővel* (https://minta-bolt.hu/wp-admin/admin.php?page=wpamelia-notifications)

A képen a **Következő napi emlékeztető** sablon látszik. A tárgy mellett a **Küldés ekkor** mezőben adod meg a napi időpontot (itt 5:00 du.).

## „Ne küldj emlékeztetőket a kiválasztott időn belül”

Minden ütemezett sablonban van egy **Ne küldj emlékeztetőket a kiválasztott időn belül** kapcsoló. Bekapcsolva megadhatsz egy időtartamot percben, órában vagy napban. Ha a foglalás ezen az időablakon belül történik az időpont vagy az esemény kezdete előtt, az Amelia kihagyja az emlékeztetőt.

## A cron-feladat

Az ütemezett értesítések a hosting környezetétől függnek, mert a cron-folyamat az Ameliától függetlenül fut: a bővítmény csak a parancsot adja. A végrehajtás időzítése és megbízhatósága a kiszolgálón vagy a tárhelyszolgáltatón múlik.

Az ütemezett sablonok alján egy lila információs sáv mutatja a szükséges cron-sort.

![A cron-parancs az ütemezett sablon alján](./kepek/ertesitesek-utemezett-cron.webp)

*A cron-parancs az ütemezett sablon alján* (https://minta-bolt.hu/wp-admin/admin.php?page=wpamelia-notifications)

A parancs ilyen alakú:

```text
*/15 * * * * https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/notifications/scheduled/send
```

Másold ki a parancsot az Amelia beállításaiból, és a `pelda.hu` helyére a saját tartományodnak megfelelő címet használd (a saját oldaladon az Amelia már a helyes címet írja ki). A tárhelyedtől függően más alak is kellhet:

```text
*/15 * * * * wget -q -O - "https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/notifications/scheduled/send"
```

```text
*/15 * * * * /usr/local/bin/php ~/public_html/wp-cron.php --action='wpamelia_api' --call='/notifications/scheduled/send'
```

```text
GET "https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/notifications/scheduled/send" > /dev/null
```

Add hozzá a megfelelő sort a kiszolgáló cron-ütemezőjéhez. Utána az Amelia a háttérfelület használata nélkül feldolgozza az összes emlékeztetőt és utánkövető üzenetet.

## Cron beállítása a WP Crontrol bővítménnyel

Ha nincs hozzáférésed a kiszolgálói cron-feladatokhoz, a WP Crontrol bővítménnyel hozhatsz létre ismétlődő eseményt a WordPressben.

1. Nyisd meg az **Amelia → Értesítések** oldalt, válassz egy ütemezett sablont, és másold ki a cron-parancsból csak a webcímet (a `*/15 * * * *` részt ne).
2. Telepítsd és kapcsold be a WP Crontrol bővítményt.
3. A bővítmény angol nyelvű felületén nyisd meg a **Tools → Cron Events → Cron Schedules** oldalt, és vegyél fel egy 15 perces időközt.
4. Térj vissza a **Cron Events** fülre, és kattints az **Add New** gombra.
5. Válaszd a **PHP Cron event** típust, és a kódmezőbe írd be a következőt, a címet a sajátodra cserélve:

```php
file_get_contents("https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/notifications/scheduled/send");
```

6. Add meg az esemény nevét, a következő futás idejét (néhány perccel a jövőben), és válaszd ki a létrehozott 15 perces ütemezést.
7. Mentsd az eseményt.

Ezután a WordPress 15 percenként meghívja az Amelia ütemezőjét. Nagy forgalmú webhelyen a valódi kiszolgálói cron megbízhatóbb, mint a WP Crontrol.

## Mit kerülj el?

A cron megbízhatósága a kiszolgálón múlik. Győződj meg róla, hogy:

- a tárhelyszolgáltatód engedélyezi a külső cron-feladatokat,
- a kiszolgáló tűzfala nem blokkolja a saját tartományodra irányuló belső HTTP-hívásokat,
- a WordPress cron nincs kikapcsolva, ha a WP Crontrolra támaszkodsz,
- a tartományod HTTPS-e helyesen működik, hogy az ütemező elérhető legyen.

Egyes vezérlőpultok az e-mail küldést is blokkolhatják. Egy WHM/cPanel szerveren például a **Restrict outgoing SMTP** (korábbi nevén SMTP Tweak) beállítás megakadályozza, hogy a WordPress és az Amelia e-mailt küldjön. WHM esetén nyisd meg a **Home → Server Configuration → Tweak Settings** oldalt, keresd meg az SMTP-korlátozást, és kapcsold ki, hogy az ütemezett e-mailek kimenjenek.

Ha az ütemezett értesítések nem mennek ki, a hiba szinte mindig a cron beállításában vagy a tárhely korlátaiban van, nem az Ameliában. Ellenőrizd, hogy a cron-feladat valóban lefut a megadott időközönként, és hogy a kiszolgáló átirányítások vagy tiltások nélkül eléri az ütemező címét.

## Tanácsok

- Próbáld ki az ütemezett értesítést úgy, hogy néhány perccel előre állítasz be egy emlékeztetőt, és megnézed, elindítja-e a cron.
- Ellenőrizd, hogy az ütemező címe hibátlanul betöltődik egy privát böngészőablakban.
- Az emlékeztetők és az utánkövető üzenetek szövege legyen rövid és világos, mert gyakran időérzékenyek.
- Ha a tárhelyszolgáltatód saját cron-rendszert vagy biztonsági szűrőket alkalmaz, nézd meg a tárhely leírását.
- Ne állíts be ütemezett sablont addig, amíg nincs beállított cron-feladat: emlékeztető nem megy ki.
- Ne hagyd a régi emlékeztető-időpontokat, ha megváltozik a nyitvatartásod.
