Kanály doručenia
Každého príjemcu spracuje job z campaigns.process-recipient-job. Balík obsahuje dva — oba bežia vo fronte a oba implementujú Contracts\ProcessesCampaignRecipient:
- Jobs\SendCampaignEmail (predvolený) — odošle obsah kampane ako HTML e-mail.
- Jobs\SendCampaignNotification — doručuje cez notifikačný systém Laravelu, takže tá istá kampaň môže ísť e-mailom, cez SMS aj push.
SendCampaignEmail odošle obsah presne tak, ako je uložený — rovnaké HTML telo pre každého príjemcu, bez šablón pre jednotlivcov — s predmetom a odosielateľom kampane, adresované na meno a adresu príjemcu. Kampaň bez odosielateľa ponechá globálnu adresu a meno mail.from mailera. Úspech označí príjemcu ako spracovaného; každá výnimka sa zachytí a zaznamená ako neúspešný príjemca aj so správou. Pri zrušenej dávke job skončí bez odoslania.
Notifikácie Laravelu
Prepnite job, nastavte campaigns.notification na podtriedu CampaignNotification a určte kanál smerovania:
// config/campaigns.php
'process-recipient-job' => \RoundlyConsulting\Campaigns\Jobs\SendCampaignNotification::class,
'notification' => \App\Notifications\ProductLaunchNotification::class,
'notification-channel' => 'mail',Vaša notifikácia dostane v konštruktore Campaign aj CampaignRecipient — obe ako verejné readonly vlastnosti — takže každá metóda kanála môže vykresliť vlastný obsah:
namespace App\Notifications;
use Illuminate\Notifications\Messages\MailMessage;
use RoundlyConsulting\Campaigns\Notifications\CampaignNotification;
final class ProductLaunchNotification extends CampaignNotification
{
public function via(object $notifiable): array
{
return ['mail'];
}
public function toMail(object $notifiable): MailMessage
{
return (new MailMessage)
->subject($this->campaign->subject)
->greeting('Hello '.$this->recipient->name)
->line($this->campaign->content);
}
}Job nasmeruje on-demand notifiable cez campaigns.notification-channel (option DefaultChannel) na reachableAt príjemcu a odošle vašu notifikáciu. Pre SMS či push nastavte kanál, ktorý máte nainštalovaný — vonage, fcm a pod. — a telefónne kontakty určte cez viaContactType(ContactType::Phone). Ak campaigns.notification nie je nastavené, každý príjemca zlyhá s CampaignException, ktorá chýbajúcu konfiguráciu pomenuje.
Potrebujete kanál, ktorý nie je notifikáciou Laravelu? Napíšte vlastný job — pozrite si časť Vlastné joby doručenia.
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 kryptomienOdoslaní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.