Зафіксуйте контракт однієї події
- Вхід: тип події, ідентифікатор, користувач, погоджений мінімум полів і час отримання.
- Дія: перевірка прав, пошук обробленої події та збереження стану заявки.
- Вихід: номер заявки, статус зовнішнього обміну та зрозуміла відповідь користувачу.
- Помилка: відповідальний за повтор/відновлення та строк діагностичного запису без зайвих особистих даних.
Оберіть один спосіб отримання подій
getUpdates і webhook — альтернативні способи отримання оновлень. До webhook Telegram надсилає HTTPS POST; update_id допомагає розрізняти повтори. Обирайте за середовищем та експлуатацією, а не назвою мови програмування.
За використання secret_token перевіряйте відповідний вхідний заголовок. Токен бота й секрети зберігайте на сервері окремо від публічних сторінок і журналів. Визначте власників бота, адреси обробника та доступу до середовища.
Офіційне джерело: Telegram Bot API: отримання подій
Перевірте повтор і зовнішній збій
В умовному сценарії подія з тим самим ідентифікатором повертає збережений результат. Інше звернення має власний бізнес-ідентифікатор: однаковий текст не завжди означає дубль. За асинхронної обробки надійно збережіть подію до зовнішнього обміну.
Якщо CRM не відповіла, не повідомляйте «заявку створено в CRM». Запишіть невизначений статус, перевірте результат за ідентифікатором і тоді вирішуйте щодо повтору. HTTP-підтвердження не доводить завершення всього процесу чи отримання відповіді людиною.
Не довіряйте браузеру Mini App
До використання на сервері перевіряйте initData за офіційним алгоритмом Telegram. initDataUnsafe не є підтвердженою особою користувача. Після перевірки застосовуйте власні права: підтвердження особи не дає доступу до чужих заявок.
Суму, статус замовлення й власника запису визначайте серверними даними. Обмежуйте поля погодженим форматом. API-відповідь чи екран оплати не доводить фактичний платіж; підтвердження має надійти з погодженого джерела.
Офіційне джерело: Telegram Mini Apps: перевірка даних
Прийміть запуск за п’ятьма сценаріями
- Коректне нове звернення: збережено одну заявку, номер і стан можна перевірити.
- Повторна подія: немає зайвої заявки або небажаного другого сповіщення.
- Зовнішній збій: видно статус, призначено відповідального й працює погоджений повтор.
- Чужий запис або хибні дані: доступу немає, помилка зрозуміла, секрет не розкрито.
- Перезапуск обробника: заявки та стан обробки збережені; команда знає порядок відновлення.
Обговорити ваш проєкт
Розкажіть про ціль, мови та потрібні функції. Ми погодимо обсяг робіт і наступні кроки.