Частина серії: Бронювання через Telegram: повний гайд від першого «привіт» до підтвердженого запису
Вільно завтра ввечері? — як AI-бот обробляє нечіткий запит на час
Розбір того як AI-бот парсить нечіткі запити про час — "завтра ввечері", "у вихідні" — і що потрібно налаштувати щоб відповідь була точною.
Гайди
Вільно завтра ввечері? — як AI-бот обробляє нечіткий запит на час
Уявімо, клієнт пише в Telegram лазертаг-клубу:
— Вільно завтра ввечері?
Просте питання з погляду людини. Але для бота це три невідомих в одному повідомленні: відносна дата ("завтра"), нечіткий часовий діапазон ("ввечері"), не вказана послуга або кількість людей. Як добре налаштований бот з цим справляється — і де можуть бути проблеми.
Чому "завтра ввечері" — складний запит
У живому діалозі "завтра ввечері" — достатньо. Адміністратор знає яка сьогодні дата, розуміє що "ввечері" — це після 18:00, і без питань відкриває розклад.
Для AI-бота кожен з цих пунктів — окрема задача.
Відносна дата. "Завтра" — це конкретна дата тільки якщо бот знає яке сьогодні число. Технічно бот має доступ до системного часу, але тільки якщо це явно передається в контекст. Частина популярних рішень цього не робить — і бот відповідає "уточніть дату", хоча відповідь очевидна.
Нечіткий час. "Ввечері" може означати 17:00, 18:00, 19:00, 20:00 — залежно від заклadu і культурних норм. Якщо в KB не прописано що "ввечері = після 18:00", бот або уточнює (правильно), або робить довільне припущення (погано).
Відсутня послуга і кількість. Лазертаг-клуб може мати кілька зон, різну місткість, різні цінові пакети. Перевірити "чи вільно завтра ввечері" без розуміння для скількох людей — неможливо точно.
Три невідомих підряд. Якщо бот запитає про кожне окремо — клієнт відчує допит. Якщо зробить правильні припущення — враження магії.
Як AI-бот розбирає запит крок за кроком
Добре налаштований бот проходить кілька кроків послідовно, не обов'язково ставлячи питання на кожному.
Крок 1. Parsing відносної дати.
Бот отримує повідомлення разом із поточним timestamp. "Завтра" перетворюється на конкретну дату: якщо зараз понеділок 10 лютого, "завтра" = вівторок 11 лютого. Жодних уточнень не потрібно.
Крок 2. Визначення часового діапазону.
Бот звертається до своєї бази знань. Якщо в KB є запис виду "ввечері — слоти після 18:00", він застосовує це правило. Якщо ні — бот або уточнює ("о котрій приблизно?"), або відповідає по всьому діапазону і пропонує вибрати.
Крок 3. Уточнення кількості (мінімальне).
Тут бот має зробити вибір: уточнити кількість людей, або відповісти загально і уточнити пізніше. Оптимальна стратегія залежить від бізнесу. Для лазертагу де мінімальна група — 2 особи — бот може відповісти загально і уточнити при бронюванні.
Крок 4. Перевірка доступності.
Якщо є інтеграція з розкладом — бот перевіряє реальні вільні слоти. Якщо інтеграції немає і розклад в KB — бот дає "загальну" відповідь ("ввечері зазвичай вільно, уточніть у адміністратора").
Крок 5. Формулювання відповіді.
Хороша відповідь — не "так, є вільні слоти". Хороша відповідь конкретна і готує до дії:
Завтра ввечері маємо вільні слоти:
— 18:00–19:30
— 19:30–21:00
— 21:00–22:30
На скільки осіб плануєте? Підберемо зону.
Один уточнюючий запит — про кількість. Не три. Решту ми вже обробили без питань.
Коли бот уточнює, а коли відповідає одразу
Є практична евристика, яку варто закласти в логіку промпту:
Якщо є тільки один відкритий слот — відповідь без уточнень:
Завтра ввечері маємо один вільний слот: 19:30–21:00.
Брати? Скажіть на скільки осіб.
Якщо є два-три варіанти — запропонувати всі і попросити вибрати:
Завтра ввечері вільно:
— 18:00
— 20:00
Який зручніший?
Якщо варіантів багато (більше трьох) — задати уточнюючий критерій:
Завтра ввечері є кілька вільних слотів.
Вам зручніше ближче до 18:00 чи ближче до 21:00?
Принцип один: не ставити відкрите питання там, де можна запропонувати варіанти. "Коли вам зручно?" — погано. "Ось що є — який підходить?" — добре.
Про це детальніше — в матеріалі «Деталізація запиту»: коли уточнювати обов'язково, а коли краще зробити припущення.
Не хочеш цього всього налаштовувати руками?
Leadmlyn робить це за тебе — від KB до бронювань. 14 днів trial за $0.99.
СпробуватиІнтеграція з розкладом: що потрібно налаштувати
Тут розрив між "бот відповідає загально" і "бот відповідає точно" — суто технічний.
Без інтеграції з розкладом. Бот знає тільки те, що прописано в KB: "зазвичай є вільні місця ввечері в будні", "вихідні бувають завантажені". Відповіді загальні, клієнт потребує підтвердження у адміністратора. Це краще, ніж нічого — але не замінює реальну перевірку.
З інтеграцією з Google Calendar або внутрішньою системою. Бот отримує реальні дані: які слоти зайняті, які вільні, яка місткість кожного. Відповідь точна. Клієнт може відразу вибрати і підтвердити — без додаткового кроку з адміністратором.
У Leadmlyn інтеграція з розкладом налаштовується через розділ "Підключення". Після підключення бот звертається до календаря при кожному запиті про доступність — і відповідає на основі актуального стану, а не статичного тексту в KB.
Що важливо прописати в KB навіть при наявності інтеграції:
- Визначення "ранкового", "денного", "вечірнього" часу у вашому закладі
- Мінімальна і максимальна кількість осіб для кожного типу послуги
- Особливі умови для певних днів (вихідні, святкові дні — інша сітка)
- Що відповідати коли слотів немає взагалі (не "вибачте, вільного немає", а "на найближчий час все зайнято, ось найближча вільна дата")
Типові помилки і як їх уникнути
Помилка 1: Бот відповідає "зверніться до адміністратора" на просте питання про доступність.
Причина: у KB немає інформації про розклад, і бот виходить на "безпечну" відповідь. Виправлення: або додати в KB статичний розклад ("вільні слоти зазвичай є о 18:00, 19:30, 21:00 у будні"), або підключити реальну інтеграцію.
Помилка 2: Бот запитує дату хоча клієнт написав "завтра".
Причина: поточний timestamp не передається в контекст бота або промпт не вказує як інтерпретувати відносні дати. Виправлення: додати в системний промпт інструкцію: "сьогодні {current_date}, завтра = {tomorrow_date}, розраховуй відносні дати відповідно".
Помилка 3: Бот задає кілька питань підряд.
Уявімо, клієнт пише "вільно у вихідні ввечері для двох?" — бот відповідає: "Уточніть дату. Уточніть час. Уточніть послугу." Це провал. Клієнт дав майже всю інформацію, бот не обробив жодної.
Причина: логіка уточнення не налаштована. Бот питає все підряд замість того щоб обробити те що є і запитати тільки відсутнє. Виправлення: явно прописати в промпті пріоритет питань і заборону задавати більше одного питання за раз.
Помилка 4: Бот вигадує вільні слоти.
Це серйозна помилка, яка трапляється з LLM-ботами без прив'язки до реального розкладу. Бот "знає" що є вечірні слоти і відповідає впевнено — але конкретного слоту не існує. Клієнт приходить і виявляє що все зайнято.
Виправлення: в промпті явна інструкція: "ніколи не підтверджуй конкретний слот якщо у тебе немає реальних даних з календаря. Якщо немає інтеграції — відповідай загально і пропонуй уточнити у адміністратора."
Загальна механіка бронювання через Telegram — у пілларній статті. Конкретні налаштування для вашої ніші — починайте з KB і тестуйте нечіткі запити вручну перед запуском.
"Вільно завтра ввечері?" — в ідеалі це одне-два повідомлення від вільного слоту до підтвердженого бронювання. На практиці це потребує правильних налаштувань: timestamp у контексті, чітких визначень у KB, і інтеграції з реальним розкладом. Без цього бот або уточнює зайве, або відправляє до адміністратора — і клієнт відчуває не автоматизацію, а відсутність сервісу.
Засновник Leadmlyn. Будую AI-менеджерів для leisure-бізнесу в Україні.