Help Desk своими руками: как я сделал тикет-систему, которой сам не пользовался
Откуда вообще возникла эта задача
Я строю сервис для работы с Авито. В процессе выяснилось очевидное: пользователи будут писать. С вопросами, с багами, с "ничего не работает". Нужен инструмент для приёма этих сообщений.
Варианты были простые:
- Купить/найти готовую help desk систему
- Завести отдельный телеграм-аккаунт и принимать там
Но я инди-разработчик. Мне нужно не просто, а как мне нужно. Поэтому я, конечно, пошёл делать своё.
Что я построил
Написал собственную тикет-систему. Ключевая фича — мультиботовость: система принимает на входе несколько Telegram-ботов одновременно и работает с ними параллельно.
Стек получился стандартным для моих проектов:
- Laravel — бэкенд
- Docker — окружение
- Redis + очереди — асинхронная обработка входящих сообщений
Веб-интерфейс сделал, всё работает, деплой в прод — поехали.
Первая версия: костыль, который я сам себе придумал
Изначально у меня в голове была схема: веб-интерфейс открыт отдельным окном, я периодически его обновляю и смотрю новые обращения.
Я сам понимаю, насколько это звучит дико — уже пока это пишу.
Быстро одумался и прикрутил email-уведомления для администратора. Логика простая: если кто-то пишет раз в два дня, а я не сижу в интерфейсе постоянно — пусть письмо придёт на почту. Там ссылка, перехожу, отвечаю.
В таком виде это ушло в прод.
Как это работало на практике
Спустя время пошли обращения. Люди писали о том, что что-то не работает — несмотря на то, что сервис бесплатный, на техподдержку спрос оказался вполне реальный.
И тут я столкнулся с собственным UX-провалом. Процесс обработки одного тикета выглядел так:
- Зайти в почту
- Найти уведомление среди спама
- Перейти по ссылке в тикет-систему
- Разобраться в истории переписки
- Написать ответ через веб-интерфейс
- В мобильной версии это вообще отдельный квест
История сообщений — хорошая штука, это реальный плюс. Но всё остальное — трение на каждом шаге.

Очевидное решение, которое я не увидел сразу
В какой-то момент я задал себе вопрос: а почему всё это не приходит мне прямо в Telegram? Один бот, все входящие — туда. Ответы — обратно через него же.
Ответа "почему нет" не нашлось.
Это было бы в разы удобнее. Никакой почты, никаких переходов, всё в одном мессенджере, который у меня и так открыт постоянно.

Что дальше
Честно — у меня сейчас нет времени переписывать это капитально. Система сделана для себя, и в публичный продукт я её не планирую превращать: слишком много придётся переделывать под чужие сценарии.
Но. Я запускаю новые приложения, и для них мне всё равно нужна нормальная история взаимодействия с пользователями. Поэтому система будет доработана — местами напильником, местами чем-то тяжелее.
Ближайший план: прикрутить Telegram-интеграцию для администратора. Входящие тикеты — в бот, ответы — из бота обратно в систему.
Простое решение, которое надо было сделать с самого начала. Но именно такие вещи и понимаешь только после того, как пройдёшь через неудобный вариант.