이미지 및 미디어 지원 — 2025-12-05
WhatsApp 채널은 Baileys Web을 통해 실행됩니다. 이 문서는 전송, 게이트웨이 및 에이전트 응답에 대한 현재 미디어 처리 규칙을 설명합니다.
목표
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)
agents.defaults.mediaMaxMb(기본 5MB) 목표, 6MB 제한. - 오디오/음성/비디오: 16MB까지 패스스루; 오디오는 음성 메모로 전송됩니다 (
ptt: true). - 문서: 그 외 모든 것, 최대 100MB, 가능한 경우 파일명 유지.
- 이미지: JPEG로 리사이즈 및 재압축 (최대 2048px)
- WhatsApp GIF 스타일 재생:
gifPlayback: true와 함께 MP4를 전송하면 (CLI:--gif-playback) 모바일 클라이언트에서 인라인 루프됩니다. - MIME 감지는 매직 바이트, 헤더, 파일 확장자 순으로 우선합니다.
- 캡션은
--message또는reply.text에서 가져옵니다. 빈 캡션도 허용됩니다. - 로깅: 비상세 모드에서는
↩️/✅를 표시하고, 상세 모드에서는 크기와 소스 경로/URL을 포함합니다.
자동 응답 파이프라인
getReplyFromConfig는{ text?, mediaUrl?, mediaUrls? }를 반환합니다.- 미디어가 있으면, 웹 전송기는
openclaw message send와 동일한 파이프라인을 사용하여 로컬 경로 또는 URL을 해석합니다. - 여러 미디어 항목이 제공되면 순차적으로 전송됩니다.
수신 미디어와 명령어 (Pi)
- 수신 웹 메시지에 미디어가 포함되면, OpenClaw는 임시 파일로 다운로드하고 템플릿 변수를 노출합니다:
{{MediaUrl}}수신 미디어의 의사 URL.{{MediaPath}}명령어 실행 전에 기록된 로컬 임시 경로.
- 세션별 Docker 샌드박스가 활성화되면, 수신 미디어는 샌드박스 워크스페이스에 복사되고
MediaPath/MediaUrl은media/inbound/<filename>과 같은 상대 경로로 재작성됩니다. - 미디어 이해가 구성되면 (
tools.media.*또는 공유tools.media.models통해) 템플릿 처리 전에 실행되며,Body에[Image],[Audio],[Video]블록을 삽입할 수 있습니다.- 오디오는
{{Transcript}}를 설정하고, 슬래시 명령어가 작동하도록 명령어 파싱에 변환된 텍스트를 사용합니다. - 비디오와 이미지 설명은 명령어 파싱을 위해 캡션 텍스트를 보존합니다.
- 오디오는
- 기본적으로 첫 번째로 일치하는 이미지/오디오/비디오 첨부파일만 처리됩니다. 여러 첨부파일을 처리하려면
tools.media.<cap>.attachments를 설정하세요.
제한 및 오류
아웃바운드 전송 제한 (WhatsApp 웹 전송)
- 이미지: 재압축 후 ~6MB 제한.
- 오디오/음성/비디오: 16MB 제한; 문서: 100MB 제한.
- 초과 크기 또는 읽을 수 없는 미디어 → 로그에 명확한 오류가 표시되고 응답이 건너뛰어집니다.
미디어 이해 제한 (텍스트 변환/설명)
- 이미지 기본값: 10MB (
tools.media.image.maxBytes). - 오디오 기본값: 20MB (
tools.media.audio.maxBytes). - 비디오 기본값: 50MB (
tools.media.video.maxBytes). - 초과 크기 미디어는 이해를 건너뛰지만, 원본 본문으로 응답은 계속 진행됩니다.
테스트 참고사항
- 이미지/오디오/문서 경우에 대한 전송 + 응답 흐름을 커버하세요.
- 이미지의 재압축(크기 범위)과 오디오의 음성 메모 플래그를 검증하세요.
- 다중 미디어 응답이 순차 전송으로 분배되는지 확인하세요.