Файлы и вложения
Отправляйте и сохраняйте файлы WhatsApp, расшифровывайте голосовые и проверяйте архив вложений.
Используйте эту страницу, когда вам нужно отправить фотографию или документ, сохранить отправленный кем-то файл, прослушать голосовую заметку в виде текста или найти сообщение по тексту внутри файла. Вы узнаете, что отправляет wa, что он сохраняет, что он может получить позже, а что нет.
Несколько слов на этой странице:
- Отправка доставляет файл в чат. При загрузке байты файла сохраняются на этом компьютере. Чтение (извлечение) позволяет получить текст внутри сохраненного файла. Это отдельные шаги: скачанный скан остаётся картинкой, пока кто-то его не прочитает.
- Ключи файла — это то, что нужно WhatsApp для повторного получения файла: где он находится и как его расшифровать. Их хранит локальное хранилище, а не сам файл.
- Индекс поиска сохраняет текст каждого прочитанного файла рядом с его сообщением. Поиск по
content:находит сообщение по этому тексту.
Что можно сделать
| Задача | Команда |
|---|---|
| Отправьте файл, фотографию, видео или голосовую заметку | wa personal messages send --file, --photo, --voice |
| Сохранение файлов сообщения или всего чата | wa personal messages download |
| Отправить сохраненное сообщение еще раз, включая файл | wa personal messages forward |
| Прослушать голосовую заметку в виде текста | wa personal messages transcribe |
| Посмотрите файлы, которые известны локальному хранилищу и которым еще нужен текст | wa personal attachments list |
| Читать текст из сохраненных файлов в индекс поиска | wa personal attachments extract |
| Сохраняйте текст, который ваш агент прочитал на скане или фотографии | wa personal attachments update |
| Найти сообщение по файлу | wa personal search messages 'has:file', 'content:…' |
Что вы можете отправить
Сообщение содержит один файл, а текст становится подписью к нему. --photo и видео --file вместе составляют один альбом: текст — это подпись к фотографии, а ответ — это сообщение фотографии. В альбоме хранятся только фотографии и видео, поэтому документ рядом с фотографией отклоняется. В локальное хранилище попадает только сообщение о фотографии; Видео есть в чате WhatsApp. Фотография содержит небольшой предварительный просмотр, который показывает чат перед загрузкой (пока не WEBP и не видео). Для отправки требуется явная команда, и она соответствует разрешениям и ограничениям на отправку профиля, как и любая отправка.
| Файл | Вариант | Что получает чат |
|---|---|---|
| Документы, архивы и любые другие файлы | --file | Файл для загрузки с его именем |
| JPG, PNG, WEBP | --photo | Фотография; --file вместо этого отправляет оригинал в виде файла |
| MP4, M4V, МОВ | --file | Воспроизводимое видео; --as-file отправляет его в виде файла для загрузки |
| Запись Ogg Opus | --voice | Только голосовая заметка: без текста и других файлов рядом с ней |
wa personal messages send "Book club" "the agenda" --file agenda.pdf
wa personal messages send "Book club" "us, last week" --photo photo.jpg
wa personal messages send "Book club" --file trip.mp4 --as-file
wa personal messages send "Book club" --voice note.ogg--filename изменяет имя, которое видят другие, а не формат. wa отклоняет файл из папки учетных данных или из своих собственных папок, если вы не добавите --allow-any-file. В WhatsApp нет автоматической или запланированной доставки, а также нет публикаций от имени кого-то другого, поэтому у wa нет --silent, --at-time или --send-as.
Что хранится в локальном хранилище
Для каждой фотографии, видео, голосовой заметки, аудио, документа и наклейки, попадающих в локальное хранилище, wa сохраняет свое имя, размер и тип, а также свои ключи. Ключи никогда не появляются в ответе, в формате JSON, в выводе MCP или в событиях watch. Место сохраняет свои координаты, имя и адрес, а карточка контакта — свое имя и саму карточку, поэтому их можно пересылать. В карточке контакта записан номер телефона, поэтому она остается вместе с ключами и никогда не отображается. Для текущей геопозиции сохраняется только исходная точка.
Два типа сообщений не имеют ключей, поэтому wa не может сохранить или переслать свой файл:
- Фото или видео, которые можно просмотреть один раз. Собственные приложения WhatsApp не сохраняют и не пересылают фотографии, поэтому
waсбрасывает свои ключи, когда приходит. - Сообщение, сохраненное до того, как
waобработал файлы. Оно называет свой файл, но не может его получить.
WhatsApp хранит файл на своих серверах только в течение ограниченного времени. Когда при загрузке обнаруживается, что он пропал, wa просит ваш телефон загрузить его еще раз, как это делают собственные приложения WhatsApp, и пытается скачать новую копию. Ваш телефон должен быть подключен к Интернету и на нем все еще должен храниться файл: файл, удаленный с телефона, исчезнет навсегда.
Известное ограничение: старый файл еще не загружается. На проверенных телефонах телефон загружает файл еще раз, но шифрует новую копию с помощью нового ключа, который не отправляется на связанные устройства, поэтому wa не может его прочитать. Загрузка заканчивается media.retry-failed ("телефон снова загрузил этот файл, но новая копия не скачалась") и ничего не сохраняет, а не битый файл. Откройте файл на телефоне или попросите отправителя отправить его еще раз.
Скачать
Идентификатор сообщения 3EB0A1B2C3D4E5F6A7B8 на этой странице выдуман; возьми настоящий от messages list -v.
wa personal messages download "Book club" 3EB0A1B2C3D4E5F6A7B8 --output-dir ~/Downloads --json
wa personal messages download "Book club" --all --output-dir ./book-clubПри загрузке извлекается файл с ключами из локального хранилища; сообщение должно быть там, поэтому оставьте serve включенным. Место, карточка контакта или файл без ключей называется в skipped и для него ничего не сохраняется. Файл, который WhatsApp больше не хранит, снова запрашивается на вашем телефоне, но пока не удается (известное ограничение). У телефона есть около 20 секунд на ответ, поэтому при медленном телефоне дайте команду более длинной --timeout. Хранилище сохраняет адрес новой копии, поэтому при более поздней загрузке и использовании messages forward его не спрашивая снова телефон, также после того, как вы снова привяжете устройство и телефон отправит старый адрес. Если в телефоне больше нет файла, загрузка завершается выходом 6; попросите отправителя отправить его еще раз. --all сохраняет каждый файл чата, сначала самый новый; запустите его еще раз, чтобы продолжить с того места, где он остановился. Пока работает serve, загрузка происходит через его соединение (одно соединение на устройство).
Переслать
wa personal messages forward "Book club" 3EB0A1B2C3D4E5F6A7B8 --to "Ann Lee"При пересылке снова отправляется текст и файл из локального хранилища, помеченные как пересылаемые, либо геопозиция или карточка контакта из хранилища. Ему нужно сообщение в локальном хранилище с ключами для его файла; в противном случае оно отклоняется и ничего не отправляется, и вы пересылаете его по телефону. Место или карточка, сохраненная более старым wa, живое местоположение и сообщение с несколькими карточками контактов отклоняются таким же образом.
Пересылка повторно использует ключи файла и не проверяет, хранит ли файл WhatsApp: проверка будет означать его первую загрузку. Старый файл может попасть к получателю как файл, который не откроется. Для уверенности скачайте его и отправьте как новый файл.
Голосовые заметки в виде текста
wa personal models list kind:audio # the speech models, and which are downloaded
wa personal models download parakeet-v3 # once, about 670 MB
wa personal messages transcribe "Book club" 3EB0A1B2C3D4E5F6A7B8 --localWhatsApp не имеет собственного распознавания речи, поэтому transcribe всегда использует модель на этом компьютере; --local прямо говорит об этом, и --model выбирает один. Голосовая заметка не покидает ваш компьютер. Без загруженной модели команда останавливается с выходом 6 и присваивает имя модели для загрузки.
Читать текст файлов
wa сам читает текстовые слои: обычный текст, текст PDF и DOCX, ODT, ODS, XLSX, PPTX и EPUB. Текст внутри изображения или скана таким образом не читается.
wa personal messages download "Book club" 3EB0A1B2C3D4E5F6A7B8 --output-dir ./files --extract
wa personal attachments extract --chat "Book club" --download --output-dir ./files
wa personal attachments list 'is:needs_text' --json
wa personal search messages 'content:"reading list"'--extract читает файлы, сохраненные этой загрузкой. attachments extract считывает уже сохраненные файлы или с помощью --download сначала сохраняет те, которые еще не сохранены для загрузки. attachments list показывает каждый файл, где он был сохранен и хранится ли его текст, но не сам текст.
Скан или фотография считывается вашим агентом с помощью собственных инструментов машинного зрения. Затем агент сохраняет текст, чтобы поиск нашел его:
wa personal attachments update "Book club" 3EB0A1B2C3D4E5F6A7B8 --text-file scan.txtЧтобы массово читать сканы с помощью API модели, установите models.ocr.provider и models.ocr.model, а затем запустите attachments extract --ocr. Картинки идут к этому провайдеру только с явным --ocr.
Файлы для удаленного агента
Агент на этом компьютере открывает сохраненный путь. Агент на другом компьютере получает байты файла с attachments show, по ограниченному фрагменту за раз, в формате Base64 в формате JSON; --page превращает одну PDF-страницу в изображение с помощью установленного дополнительного пакета @napi-rs/canvas, куда wa может ее загрузить. См. из браузера для подключения такого агента.
Следующий шаг
Найдите сообщение по его файлу с помощью has:file, filename: или content: (поиск), и просмотрите все параметры на странице команд.
Сохранять копии после удаления источника
Для проверенных копий файлов и ежедневного резервного копирования используйте независимый медиа-архив.