Files
MAX/README.md
root 7cd3ccf21c MAX bot + n8n: webhook, нормализация, меню, доки, схемы БД
- register_max_webhook.py, fetch_schema.py
- n8n-code-node-max-normalize.js (max_id, callback из callback.user, contact из vcf_info)
- n8n-code-add-menu-buttons.js (меню с callback, request_contact, Главное меню)
- docs: max-webhook, max-curl-http-request, max-api (форматы, кнопки, контакт), clpr vs sprf
- README, SITUATION, схемы sprf_ и clpr_, .gitignore

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 09:23:51 +03:00

4.9 KiB
Raw Blame History

MAX Bot + n8n (СПРФ / Клиент)

Интеграция бота в мессенджере MAX с n8n: webhook, нормализация входящих, отправка сообщений и кнопок, работа с БД (PostgreSQL, схемы sprf_ / clpr_).

Содержимое репозитория

Скрипты

Файл Назначение
register_max_webhook.py Регистрация webhook бота MAX на URL n8n (читает .env: MAX_BOT_TOKEN, N8N_MAX_WORKFLOW, MAX_WEBHOOK_SECRET).
fetch_schema.py Выгрузка структуры таблиц sprf_* из PostgreSQL в sprf_tables_schema.md.

Ноды для n8n (Code node)

Файл Назначение
n8n-code-node-max-normalize.js Нормализация входящего Webhook MAX: один объект с max_id, max_chat_id, answer_text, answer_type (text, command, callback, contact, voice, photo, file и т.д.), callback_id, callback_message_text, contact_payload и др. Личные чаты (dialog); при callback пользователь берётся из callback.user.
n8n-code-add-menu-buttons.js Формирование тела сообщения с меню: текст + inline_keyboard (callback-кнопки, request_contact, кнопка «Главное меню» type message). Выход: message_body для POST /messages.

Документация

Путь Описание
docs/max-webhook.md Настройка Webhook в n8n, регистрация в MAX, отправка ответа (POST /messages), ответ на callback (POST /answers), удаление кнопок.
docs/max-curl-http-request.md Примеры curl и настройка HTTP Request в n8n: отправка сообщения, кнопки, ответ на callback, удаление кнопок.
docs/max-api/ Локальная копия/выжимка MAX Bot API: обзор, методы (messages, updates, subscriptions, answers), объекты (Update, Message, MessageBody, NewMessageBody), форматы текста (markdown/html), кнопки (inline_keyboard: callback, message, link, request_contact и др.), контакт (vcf_info, max_info).
docs/clpr-vs-sprf-schema-diff.md Сравнение структуры таблиц БД с префиксами clpr_ и sprf_.
SITUATION.md Текущая ситуация: что настроено, команды, файлы.

Схемы БД

Файл Описание
sprf_tables_schema.md Структура таблиц с префиксом sprf_ (public).
clpr_tables_schema.md Структура таблиц с префиксом clpr_ (public).

Требования

  • Python 3, зависимости: psycopg2-binary (для fetch_schema).
  • В корне файл .env (не коммитить): MAX_BOT_TOKEN, N8N_MAX_WORKFLOW, MAX_WEBHOOK_SECRET, при необходимости MAX_API_BASE; для выгрузки схемы: PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD.

Быстрый старт

  1. Настроить Webhook в n8n (path = sprf_max, POST), включить воркфлоу.
  2. Выполнить: python3 register_max_webhook.py.
  3. В воркфлоу после Webhook вставить Code node с содержимым n8n-code-node-max-normalize.js.
  4. Ответ пользователю: HTTP Request — POST https://platform-api.max.ru/messages?user_id={{ $json.max_id }}, body из message_body или свой JSON (текст, кнопки — см. docs).

Подробнее: docs/max-webhook.md, docs/max-curl-http-request.md, docs/max-api/04-formats-and-buttons.md.

Ограничения MAX API

  • Редактирование (PUT /messages) и удаление (DELETE /messages) — только для сообщений моложе 24 часов.
  • POST /answers (обновление сообщения с кнопками) — по факту тоже редактирование; при старше 24 ч может не сработать.

Git

Репозиторий инициализирован, первый коммит на ветке main. Remote: origin → Gitea (при необходимости измените URL).

Чтобы отправить код на сервер (после создания репозитория MAX в Gitea при необходимости):

cd /dev/MAX
git push -u origin main

Логин/пароль Gitea запросит при первом push.

Лицензия / конфиденциальность

Скрипты и доки — для внутреннего использования. Не коммитить .env и токены.