Разработка AI-системы автообзвона клиентов для напоминания о записи
Напоминания о записи снижают no-show rate с 20–35% до 5–10%. Для клиник, салонов, автосервисов это прямая экономия: незаполненный слот = потерянная выручка. AI-бот делает это автоматически без нагрузки на администраторов.
Логика напоминаний
REMINDER_SCHEDULE = {
"medical_appointment": [
{"offset": timedelta(days=2), "message": "long_reminder"},
{"offset": timedelta(hours=4), "message": "day_reminder"},
{"offset": timedelta(hours=2), "message": "final_reminder"},
],
"beauty_salon": [
{"offset": timedelta(days=1), "message": "long_reminder"},
{"offset": timedelta(hours=3), "message": "final_reminder"},
],
"service_center": [
{"offset": timedelta(hours=24), "message": "long_reminder"},
{"offset": timedelta(hours=2), "message": "final_reminder"},
]
}
async def schedule_reminders(appointment: dict):
schedule = REMINDER_SCHEDULE.get(
appointment["type"], REMINDER_SCHEDULE["beauty_salon"]
)
appointment_dt = datetime.fromisoformat(appointment["datetime"])
for reminder in schedule:
reminder_time = appointment_dt - reminder["offset"]
if reminder_time > datetime.utcnow():
await task_queue.schedule(
task="send_appointment_reminder",
args={
"appointment_id": appointment["id"],
"message_type": reminder["message"]
},
eta=reminder_time
)
Сценарий напоминания
REMINDER_SCRIPTS = {
"long_reminder": """
Добрый день, {customer_name}!
Напоминаем, что вы записаны к {specialist_name}
послезавтра, {appointment_date} в {appointment_time}.
Адрес: {address}.
Вы планируете посетить нас? Нажмите 1 для подтверждения, 2 — если хотите перенести.
""",
"final_reminder": """
Здравствуйте, {customer_name}!
Напоминаем о вашем визите сегодня в {appointment_time} к {specialist_name}.
Ждём вас по адресу {address}. Если не сможете прийти — пожалуйста, сообщите заранее.
"""
}
Обработка ответа на напоминание
async def handle_reminder_response(
appointment_id: str,
user_response: str
) -> str:
intent = await classify_intent(user_response)
if intent == "confirm":
await calendar.confirm(appointment_id)
return "Отлично! Ждём вас. До свидания!"
elif intent == "reschedule":
slots = await calendar.get_available_slots(
specialist_id=appointment["specialist_id"],
days_ahead=7
)
return f"Ближайшие доступные времена: {format_slots(slots[:3])}. Какое удобно?"
elif intent == "cancel":
await calendar.cancel(appointment_id)
await notify_specialist(appointment_id)
return "Запись отменена. Будем рады видеть вас в другой раз!"
return "Извините, не поняла. Скажите 'подтверждаю' или 'хочу перенести'."
Экономия для клиники
- 100 записей/день × 25% no-show = 25 незаполненных слотов
- 1 слот = 2000 руб. выручки
- Снижение no-show до 8% = +17 слотов × 2000 = 34 000 руб./день
Сроки: система напоминаний с одним типом записи — 2 недели. Мультиспециализированная — 4–6 недель.







