Nodes and media
Підтримка зображень і медіа
Канал 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 Web
- Вхід: локальний шлях до файлу або HTTP(S) URL.
- Потік: завантажити в Buffer, визначити тип медіа й побудувати правильне корисне навантаження:
- Зображення: змінити розмір і повторно стиснути в JPEG (максимальна сторона 2048px) з орієнтиром на
channels.whatsapp.mediaMaxMb(типово: 50 МБ). - Аудіо/голос/відео: передавати без змін до 16 МБ; аудіо надсилається як голосова нотатка (
ptt: true). - Документи: усе інше, до 100 МБ, зі збереженням імені файлу, коли воно доступне.
- Зображення: змінити розмір і повторно стиснути в JPEG (максимальна сторона 2048px) з орієнтиром на
- Відтворення у стилі GIF у WhatsApp: надішліть MP4 з
gifPlayback: true(CLI:--gif-playback), щоб мобільні клієнти зациклювали його вбудовано. - Визначення MIME надає перевагу magic bytes, потім заголовкам, потім розширенню файлу.
- Підпис береться з
--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 Web)
- Зображення: до
channels.whatsapp.mediaMaxMb(типово: 50 МБ) після повторного стискання. - Аудіо/голос/відео: обмеження 16 МБ; документи: обмеження 100 МБ.
- Завеликі або нечитабельні медіа → зрозуміла помилка в журналах, а відповідь пропускається.
Обмеження розуміння медіа (транскрипція/опис)
- Типово для зображення: 10 МБ (
tools.media.image.maxBytes). - Типово для аудіо: 20 МБ (
tools.media.audio.maxBytes). - Типово для відео: 50 МБ (
tools.media.video.maxBytes). - Для завеликих медіа розуміння пропускається, але відповіді все одно проходять з оригінальним тілом.
Нотатки для тестів
- Покрийте потоки надсилання й відповіді для випадків із зображенням/аудіо/документом.
- Перевірте повторне стискання для зображень (межу розміру) і прапорець голосової нотатки для аудіо.
- Переконайтеся, що відповіді з кількома медіа розгортаються в послідовні надсилання.
Пов’язане
Was this useful?