Клиент выбрал услугу, отвлёкся и вернулся вечером. Бот спрашивает имя заново или принимает телефон как ответ на другой вопрос. Такое случается, когда диалог существует только в памяти процесса или следующий шаг определяется последним сообщением без сохранённого состояния.
Опишите маршрут как состояния

У анкеты есть начало, выбор услуги, ввод контакта, подтверждение и завершение. Для каждого этапа нужны допустимые ответы и переходы. Обычный текст, кнопка, возврат и отмена должны иметь определённый смысл. Тогда неожиданное действие не отправит человека в случайный раздел.
Состояние связывайте с конкретным пользователем и нужным контекстом диалога. Если бот работает и в личном чате, и в группе, определите, какие процессы независимы. Ответ одного сотрудника не должен завершать анкету другого из-за общей переменной.
Сохраняйте нужные ответы
Храните этап, выбранные значения, время изменения и версию сценария. Это позволяет продолжить после перезапуска и понять, подходит ли старый черновик текущей анкете. Не сохраняйте лишние сведения только потому, что они присутствуют в событии Telegram.
| Данные диалога | Назначение |
|---|---|
| Текущий этап | Определить допустимый ответ |
| Заполненные поля | Продолжить без повторного ввода |
| Время изменения | Решить, актуален ли черновик |
| Номер подтверждения | Найти уже принятую заявку |
Срок жизни черновика выбирайте по задаче. Расчёт товара и запись на ближайшее время имеют разные условия актуальности. При истечении покажите понятное сообщение и предложите обновить сведения, а не продолжайте незаметно с устаревшими параметрами.
Продумайте возврат и исправление
Возврат к услуге может требовать пересчёта зависимых ответов. Если выбран другой вид работ, прежние параметры не всегда подходят. Укажите, что сохраняется, что сбрасывается и как это объясняется пользователю. Простое уменьшение номера шага не решает эту задачу.
Перед отправкой покажите итог и возможность исправить конкретное поле. Человеку не нужно повторять всю анкету из-за одной цифры. Подтверждение должно относиться к текущей версии ответов, чтобы старое сообщение не отправило прежний вариант.
Проверяйте старые кнопки
Кнопка остаётся в истории чата после перехода дальше. Пользователь способен нажать её снова. Проверяйте связь действия с актуальным состоянием. Если оно устарело, предложите открыть текущий шаг вместо повторного создания заявки.
Два быстрых нажатия тоже не должны запускать два завершения. Для финального действия нужен устойчивый идентификатор и проверка уже принятого результата. Изменение текста кнопки после отправки полезно для интерфейса, но не заменяет серверную защиту.
Испытайте прерванный диалог
Пройдите половину анкеты, перезапустите обработчик и продолжите. Затем измените услугу, нажмите старую кнопку и подтвердите дважды. Проверьте сохранённую заявку, а не только сообщения. После обновления сценария испытайте черновик предыдущей версии.
Команде нужен понятный способ сброса зависшего состояния. Такое действие должно иметь полномочия и историю. Если сотрудник исправляет обращение, важно различать изменение черновика и уже переданную клиентскую заявку.
В QuickLanding можем разработать устойчивый диалог для вашего бота. Для оценки нужны вопросы, зависимости ответов и правила завершения. Проверим возвраты и продолжение после остановки, чтобы пользователь мог закончить задачу без повторного заполнения и неожиданных отправок.
Документация и проверка сведений
Технические сведения сверены с документацией 8 октября 2026 года. Для конкретного подключения проверьте версию сервиса и доступные в вашем окружении возможности.
Материалы по соседним задачам
Коротко о важном
Достаточно помнить последний вопрос?
Не всегда. Нужны ответы, допустимые переходы и актуальность сценария. Последний вопрос сам по себе не описывает незавершённую заявку.
Старые кнопки можно просто скрыть?
Это помогает интерфейсу, но проверка действия нужна на сервере. Повтор или задержанное событие должны обрабатываться по текущему состоянию.
Черновик следует хранить бесконечно?
Нет. Согласуйте срок по задаче и составу данных. При устаревании объясните пользователю, какие сведения нужно обновить.



