---
read_when:
    - Изменение медиаконвейера или вложений
summary: Правила обработки изображений и медиа для отправки, Gateway и ответов агента
title: Поддержка изображений и медиа
x-i18n:
    generated_at: "2026-06-28T23:09:11Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: eeee181cae2798b7d0f5dbe0331c6b09612755b4d796d98baaeaf6989955def5
    source_path: nodes/images.md
    workflow: 16
---

Канал WhatsApp работает через **Baileys Web**. В этом документе зафиксированы текущие правила обработки медиа для отправки, Gateway и ответов агента.

## Цели

- Отправлять медиа с необязательными подписями через `openclaw message send --media`.
- Разрешить автоответам из веб-входящих включать медиа вместе с текстом.
- Сохранять разумные и предсказуемые ограничения для каждого типа.

## Поверхность CLI

- `openclaw message send --media <path-or-url> [--message <caption>]`
  - `--media` необязателен; подпись может быть пустой для отправок только с медиа.
  - `--dry-run` печатает разрешенную полезную нагрузку; `--json` выводит `{ channel, to, messageId, mediaUrl, caption }`.

## Поведение веб-канала WhatsApp

- Ввод: путь к локальному файлу **или** HTTP(S) URL.
- Поток: загрузить в Buffer, определить тип медиа и собрать правильную полезную нагрузку:
  - **Изображения:** изменить размер и повторно сжать в JPEG (максимальная сторона 2048px) с целевым ограничением `channels.whatsapp.mediaMaxMb` (по умолчанию: 50 MB).
  - **Аудио/голос/видео:** передавать без изменений до 16 MB; аудио отправляется как голосовая заметка (`ptt: true`).
  - **Документы:** все остальное, до 100 MB, с сохранением имени файла, когда оно доступно.
- Воспроизведение в стиле GIF в WhatsApp: отправьте MP4 с `gifPlayback: true` (CLI: `--gif-playback`), чтобы мобильные клиенты зацикливали его прямо в строке.
- Определение MIME предпочитает магические байты, затем заголовки, затем расширение файла.
- Подпись берется из `--message` или `reply.text`; пустая подпись разрешена.
- Логирование: нерасширенный режим показывает `↩️`/`✅`; подробный режим включает размер и исходный путь/URL.

## Конвейер автоответов

- `getReplyFromConfig` возвращает `{ text?, mediaUrl?, mediaUrls? }`.
- Когда медиа присутствует, веб-отправитель разрешает локальные пути или URL через тот же конвейер, что и `openclaw message send`.
- Если предоставлено несколько медиа-элементов, они отправляются последовательно.

## Входящие медиа в команды

- Когда входящие веб-сообщения включают медиа, OpenClaw загружает его во временный файл и предоставляет переменные шаблонов:
  - `{{MediaUrl}}` псевдо-URL для входящего медиа.
  - `{{MediaPath}}` локальный временный путь, записанный перед запуском команды.
- Когда включена Docker-песочница для каждого сеанса, входящее медиа копируется в рабочую область песочницы, а `MediaPath`/`MediaUrl` переписываются в относительный путь вроде `media/inbound/<filename>`.
- Понимание медиа (если настроено через `tools.media.*` или общие `tools.media.models`) выполняется перед шаблонизацией и может вставлять блоки `[Image]`, `[Audio]` и `[Video]` в `Body`.
  - Аудио задает `{{Transcript}}` и использует транскрипт для разбора команд, чтобы slash-команды продолжали работать.
  - Описания видео и изображений сохраняют любой текст подписи для разбора команд.
  - Если активная основная модель изображений уже нативно поддерживает зрение, OpenClaw пропускает сводный блок `[Image]` и вместо этого передает модели исходное изображение.
- По умолчанию обрабатывается только первое подходящее вложение изображения/аудио/видео; задайте `tools.media.<cap>.attachments`, чтобы обрабатывать несколько вложений.

## Ограничения и ошибки

**Ограничения исходящей отправки (веб-отправка WhatsApp)**

- Изображения: до `channels.whatsapp.mediaMaxMb` (по умолчанию: 50 MB) после повторного сжатия.
- Аудио/голос/видео: ограничение 16 MB; документы: ограничение 100 MB.
- Слишком большое или нечитаемое медиа → понятная ошибка в логах, и ответ пропускается.

**Ограничения понимания медиа (транскрипция/описание)**

- Изображение по умолчанию: 10 MB (`tools.media.image.maxBytes`).
- Аудио по умолчанию: 20 MB (`tools.media.audio.maxBytes`).
- Видео по умолчанию: 50 MB (`tools.media.video.maxBytes`).
- Слишком большое медиа пропускает понимание, но ответы все равно проходят с исходным телом.

## Примечания для тестов

- Покрывайте потоки отправки и ответов для случаев с изображениями/аудио/документами.
- Проверяйте повторное сжатие для изображений (граница размера) и флаг голосовой заметки для аудио.
- Убедитесь, что ответы с несколькими медиа расходятся как последовательные отправки.

## Связанные материалы

- [Захват с камеры](/ru/nodes/camera)
- [Понимание медиа](/ru/nodes/media-understanding)
- [Аудио и голосовые заметки](/ru/nodes/audio)
