v1.7.0: refactor max_bot to flat structure, add VCF+UserModel+NLP history context, portal pages and proxy fixes
- Refactored max_bot from nested packages to flat module structure - Q2: Extended BotUser model (patronymic, email, org, address, vcf_raw, contact_hash, phone_verified, email_verified, last_interaction, total_conversations, total_tickets) - Q2: VCF parser (FN, N, TEL, EMAIL, ORG, ADR), upsert on re-contact, NLP history context (_get_user_history_context -> YandexGPT) - Q1: Broadcast preview modal with 10s confirmation timer - Q3: CSS var(--white)->var(--bg-card), var(--text)->var(--text-primary) - Q4: bot_settings showNotification(), editable max_bot_id - Q5: Webhook secret passthrough via X-Max-Bot-Api-Secret - Masking sensitive keys, dialog_cleared handler, migrate via _add_column_if_not_exists() - Rate limit (asyncio.sleep 0.5 per 10), dead code removed, conv.intent context in contact.py - Portal pages: bot_consent, bot_kb (edit), bot_settings, bot_test, bot_tickets, portal_settings - Tests: 21/21 passing, added test_yandex_gpt.py, test_email_sender.py - Deploy: deploy_full.sh, schema.sql, seed_knowledge_base.sql
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
Чтобы зарегистрировать URL https://max.aegisone.ru/webhook в качестве вебхука на платформе MAX, необходимо отправить POST-запрос на метод /subscriptions через API. Для этого потребуется токен бота, сам URL и, опционально, дополнительные параметры — типы событий и секретный ключ для проверки подписи.
|
||||
|
||||
Требования к URL вебхука
|
||||
Протокол: только HTTPS. HTTP не поддерживается.
|
||||
|
||||
Порт: только 443. Порт в URL не указывается.
|
||||
|
||||
Сертификат: должен быть выдан доверенным центром сертификации. Самоподписанные сертификаты не поддерживаются.
|
||||
|
||||
Доменное имя в URL должно совпадать с CN (Common Name) или SAN (Subject Alternative Name) сертификата.
|
||||
|
||||
Сервер должен предоставлять полную цепочку сертификатов.
|
||||
|
||||
Параметры запроса
|
||||
При отправке POST-запроса на /subscriptions укажите следующие параметры в теле запроса:
|
||||
|
||||
url (обязательный) — HTTPS-адрес вашего endpoint, например https://max.aegisone.ru/webhook.
|
||||
update_types (необязательный) — массив типов событий, которые хочет получать бот. Полный список типов событий можно найти в документации MAX.
|
||||
maxo.readthedocs.io +1
|
||||
secret (необязательный) — строка от 5 до 256 символов, состоящая из букв (A-Z, a-z), цифр (0-9) и дефиса. Если указать этот параметр, MAX будет добавлять его в заголовок X-Max-Bot-Api-Secret каждого callback-запроса. На сервере можно проверять это значение для верификации запросов.
|
||||
|
||||
Пример запроса
|
||||
|
||||
bash
|
||||
curl -X POST "https://platform-api.max.ru/subscriptions" \
|
||||
-H "Authorization: YOUR_BOT_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"url": "https://max.aegisone.ru/webhook",
|
||||
"update_types": ["message_created", "bot_started"],
|
||||
"secret": "your_secret_key"
|
||||
}'
|
||||
|
||||
В заголовке Authorization передаётся токен бота без префикса Bearer.
|
||||
|
||||
Дополнительные сведения
|
||||
После успешной регистрации вебхука MAX будет отправлять HTTPS POST-запросы на указанный URL при наступлении выбранных событий.
|
||||
Вебхук-эндпоинт должен возвращать HTTP 200 в течение 30 секунд. Любой другой код ответа или превышение тайм-аута считается ошибкой доставки.
|
||||
|
||||
Если доставка не удалась, MAX выполняет до 10 повторных попыток с экспоненциально растущим интервалом. Если в течение 8 часов не получен успешный ответ, бот автоматически отписывается от вебхука.
|
||||
Одновременно можно использовать только один механизм доставки событий: либо вебхук, либо long polling. При регистрации вебхука long polling автоматически отключается.
|
||||
|
||||
Проверка подписки
|
||||
Чтобы убедиться, что подписка прошла успешно, можно отправить GET-запрос на /subscriptions с токеном бота в заголовке. В ответе следует проверить, что указанный URL и параметры (если они задавались) соответствуют ожидаемым.
|
||||
|
||||
Если при регистрации возникает ошибка, стоит проверить корректность токена, JSON-запроса и соответствие URL требованиям (HTTPS на порту 443).
|
||||
Reference in New Issue
Block a user