Skip to content

replies

github-actions[bot] edited this page Oct 14, 2026 · 1 revision

Автоответы

Эта страница — о том, как автоматически отвечать на сообщения в MAX, когда вы не можете ответить сами: например, коротко написать «отвечу утром» тем, кто пишет после рабочего дня. Прочитав её, вы получите работающий автоответ: правило с вашим текстом, выбор того, кто может получить ответ, способ заранее проверить, что оно ответило бы, ничего не отправляя, и готовые тексты со страницы Черновики и шаблоны ответов.

Несколько слов, которые встретятся ниже:

  • Правило говорит, на какие входящие сообщения реагировать и что делать: ответить, открыть задачу или и то и другое.
  • Шаблон — текст ответа. В нём можно подставить имя отправителя и время.
  • Аудитория — люди и чаты, которым вообще можно отвечать, что бы ни говорило правило.
  • max personal serve — фоновый процесс, который получает новые сообщения и применяет правила.

Кто получает ответ и когда что-то отправляется:

  • Ответ получает каждый, кого выбрали правила, пока вы не ограничите аудиторию. Отвечать только выбранным людям: max personal replies audience --reply listed --allow-people …; исключить кого-то: --deny-people и --deny-chats.
  • Ничего не отправляется, пока вы не включите отправку. Нужно permissions.replies.send allow; ask тоже запрещает отправку, потому что у фонового сервера некого спросить. Новое правило тоже выключено, пока вы его не включите.

Полная справка — команды автоответов.

Создать и включить правило

max personal replies add away
max personal replies edit away --template 'Спасибо, {{ sender.firstName | default: "вам" }}! Отвечу утром.'
max personal replies edit away --outside 09:00-19:00 --days mon-fri --timezone Europe/Madrid
max personal replies edit away --per-chat 1/12h --per-person 1/1d

add создаёт выключенное правило со всеми текущими настройками. Файл <профиль>.replies.json находится рядом с configFile из max config show --json. По умолчанию правила отвечают всем, кого выбрали. Чтобы отвечать только выбранным людям, перечислите их id в MAX через запятую; max personal contacts show <имя> --json показывает id человека в поле id:

max personal replies audience --reply listed --allow-people 1000001

Чтобы отвечать всем, кроме некоторых людей или чатов, оставьте --reply all и запретите их:

max personal replies audience --deny-people 1000002 --deny-chats 1000003

После первой команды в файле:

{
  "audience": {
    "reply": "listed",
    "allow": { "people": ["1000001"], "chats": [] },
    "deny": { "people": [], "chats": [] }
  },
  "rules": [ … ]
}

Имена правил — строчные буквы, цифры и дефис; повторный id отвергается. Правило с действием reply нельзя включить без текста шаблона. Для выключенного правила и действия task пустой текст допустим.

max personal replies test --since-time 7d
max personal replies on away
max personal config set permissions.replies.send allow
max personal serve

replies test читает только сохранённые сообщения: ничего не отправляет, ничего не меняет и не подключается к MAX. Без разрешения отправки сервер молчит. max personal replies off away выключает одно правило.

Редактировать условия и аудиторию

replies edit меняет только переданные поля. Списки через запятую заменяются целиком; пустая строка очищает список. Id остаются строками, включая большие числа.

Поля Опции
Действия --do reply,task — ответ, задача или оба действия
Чаты --kinds dialog,group, --chats, --not-chats
Условия --words, --question / --no-question, --mentions-me / --no-mentions-me
Отправители --people, --not-people, --contacts-only / --no-contacts-only
Ответ --template, --as-reply / --no-as-reply
Лимиты --per-chat, --per-person, например 1/12h
Рабочее время --outside, --days, --timezone, --no-hours

Первое задание времени требует окно, дни и часовой пояс вместе; позднее можно изменить одно поле. --no-hours очищает окно и несовместим с его полями. Перед записью проверяются исходный файл и весь результат. Неверная правка не перезаписывает файл; другие правила, аудитория, порядок правил и история ответов сохраняются.

