- 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>
89 lines
3.3 KiB
Markdown
89 lines
3.3 KiB
Markdown
# cURL и настройка HTTP Request ноды (ответ пользователю в MAX)
|
||
|
||
## cURL — отправить сообщение
|
||
|
||
Подставь свой `MAX_BOT_TOKEN` и `max_id` (или `max_chat_id`) получателя:
|
||
|
||
```bash
|
||
curl -X POST "https://platform-api.max.ru/messages?user_id=6200846" \
|
||
-H "Authorization: ВАШ_MAX_BOT_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"text": "Привет! Сообщение получено.", "format": "markdown"}'
|
||
```
|
||
|
||
С `chat_id` вместо `user_id`:
|
||
|
||
```bash
|
||
curl -X POST "https://platform-api.max.ru/messages?chat_id=188573833" \
|
||
-H "Authorization: ВАШ_MAX_BOT_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"text": "Привет!", "format": "markdown"}'
|
||
```
|
||
|
||
---
|
||
|
||
## Как ввести в HTTP Request ноду n8n
|
||
|
||
| Поле | Значение |
|
||
|------|----------|
|
||
| **Method** | `POST` |
|
||
| **URL** | `https://platform-api.max.ru/messages?user_id={{ $json.max_id }}` |
|
||
| **Authentication** | Header Auth → Name: `Authorization`, Value: `ВАШ_MAX_BOT_TOKEN` (или credential) |
|
||
| **Send Headers** | включить, добавить: Name `Content-Type`, Value `application/json` (если нет из Auth) |
|
||
| **Send Body** | Yes |
|
||
| **Body Content Type** | JSON |
|
||
| **Specify Body** | Using JSON |
|
||
| **JSON Body** | `{"text": "Привет! Сообщение получено.", "format": "markdown"}` |
|
||
|
||
Динамический текст из предыдущей ноды:
|
||
|
||
```json
|
||
{
|
||
"text": "{{ $json.answer_text }}",
|
||
"format": "markdown"
|
||
}
|
||
```
|
||
|
||
Или свой ответ из другой ноды:
|
||
|
||
```json
|
||
{
|
||
"text": "{{ $('Твоя нода с ответом').item.json.reply_text }}",
|
||
"format": "markdown"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
Подробнее про форматы текста (markdown/html) и про кнопки (callback, link, message и т.д.) — в **`docs/max-api/04-formats-and-buttons.md`**.
|
||
|
||
---
|
||
|
||
## cURL — ответ на нажатие кнопки (callback)
|
||
|
||
Подставь `callback_id` из нормализованного объекта и токен:
|
||
|
||
```bash
|
||
curl -X POST "https://platform-api.max.ru/answers?callback_id=ВАШ_CALLBACK_ID" \
|
||
-H "Authorization: ВАШ_MAX_BOT_TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"notification": "Нажато!"}'
|
||
```
|
||
|
||
В n8n (только когда есть `callback_id`):
|
||
|
||
- **URL:** `https://platform-api.max.ru/answers?callback_id={{ $json.callback_id }}`
|
||
- **Method:** POST
|
||
- **Headers:** те же
|
||
- **Body:** `{"notification": "Нажато!"}` или `{"message": {"text": "Новый текст сообщения", "format": "markdown"}}`
|
||
|
||
### Удалить кнопки после нажатия
|
||
|
||
Обнови сообщение тем же текстом, но **без** `attachments` — клавиатура исчезнет:
|
||
|
||
- **URL:** `https://platform-api.max.ru/answers?callback_id={{ $json.callback_id }}`
|
||
- **Method:** POST
|
||
- **Body:** `{"message": {"text": "{{ $json.callback_message_text }}", "format": "markdown"}}`
|
||
|
||
Текст бери из нормализатора: после callback там есть **`callback_message_text`** (и при желании **`callback_message_mid`**). В body передаётся только `text` и `format`, без `attachments` — MAX перерисует сообщение без кнопок.
|