Реализация автоматических напоминаний о бронировании (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 это реализуется через уникальные job-идентификаторы и проверку статуса в начале выполнения задачи (как в коде выше).
SMS-провайдеры для России
| Провайдер | API | Особенности |
|---|---|---|
| SMSАэро | REST | Дешёвые тарифы, хорошее качество |
| МТС Коммуникатор | REST | Прямые маршруты МТС |
| Twilio | REST | Международная доставка |
| SMSC.ru | REST | Простой API |
Сроки
Email + SMS напоминания с отменой при отмене брони: 3–5 рабочих дней.







