Нестандартные решения
Как «простая» выдача сертификатов чуть не обернулась техническим кошмаром — и что с этим сделали
Рассказываю, как за неделю до старта отловила 3 фатальных бага и спасла репутацию курса — 0 обращений в поддержку за полгода
Когда «простая настройка бота» превращается в детектив
Владелица школы личных ассистентов пришла с задачей: после окончания курса ученик пишет боту свои ФИО и мгновенно получает готовый сертификат.

Бюджет небольшой, GetCourse пока не нужен. Решили делать на связке Senler + NiftyImages. Я уже работала с этими сервисами, всё казалось предсказуемым.
Но техника решила иначе.

NiftyImages (американский сервис) просто молчал — ни одного ответа от техподдержки.
Техподдержка Senler искренне пыталась помочь, но генерация картинок не в их зоне ответственности. А Telegram на разных устройствах вёл себя так, будто специально хотел сломать нам всю красоту.
Контекст проекта
Ниша: Обучение профессии «Личный ассистент».
Аудитория: Взрослые ученики, многие с телефонами на Android и iOS.
Масштаб: Небольшой поток (до 50 человек), бюджет на стартапе ограничен.
Запрос: «Сделайте дёшево и надёжно. GetCourse пока не нужен, ученики сдают ДЗ в тг».
Моя роль: Полная настройка автовыдачи сертификатов — от выбора сервисов до финальной инструкции для клиента.
Боль: Три сюрприза, которые сломали «простое» решение
Акт 1. Проклятие Android

Первый тест — и сразу странность. На Android в готовом сертификате вместо ФИО — набор иероглифов. На iPhone и компьютере всё идеально.
Техподдержка NiftyImages: полная тишина.
Техподдержка Senler: очень старалась помочь, но проблема на стороне генерации картинок, они бессильны.

Решение-костыль: Я написала для клиента подробную инструкцию: «Ученикам с Android — только скачивать с компьютера». Это спасло первый поток, но внутри меня уже зудело: так оставлять нельзя.
Акт 2. Обрыв ссылки

Спустя пару дней проверяю настройку. Бот присылает ссылку на сертификат. Открываю — а она обрывается ровно после имени:

...?tg_name=Ирина Васильева
(и тишина, фамилии нет в сертификате).

Время: ещё до запуска курса, неделя активных тестов. Клиентка вообще не в курсе проблемы — я сама её нашла.
Дальше — интереснее.
Я поставила в ссылку спецсимвол  %20  (это пробел в URL-кодировке).

И тут случилась шизофрения:
  • Если ученик нажимает на ссылку в сообщении — на сертификате между именем и фамилией красуется %20.
  • Если ученик нажимает на кнопку под тем же сообщением — вместо ФИО вообще встаёт техническая переменная  [tg_name_sert]

И ВСЁ ЭТО — ТОЛЬКО НА iPHONE. На Android и ПК оба варианта работают идеально.
Дальше — интереснее.
Я поставила в ссылку спецсимвол  %20  (это пробел в URL-кодировке).

И тут случилась шизофрения:
  • Если ученик нажимает на ссылку в сообщении — на сертификате между именем и фамилией красуется %20.
  • Если ученик нажимает на кнопку под тем же сообщением — вместо ФИО вообще встаёт техническая переменная  [tg_name_sert]

И ВСЁ ЭТО — ТОЛЬКО НА iPHONE. На Android и ПК оба варианта работают идеально.
Решение: Метод перебора и символ, который всё починил
Стандартные пути отпали. NiftyImages молчит. Senler помочь не может. Я осталась один на один с Telegram, который не дружит с американским сервисом.

Что я сделала:

1.Поняла: корень зла — в параметрах URL.
Telegram по-разному обрабатывает ссылки и кнопки на разных ОС. Надо найти разделитель, который поймут все.

2.Перебрала всё, что можно.
Пробовала  _ , -, /, %20 , двойные пробелы, склеивание без разделителя.
Каждый вариант проваливался на каком-то устройстве.

3.Нашла рабочую формулу: +
В итоге сработал обычный знак плюса:
 ...?tg_name=Ирина+Васильева 

Почему это сработало:
  • Telegram воспринимает + как пробел в URL и не обрывает ссылку.
  • NiftyImages корректно декодирует + обратно в читаемый пробел.
  • Работает одинаково на Android, iOS, ПК, в ссылках и в кнопках.
4.Инструкция для клиента: никакой чёрной магии

Я не просто оставила готового бота.
Клиентке было важно самостоятельно менять даты на сертификате — она переносила потоки и до последнего не знала точных чисел.

Я зашла в Senler, визуально выделила блок с переменной даты, нарисовала понятную схему и записала короткое видео. Теперь она меняет дату за 30 секунд без моей помощи.
Результат: Не только цифры, но и спокойствие
В фактах и цифрах:

✅ 0 технических обращений от учеников за 4 месяца после запуска.
✅ 100% сертификатов приходят с правильными ФИО на любых устройствах.
✅ Бюджет сохранён — не пришлось переезжать на дорогую платформу.

В эмоциях:

Клиентка перестала бояться жалоб.
Раньше каждое уведомление от ученика вызывало стресс: «Опять что-то сломалось?». Теперь она уверена в системе.
«Когда заказ вам отдавала, вообще он казался очень понятным и простым.
А тут столько сюрпризов. Спасибо, вы гений!»
Долгосрочная ценность:

Прошло полгода. Мы списывались. Клиентка прислала скрин — у ученицы не открывается PDF.
Я не сказала: «Расчёт получен, вопросы платные».
Я решила вопрос. Бесплатно. Потому что моя экспертиза — это не только код, это доверие и надёжность.
Технический стек (для тех, кто любит детали)
Платформа бота: Senler (Telegram bot)
Генерация изображений: NiftyImages.com (переменные в URL, кастомные запросы)
Интеграция: Вебхуки, передача данных через параметры строки
Критическое решение: использование символа + вместо пробела в параметре tg_name
Документация: видеоинструкция + мнемосхема в интерфейсе Senler для самостоятельной смены дат.
Заключение: Почему со мной надёжно
Я рассказала эту историю не ради магии символа «плюс».

Я рассказала её, чтобы вы поняли мой подход к работе:

✅ Я сама нахожу проблемы. Клиентка даже не знала, что ссылки обрываются, — я нашла это на стадии тестирования и исправила до запуска.
✅ Я не сдаюсь, когда документация молчит. Техподдержка западного сервиса просто игнорировала запросы. Но это не повод оставлять клиента с костылём.
✅ Я остаюсь на связи. Расчёт получен, проект сдан — но если у клиента случается вопрос через полгода, я не говорю «это платная консультация». Я помогаю. Потому что доверие дороже разовых доработок.

Вам нужен не просто исполнитель, который настроит бота и исчезнет.
Вам нужен специалист, который возьмёт на себя головную боль и будет с вами, даже когда формально проект закрыт.

Первая консультация — бесплатный разбор с рекомендациями.