max personal replies audience показывает общую аудиторию файла. Новый файл — это --reply all: он отвечает любому, кого выбрало правило. --reply listed отвечает только разрешённым людям и чатам. Опции --allow-people, --allow-chats, --deny-people, --deny-chats заменяют соответствующие списки. Запрет побеждает разрешение. При listed с пустым списком никто не получает ответ; команда предупреждает об этом. Действие task открывает локальную задачу и не ограничивается аудиторией ответов.

Шаблоны Liquid и модель

Примеры текстов ответа для частых случаев и когда лучше оставить черновик — на странице Черновики и шаблоны ответов.

Доступны sender.firstName, sender.name, chat.title, chat.kind и now в часовом поясе правила, либо UTC без окна времени. Можно использовать фильтры, например {{ now | date: "%H:%M" }}. Текст входящего сообщения не является переменной шаблона. Неизвестные переменные и фильтры отвергаются; default обрабатывает отсутствующие значения. Чтение файлов из шаблона запрещено, время, память и длина результата ограничены.

Модель может изменить только блок ai; текст вне блока остаётся вашим текстом с обычными подстановками:

Спасибо, {{ sender.firstName | default: "вам" }}!
{% ai %}Коротко подтвердите получение; я отвечу завтра.{% else %}Отвечу завтра.{% endai %}

Тело блока после подстановок — инструкция. Входящий текст передаётся модели отдельно как данные. Её ответ не исполняется как Liquid; слишком длинный ответ или полный повтор входящего текста отвергается. Если провайдер не настроен, нет согласия или вызов не удался, используется else. Без него ответ пропускается с объяснением.

Настройте models.replies.provider (openai или anthropic), точный id модели в models.replies.model и при необходимости models.replies.baseUrl. Общие значения берутся из models.default; provider off выключает назначение. config set и config unset принимают эти ключи, config show показывает источник каждого поля. Старые analysisProvider, analysisModel, analysisBaseUrl продолжают работать для анализа. Ключ хранится через max personal models text key set; для своего сервера имя ключа — его host с портом, и ключ публичного провайдера туда не передаётся.

Согласие на модель отдельно от права отправлять ответы:

max personal replies consents show
max personal replies consents grant
max personal replies consents revoke

grant разрешает передавать входящие данные выбранному провайдеру для всего профиля. replies consents deny с id чата запрещает модель для этого чата; allow с id снимает этот запрет, но не выдаёт согласие на профиль. Запреты сохраняются при grant/revoke. Смена провайдера или endpoint требует нового согласия. Изменение согласия, настроек, правила, аудитории или pause во время вызова проверяется перед отправкой результата.

max personal replies test показывает инструкции и запасной текст без вызова модели. max personal replies test --ai явно разрешает передать сохранённые сообщения настроенной модели с действующим согласием. Это не отправляет ответ в мессенджер и не меняет историю ответов; --ai несовместим с --offline. Старые {firstName}, {name} и model: may-reword читаются с предупреждением: исходный заполненный шаблон остаётся запасным текстом. В новом файле поле model не нужно.

Что правило не трогает

  • Тех, кого аудитория не разрешает.
  • Ваши сообщения, каналы, ботов, сообщения от имени чата.
  • Изменённое сообщение, уже обработанное сообщение и то, что пришло до запуска serve.
  • В группе — сообщение без упоминания вас или ответа вам, если правило не называет группу в chats.

Лимиты perChat и perPerson обязательны. Два автоответчика останавливаются на первом лимите.

max personal replies pause немедленно останавливает все правила, resume отменяет паузу; перезапуск не нужен. status показывает разрешение отправки, включённые правила и аудиторию. max personal sends list показывает отправленные ответы с пометкой правила.

Clone this wiki locally