Как улучшить бота?
Можно существенно сократить количество шагов в боте за счёт использования start-параметра Telegram.
В команду /start можно передавать произвольные значения, например:
https://t.me/some_bot?start=some_value
При этом туда можно зашивать сразу несколько параметров, предварительно закодировав их в Base64.
На бэкенде можно генерировать уникальную ссылку под конкретное резюме (чтобы ссылка была короче и контролируемой), а также при необходимости ограничивать доступ в бота только для нужных пользователей.
Я откликнулся на вакансию python backend, ссылка на моё резюме:
hh.ru/resume/123456789abcdefg
На бэкенде генерируем короткий ключ-значение, например:
qweasd → hh.ru/resume/123456789abcdefg
Также заранее знаем тип вакансии, на которую был отклик, например:
python-dev
Из этих данных формируем структуру, которую сможем декодировать на бэкенде, например:
resume_key=qweasd,job=python-dev
Далее кодируем эту строку в Base64 и передаём её в start-параметр:
resume_key=qweasd,job=python-dev
↓
cmVzdW1lX2tleT1xd2Vhc2Qsam9iPXB5dGhvbi1kZXY=
Итоговая ссылка для пользователя будет выглядеть так:
https://t.me/our_bot?start=cmVzdW1lX2tleT1xd2Vhc2Qsam9iPXB5dGhvbi1kZXY=
Когда пользователь переходит по ссылке и запускает бота, на бэкенде:
-
декодируем start-параметр
-
получаем ключ резюме и тип вакансии
-
по ключу подтягиваем реальную ссылку на резюме
-
заранее знаем, на какую вакансию человек откликнулся.
-
шаг с вводом ссылки на резюме полностью убирается
-
шаг с выбором вакансии не требуется
-
пользователю остаётся только отправить или подтвердить номер телефона (через request_contact).
Дополнительно такое решение позволяет:
-
валидировать вход в бота (работать только с заранее сгенерированными ссылками)
-
ограничивать время жизни ссылки
-
отслеживать источник отклика (HH, LinkedIn, Хабр и т.д.)
-
исключить ошибки при ручном вводе данных
Бот становится короче, быстрее и удобнее для пользователя, а качество и консистентность данных на бэкенде значительно выше.