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:26 +03:00
// Code node (Run once for each item)
2026-02-18 18:40:10 +03:00
// Смотрит на answer_text (payload нажатой кнопки). Если "complaint" — экран "Подать жалобу" (текст + Назад).
// Иначе — главное меню (выбор действий + контакт + Главное меню).
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:26 +03:00
return items . map ( item => {
2026-02-18 18:40:10 +03:00
const payload = ( item . json ? . answer _text || '' ) . trim ( ) ;
let text ;
let message _body ;
if ( payload === 'complaint' ) {
// Человек нажал "Подать жалобу" — показываем текст шага и кнопку "Назад"
text = "**Подача жалобы**\n\nО пишите ситуацию и приложите документы, если есть. Мы рассмотрим обращение в кратчайшие сроки.\n\nН а пишите сообщение с описанием или нажмите «Назад», чтобы вернуться в меню." ;
const backRow = [ { type : "callback" , text : "◀️ Назад" , payload : "menu" } ] ;
message _body = {
text ,
format : "markdown" ,
attachments : [
{
type : "inline_keyboard" ,
payload : { buttons : [ backRow ] }
}
]
} ;
return {
json : {
... item . json ,
text ,
message _body ,
screen : "complaint"
}
} ;
}
// Главное меню
text = "В а с давно не было. Выберите, чем хотите заняться:" ;
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:26 +03:00
const buttons = [
{ title : "ℹ ️ О сервисе" , payload : "about" } ,
{ title : "📝 Подать жалобу" , payload : "complaint" } ,
{ title : "📋 Мои обращения" , payload : "my_tickets" } ,
{ title : "💬 Поддержка" , payload : "support" }
] ;
const callbackRows = buttons . map ( b => [ { type : "callback" , text : b . title , payload : b . payload } ] ) ;
const menuButtonRow = [ { type : "message" , text : "📋 Главное меню" } ] ;
const contactButtonRow = [ { type : "request_contact" , text : "📱 Отправить номер телефона" } ] ;
2026-02-18 18:40:10 +03:00
message _body = {
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:26 +03:00
text ,
format : "markdown" ,
attachments : [
{
type : "inline_keyboard" ,
payload : {
buttons : [ ... callbackRows , contactButtonRow , menuButtonRow ]
}
}
]
} ;
return {
json : {
... item . json ,
text ,
buttons ,
2026-02-18 18:40:10 +03:00
message _body ,
screen : "main"
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:26 +03:00
}
} ;
} ) ;