Реалізація автоматичних нагадувань про бронювання (email/SMS)
Автоматичні нагадування знижують відсоток неявок. Клієнт отримує сповіщення за 24 години та за 2 години до запису — через email або SMS — з деталями та можливістю скасувати або перенести.
Структура системи нагадувань
Booking Created
↓
Schedule Reminders
├── 24h before → Reminder Job (queued)
└── 2h before → Reminder Job (queued)
Reminder Job runs at scheduled time
├── Check: booking still active?
├── Send Email (Mailgun / Postmark)
└── Send SMS (Twilio / SMSAero)
Планування нагадувань при створенні бронювання
// Laravel Observer
class BookingObserver
{
public function created(Booking $booking): void
{
$bookingTime = $booking->starts_at;
// За 24 години
if ($bookingTime->diffInHours(now()) > 24) {
SendBookingReminder::dispatch($booking->id, '24h')
->delay($bookingTime->subHours(24));
}
// За 2 години
if ($bookingTime->diffInHours(now()) > 2) {
SendBookingReminder::dispatch($booking->id, '2h')
->delay($bookingTime->subHours(2));
}
}
}
Email-нагадування
class SendBookingReminder implements ShouldQueue
{
public function handle(): void
{
$booking = Booking::find($this->bookingId);
// Перевіримо, що бронювання все ще активне
if (!$booking || $booking->status !== 'confirmed') {
return;
}
Mail::to($booking->customer_email)->send(
new BookingReminderMail($booking, $this->reminderType)
);
if ($booking->customer_phone && $booking->sms_opt_in) {
$this->sendSms($booking);
}
}
private function sendSms(Booking $booking): void
{
$message = "Нагадування: ваша запис " .
$booking->starts_at->format('d.m о H:i') .
". Скасувати: " . route('bookings.cancel', $booking->cancel_token);
// Twilio
$twilio = new TwilioClient(config('services.twilio.sid'), config('services.twilio.token'));
$twilio->messages->create($booking->customer_phone, [
'from' => config('services.twilio.from'),
'body' => $message,
]);
}
}
Скасування нагадувань
При скасуванні бронювання заплановані завдання повинні бути видалені з черги. У Laravel це реалізується через унікальні ідентифікатори завдань та перевірку статусу на початку виконання завдання (як у коді вище).
SMS-провайдери для Росії
| Провайдер | API | Особливості |
|---|---|---|
| SMSАеро | REST | Дешеві тарифи, гарна якість |
| МТС Комунікатор | REST | Прямі маршрути МТС |
| Twilio | REST | Міжнародна доставка |
| SMSC.ru | REST | Простий API |
Тривалість
Email + SMS нагадування з скасуванням при скасуванні брони: 3–5 робочих днів.







