# ข้อผิดพลาดในการอัปโหลดผ่าน MCP ของ PlayDrop และวิธีกู้คืน

รูปแบบข้อผิดพลาดที่เครื่องมือ MCP ของ PlayDrop ส่งคืน เมื่อไรควรลองใหม่ด้วย requestId เดิม และวิธีแก้รหัสข้อผิดพลาดที่พบบ่อย

Source: https://www.playdrop.ai/th/create/learn/errors

ข้อผิดพลาดทุกรายการจากเครื่องมือ MCP ของ PlayDrop จะคงรหัส `error` ที่ไม่เปลี่ยนแปลงและรายละเอียดต่างๆ เช่น `path`, `field`, `name` หรือ `expected` ไว้ และเพิ่ม:

- `message`: อะไรผิดพลาด เป็นภาษาที่เข้าใจง่าย
- `retryable`: เป็น `true` เฉพาะเมื่อการเรียกแบบเดิมทุกประการอาจสำเร็จในภายหลัง
- `nextAction`: วิธีแก้ไขที่ชัดเจน
- `docsUrl` และ `documentationTopic`: คู่มือที่ควรอ่าน ซึ่งเปิดได้ด้วย `get_documentation` เช่นกัน

## ลองใหม่หรือแก้ไข

- **ข้อผิดพลาดที่ลองใหม่ได้** (ความล้มเหลวชั่วคราว การจำกัดอัตรา ขั้นตอนทำการอัปโหลดให้เสร็จที่ถูกขัดจังหวะ): รอสักครู่แล้วลองเรียกแบบเดิมทุกประการด้วย `requestId` เดิม อย่าสร้างเวอร์ชันใหม่
- **ไม่ได้รับคำตอบ:** คุณไม่รู้ว่าสำเร็จหรือไม่ จึงให้ลองส่งเนื้อหาเดิมทุกประการด้วย `requestId` เดิม PlayDrop จะส่งคืนผลลัพธ์เดิมแทนที่จะเผยแพร่ซ้ำสองครั้ง
- **ข้อมูลถูกปฏิเสธ:** แก้ฟิลด์หรือไฟล์ที่ระบุก่อน เนื้อหาที่เปลี่ยนแล้วต้องใช้ `requestId` ใหม่ การลองใหม่ด้วยข้อมูลที่ไม่เปลี่ยนจะล้มเหลวอีก
- **ผลลัพธ์ของแพ็กเกจที่สำเร็จบางส่วน:** รายการที่เสร็จแล้วยังคงเผยแพร่อยู่ คำขอที่แก้ไขแล้วควรมีเฉพาะงานที่ยังไม่เสร็จ
- **`send_feedback`** ไม่มีคีย์สำหรับลองใหม่ หลังความล้มเหลวที่ไม่ชัดเจน อย่าส่งซ้ำโดยอัตโนมัติ: ข้อความแรกอาจส่งถึงแล้ว

## ข้อผิดพลาดที่พบบ่อย

