---
read_when:
    - การแก้ไขไปป์ไลน์สื่อหรือไฟล์แนบ
summary: กฎการจัดการรูปภาพและสื่อสำหรับการส่ง, Gateway, และการตอบกลับของเอเจนต์
title: การรองรับรูปภาพและสื่อ
x-i18n:
    generated_at: "2026-04-30T10:02:09Z"
    model: gpt-5.5
    provider: openai
    source_hash: 1eb07bc638a755be5597e78c07041a52cfc0297b00d70c5adbfe5f3ad8c1a372
    source_path: nodes/images.md
    workflow: 16
---

# การรองรับรูปภาพและสื่อ (2025-12-05)

ช่องทาง 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

- อินพุต: พาธไฟล์ในเครื่อง **หรือ** URL แบบ HTTP(S)
- โฟลว์: โหลดเข้า Buffer, ตรวจหาชนิดสื่อ และสร้างเพย์โหลดที่ถูกต้อง:
  - **รูปภาพ:** ปรับขนาดและบีบอัดซ้ำเป็น JPEG (ด้านยาวสุด 2048px) โดยตั้งเป้า `channels.whatsapp.mediaMaxMb` (ค่าเริ่มต้น: 50 MB)
  - **เสียง/เสียงพูด/วิดีโอ:** ส่งผ่านได้สูงสุด 16 MB; เสียงถูกส่งเป็นโน้ตเสียง (`ptt: true`)
  - **เอกสาร:** รายการอื่นทั้งหมด สูงสุด 100 MB พร้อมคงชื่อไฟล์ไว้เมื่อมี
- การเล่นแบบ GIF ของ WhatsApp: ส่ง MP4 พร้อม `gifPlayback: true` (CLI: `--gif-playback`) เพื่อให้ไคลเอนต์มือถือวนซ้ำแบบอินไลน์
- การตรวจจับ MIME ให้ความสำคัญกับ magic bytes จากนั้นจึงเป็นส่วนหัว แล้วจึงเป็นนามสกุลไฟล์
- คำบรรยายมาจาก `--message` หรือ `reply.text`; อนุญาตให้คำบรรยายว่างได้
- การบันทึกล็อก: แบบไม่ละเอียดแสดง `↩️`/`✅`; แบบละเอียดรวมขนาดและพาธ/URL ต้นทาง

## ไปป์ไลน์การตอบกลับอัตโนมัติ

- `getReplyFromConfig` ส่งคืน `{ text?, mediaUrl?, mediaUrls? }`
- เมื่อมีสื่อ ผู้ส่งเว็บจะแก้ค่าพาธในเครื่องหรือ URL โดยใช้ไปป์ไลน์เดียวกับ `openclaw message send`
- หากระบุรายการสื่อหลายรายการ จะส่งตามลำดับทีละรายการ

## สื่อขาเข้าไปยังคำสั่ง (Pi)

- เมื่อข้อความเว็บขาเข้ามีสื่อ OpenClaw จะดาวน์โหลดไปยังไฟล์ชั่วคราวและเปิดเผยตัวแปรเทมเพลต:
  - `{{MediaUrl}}` เป็น pseudo-URL สำหรับสื่อขาเข้า
  - `{{MediaPath}}` เป็นพาธชั่วคราวในเครื่องที่เขียนก่อนเรียกใช้คำสั่ง
- เมื่อเปิดใช้ Docker sandbox ต่อเซสชัน สื่อขาเข้าจะถูกคัดลอกเข้าไปในพื้นที่ทำงานของ sandbox และ `MediaPath`/`MediaUrl` จะถูกเขียนใหม่เป็นพาธสัมพัทธ์ เช่น `media/inbound/<filename>`
- การทำความเข้าใจสื่อ (หากกำหนดค่าผ่าน `tools.media.*` หรือ `tools.media.models` ที่ใช้ร่วมกัน) จะทำงานก่อนการทำเทมเพลต และสามารถแทรกบล็อก `[Image]`, `[Audio]` และ `[Video]` ลงใน `Body`
  - เสียงตั้งค่า `{{Transcript}}` และใช้ทรานสคริปต์สำหรับการแยกวิเคราะห์คำสั่ง เพื่อให้คำสั่งแบบ slash ยังทำงานได้
  - คำอธิบายวิดีโอและรูปภาพจะคงข้อความคำบรรยายใดๆ ไว้สำหรับการแยกวิเคราะห์คำสั่ง
  - หากโมเดลรูปภาพหลักที่ใช้งานอยู่รองรับ vision ในตัวอยู่แล้ว OpenClaw จะข้ามบล็อกสรุป `[Image]` และส่งรูปภาพต้นฉบับไปยังโมเดลแทน
- โดยค่าเริ่มต้น จะประมวลผลเฉพาะไฟล์แนบรูปภาพ/เสียง/วิดีโอรายการแรกที่ตรงกันเท่านั้น; ตั้งค่า `tools.media.<cap>.attachments` เพื่อประมวลผลไฟล์แนบหลายรายการ

## ขีดจำกัดและข้อผิดพลาด

**ขีดจำกัดการส่งออกขาออก (การส่งผ่าน WhatsApp web)**

- รูปภาพ: สูงสุด `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`)
- สื่อที่มีขนาดเกินจะข้ามการทำความเข้าใจ แต่การตอบกลับยังคงดำเนินต่อด้วยเนื้อหาต้นฉบับ

## หมายเหตุสำหรับการทดสอบ

- ครอบคลุมโฟลว์การส่งและการตอบกลับสำหรับกรณีรูปภาพ/เสียง/เอกสาร
- ตรวจสอบการบีบอัดซ้ำสำหรับรูปภาพ (ขอบเขตขนาด) และแฟล็กโน้ตเสียงสำหรับเสียง
- ตรวจให้แน่ใจว่าการตอบกลับที่มีหลายสื่อกระจายออกเป็นการส่งตามลำดับ

## ที่เกี่ยวข้อง

- [การจับภาพจากกล้อง](/th/nodes/camera)
- [การทำความเข้าใจสื่อ](/th/nodes/media-understanding)
- [เสียงและโน้ตเสียง](/th/nodes/audio)
