Для поддержки Developers Map я собрал Telegram-бота, Mini App и операторский интерфейс. Одна из задач — сохранить состояние обращения, когда запрос повторился или Telegram принял ответ, но программа не получила подтверждение.

Запрос может повториться. Оператор может нажать кнопку ещё раз. Telegram может принять сообщение, а соединение оборвётся прежде, чем наша программа узнает об успехе. Пользователь тем временем откроет вторую заявку в том же чате. Никакого злого умысла не требуется: обычная связь умеет организовать небольшой кризис самостоятельно.

От меню к рабочему процессу

Для Developers Map я собрал Telegram-бота, Mini App и операторский интерфейс поддержки. Это отдельный инструмент рядом с основным сервисом; он не делает меня автором Developers Map и не даёт боту права менять пользовательские аккаунты основной платформы.

Этот экран показывает исходный интерфейс поддержки на подготовленных обращениях. Он помогает увидеть рабочее пространство рядом с ботом, а не только его меню.

Обзор поддержки

Архивный интерфейс · демонстрационные данные

Обзор поддержки
Сохранённый экран проекта · без интерактивного управления

Есть утверждённая база ответов на русском и английском, несколько обращений внутри одного чата и вложения в приватном R2. В этой реализации AI-ответы выключены. Пользователь получает предсказуемую поддержку, а не свободное сочинение модели о работе чужого продукта.

Внутри обращения виден демонстрационный разговор. Можно проверить доступные локальные действия оператора; реальные пользователи Telegram ничего из этого демо не получат.

Разговор по обращению

Архивный интерфейс · демонстрационные данные

Разговор по обращению
Сохранённый экран проекта · без интерактивного управления

Сначала событие, затем действие

Входящие события сохраняются в D1. Очередь и периодический обработчик доводят их до координатора чата на Durable Objects. Затем движок обновляет состояние обращения и записывает исходящее действие в outbox — таблицу подготовленных отправок.

Это позволяет связать изменение заявки с намерением отправить сообщение в одной операции базы. Иначе можно получить удивительный промежуточный мир: сообщение человеку уже ушло, а система всё ещё считает, что ничего не произошло. Или наоборот.

У команд Mini App есть устойчивый идентификатор и проверка версии. Повторный запрос узнаётся, а действие над устаревшим состоянием не должно бесшумно перезаписать новую работу оператора.

Самое интересное состояние — «результат неизвестен»

Если внешняя отправка могла состояться, автоматическое повторение способно создать дубль. Поэтому неопределённый исход не выдаётся за обычную ошибку, которую надо немедленно попробовать ещё раз. В таком случае повтор — отдельное решение оператора с пониманием риска.

Это не обещание математически идеальной доставки. Это способ перестать скрывать неопределённость за зелёным индикатором.

Рабочий экземпляр развёрнут для пилота; полная пользовательская приёмка остаётся отдельным этапом. WhatsApp и почта не становятся подключёнными каналами оттого, что они когда-то появились в плане.

Рабочий экземпляр развёрнут для пилота. В демонстрации можно пройти от списка обращений к разговору оператора; полная пользовательская приёмка ещё не завершена. WhatsApp и почта не подключены, AI-ответы в этой реализации выключены.

Связанные истории: Продуктовая концепция Developers Map.