Меню: экран «Подать жалобу» с кнопкой Назад, ветвление по answer_text
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,23 +1,48 @@
|
|||||||
// Code node (Run once for each item)
|
// Code node (Run once for each item)
|
||||||
// Добавляет text, buttons и готовое тело для MAX (message_body с inline_keyboard, callback).
|
// Смотрит на answer_text (payload нажатой кнопки). Если "complaint" — экран "Подать жалобу" (текст + Назад).
|
||||||
|
// Иначе — главное меню (выбор действий + контакт + Главное меню).
|
||||||
|
|
||||||
return items.map(item => {
|
return items.map(item => {
|
||||||
const text = "Вас давно не было. Выберите, чем хотите заняться:";
|
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 = "Вас давно не было. Выберите, чем хотите заняться:";
|
||||||
const buttons = [
|
const buttons = [
|
||||||
{ title: "ℹ️ О сервисе", payload: "about" },
|
{ title: "ℹ️ О сервисе", payload: "about" },
|
||||||
{ title: "📝 Подать жалобу", payload: "complaint" },
|
{ title: "📝 Подать жалобу", payload: "complaint" },
|
||||||
{ title: "📋 Мои обращения", payload: "my_tickets" },
|
{ title: "📋 Мои обращения", payload: "my_tickets" },
|
||||||
{ title: "💬 Поддержка", payload: "support" }
|
{ title: "💬 Поддержка", payload: "support" }
|
||||||
];
|
];
|
||||||
|
|
||||||
// MAX: каждый ряд — одна кнопка (во всю ширину). Внизу кнопка "Главное меню" (type: message) —
|
|
||||||
// при нажатии бот получит сообщение "/menu" и можно снова показать это меню.
|
|
||||||
const callbackRows = buttons.map(b => [ { type: "callback", text: b.title, payload: b.payload } ]);
|
const callbackRows = buttons.map(b => [ { type: "callback", text: b.title, payload: b.payload } ]);
|
||||||
// Кнопка "Главное меню": type message — при нажатии бот получит этот text.
|
|
||||||
const menuButtonRow = [ { type: "message", text: "📋 Главное меню" } ];
|
const menuButtonRow = [ { type: "message", text: "📋 Главное меню" } ];
|
||||||
// Кнопка "Поделиться контактом": request_contact — MAX запросит телефон, в webhook придёт message_created с контактом (структуру смотри в payload).
|
|
||||||
const contactButtonRow = [ { type: "request_contact", text: "📱 Отправить номер телефона" } ];
|
const contactButtonRow = [ { type: "request_contact", text: "📱 Отправить номер телефона" } ];
|
||||||
const message_body = {
|
message_body = {
|
||||||
text,
|
text,
|
||||||
format: "markdown",
|
format: "markdown",
|
||||||
attachments: [
|
attachments: [
|
||||||
@@ -35,7 +60,8 @@ return items.map(item => {
|
|||||||
...item.json,
|
...item.json,
|
||||||
text,
|
text,
|
||||||
buttons,
|
buttons,
|
||||||
message_body
|
message_body,
|
||||||
|
screen: "main"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user