| รหัส | สิ่งที่ต้องทำ |
|---|---|
| `advanced_upload_required` | เกมใช้ SDK เซิร์ฟเวอร์ ไฟล์แยก หรือฟิลด์ที่ใช้ได้เฉพาะแพ็กเกจ คงฟีเจอร์เหล่านั้นไว้และอัปโหลดเป็น[แพ็กเกจ](https://www.playdrop.ai/th/create/learn/packaging)ด้วย `requestId` ใหม่ |
| `invalid_html_file` | HTML ว่างเปล่าหรือใหญ่กว่า 10 MiB ใช้แพ็กเกจสำหรับเกมที่ใหญ่กว่านี้ |
| `visibility_required` | แอปในแพ็กเกจไม่มีการมองเห็น ตั้ง `visibility` ในคำขอหรือในแอป: `public`, `unlisted` หรือ `private` |
| `invalid_visibility` | ใช้ `public`, `unlisted` หรือ `private` |
| `visibility_conflict` | คำขอและรายการแอปขอการมองเห็นต่างกัน ระบุเพียงค่าเดียว เพื่อไม่ให้กลุ่มผู้ชมถูกเปลี่ยนโดยไม่รู้ตัว |
| `expected_current_version_required` | เพิ่มชื่อของทุกแอปลงใน `expectedCurrentVersion`: `null` สำหรับเกมใหม่ หรือเวอร์ชันปัจจุบันจาก `list_games` |
| `current_version_changed` | มีคนเผยแพร่เวอร์ชันที่ใหม่กว่าแล้ว เรียก `list_games` ยืนยันเกมเป้าหมายกับผู้ใช้ของคุณ แล้วอัปโหลดด้วยเวอร์ชันปัจจุบันและ `requestId` ใหม่ |
| `game_exists_use_id`, `game_not_found` | เรียก `list_games` ใช้ `gameId` หรือชื่อที่ถูกต้อง และคงชื่อเดิมของเกมไว้ |
| `request_id_content_conflict` | `requestId` นี้เป็นของเนื้อหาอื่นแล้ว ใช้ ID ใหม่ หรือส่งเนื้อหาเดิมซ้ำโดยไม่เปลี่ยนแปลง |
| `catalogue_file_missing_or_invalid` | มีไฟล์ที่ยังไม่ได้อัปโหลดหรือไบต์ไม่ตรงกัน เรียก `prepare_catalogue_upload` อีกครั้งด้วยข้อมูลเดิมทุกประการและ `requestId` เดิม PUT ไฟล์ที่ขาด แล้วเรียกขั้นตอนทำให้เสร็จอีกครั้ง |
| `catalogue_files_unclaimed` | มีไฟล์ที่ไม่ได้ใช้ในรายการแคตตาล็อกใดเลย ให้อ้างอิงไฟล์เหล่านั้น กำหนด `role: "LISTING"` และ `app` ให้ไฟล์ของหน้าเกม หรือลบออก |
| `entry_point_missing` | `apps[].file` ระบุไฟล์ที่ไม่ได้อัปโหลด หากไม่มี `file` รายการจะใช้ค่าเริ่มต้นเป็น `<name>.html` |
| `archive_catalogue_required` | วาง catalogue.json ไว้ที่รากของ ZIP ไม่ใช่ในโฟลเดอร์ |
| `archive_too_large` | หากใหญ่กว่า 20 MiB เมื่อบีบอัด: แตกไฟล์แล้วอัปโหลดเป็นโฟลเดอร์ทีละไฟล์ผ่าน URL แบบมีลายเซ็น ซึ่งรองรับได้สูงสุด 50 MiB ต่อไฟล์ หากใหญ่กว่า 200 MiB เมื่อแตกไฟล์: ตัวเกมใหญ่เกินไปสำหรับหนึ่งเวอร์ชัน ให้บีบอัดหรือลบแอสเซ็ตออก |
| `procedural_module_validation_unavailable` | โมเดล 3D แบบโพรซีเจอรัลหรือแบบรูปแบบที่กำหนดเองที่รันโค้ดได้ อัปโหลดผ่าน MCP ไม่ได้ ให้แปลงเป็นไฟล์สำเร็จรูปหรืออ้างอิงแอสเซ็ตที่เผยแพร่แล้ว |
| `upload_expired`, `upload_cancelled` | เตรียมการอัปโหลดอีกครั้งด้วย `requestId` ใหม่ และทำให้เสร็จภายใน 30 นาที |
| `invalid_token`, `insufficient_scope` | เชื่อมต่อบัญชี PlayDrop ในแอป AI ของคุณอีกครั้งและอนุญาตการเผยแพร่ |

ข้อผิดพลาดของฟิลด์ในแคตตาล็อก เช่น แท็กไม่ถูกต้อง การประกาศคอนโทรลเลอร์ หรือโหมดผู้เล่น จะชี้ไปที่[เอกสารอ้างอิง catalogue.json](https://www.playdrop.ai/th/create/learn/catalogue-json)

## การเชื่อมต่อและไฟล์แนบ

- **การเชื่อมต่อหมดอายุ:** การเชื่อมต่อที่ใช้งานอยู่จะต่ออายุเองระหว่างใช้งาน การเชื่อมต่อที่ไม่ได้ใช้ 30 วัน หรือที่หมดอายุไปก่อนมีกฎนี้ ต้องเชื่อมต่อใหม่
- **ไฟล์แนบถูกปฏิเสธ:** PlayDrop ดาวน์โหลดไฟล์เฉพาะจากบริการไฟล์แนบของโฮสต์เองเท่านั้น นี่เป็นข้อจำกัดของผู้ให้บริการไฟล์ ไม่ใช่ข้อจำกัดตามประเทศ ส่งไฟล์แนบที่โฮสต์ระบุไว้ หรืออัปโหลดไฟล์ด้วย URL แบบมีลายเซ็น ห้ามแต่ง `download_url` หรือ `file_id` ขึ้นเองเด็ดขาด

## รายงานปัญหา

หากข้อผิดพลาดดูไม่ถูกต้อง หรือขั้นตอนถัดไปที่แนะนำใช้ไม่ได้ ให้เรียก `send_feedback` หนึ่งครั้ง พร้อมชื่อเครื่องมือ รหัสข้อผิดพลาด สิ่งที่คุณส่ง (ไม่รวมโทเค็นหรือ URL แบบมีลายเซ็น) และสิ่งที่คุณคาดไว้

## คู่มือที่เกี่ยวข้อง

- [เผยแพร่จากแอป AI ของคุณ](https://www.playdrop.ai/th/create/learn/mcp-publishing): วิธีที่เอเจนต์ AI เผยแพร่ไปยัง PlayDrop ผ่าน MCP: เส้นทางแบบง่ายและแบบแพ็กเกจ การทดสอบแบบส่วนตัว publish_game_version การอัปเดต ขีดจำกัด และการกู้คืน
- [การจัดแพ็กเกจและ .play](https://www.playdrop.ai/th/create/learn/packaging): จัดโฟลเดอร์เกมที่บิลด์แล้ว ZIP หรือ .play ให้มี catalogue.json ที่ราก ประกาศสื่อของหน้าเกมและเซิร์ฟเวอร์ แล้วอัปโหลดด้วย prepare_catalogue_upload
- [การแก้ไขปัญหา](https://www.playdrop.ai/th/create/learn/troubleshooting): แก้ปัญหางานสร้างที่ติดขัด พรอมต์ที่ไม่ชัด รางวัลหรือรายได้ที่ไม่มา ขีดจำกัดเครดิต และปัญหาการนำเข้าเกมเว็บ
