ข้ามไปยังเนื้อหา
Preview: API ยังอยู่ระหว่างเปิดใช้ รายละเอียดอาจเปลี่ยนก่อนเปิดจริง ดูความคืบหน้าที่ บันทึกการเปลี่ยนแปลง

ข้อความ (messages)

POST /v1/chats/{chat_id}/messages

ส่งข้อความ 1–5 ข้อความเข้าห้องที่บอทอยู่ ส่งได้สองแบบ

  • reply ใส่ reply_token จาก event (Reply token) ทุกข้อความจะเป็นการตอบกลับข้อความที่เรียกบอท
  • push ไม่ใส่ reply_token ส่งเมื่อไรก็ได้ ถ้าอยากตอบข้อความใดข้อความหนึ่ง ให้ใส่ reply_to_message_id
ฟิลด์ ชนิด กติกา
messages array จำเป็น 1–5 รายการ (ชนิดข้อความ) ตอนนี้รับเฉพาะ {"type":"text","text":"..."}
reply_token string ไม่บังคับ ใช้ได้ครั้งเดียว อายุ 60 วินาที ต้องเป็นห้องเดียวกับ path
reply_to_message_id integer ไม่บังคับ ใช้คู่กับ reply_token ไม่ได้
client_id string ไม่บังคับ A–Z a–z 0–9 _ - ยาว 1–60 ตัว กันโพสต์ซ้ำเมื่อคุณลองใหม่
Terminal window
curl -s -X POST https://api.sukson.dev/v1/chats/0b6c3a52-5d0e-4c8e-9a51-6f1e7f6f2b10/messages \
-H "Authorization: Bearer $SUKSON_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "type": "text", "text": "สรุปอากาศวันนี้" },
{ "type": "text", "text": "เชียงใหม่ 24–31°C ฝนตก 40%" }
],
"client_id": "daily-2026-11-07"
}'
{
"messages": [
{ "message_id": 812346, "chat_id": "0b6c3a52-5d0e-4c8e-9a51-6f1e7f6f2b10", "created": true },
{ "message_id": 812347, "chat_id": "0b6c3a52-5d0e-4c8e-9a51-6f1e7f6f2b10", "created": true }
]
}
  • created เป็น false เมื่อเคยส่ง client_id นี้มาแล้ว ระบบคืนข้อความเดิมให้แทนการโพสต์ซ้ำ ข้อความที่ 2–5 ใช้ client_id ต่อท้าย -2 ถึง -5 ให้อัตโนมัติ
  • ทุกข้อความนับเข้าโควตารายเดือนและ ขีดจำกัดต่อห้อง แยกกัน
  • ข้อความถูกส่งตามลำดับ ถ้าข้อความไหนถูกปฏิเสธ (เช่น ติด rate limit, โควตาหมด หรือมีคำต้องห้าม) ข้อความที่เหลือจะไม่ถูกส่ง แต่ข้อความก่อนหน้าที่ส่งไปแล้วยังอยู่ ลองใหม่ด้วย client_id เดิมได้อย่างปลอดภัย
  • ยกเว้นคำขอที่ใช้ reply_token แล้วล้มเหลวกลางทาง: token ถูกใช้ไปแล้ว ถ้าลองใหม่แบบเดิมจะได้ 400 REPLY_TOKEN_INVALID ให้ลองใหม่แบบ push ด้วย client_id เดิม โดยใส่ reply_to_message_id (หรือไม่ระบุเป้าหมายตอบกลับ) แทน reply_token
HTTP code เมื่อไร
404 NOT_FOUND ไม่มีห้องนี้ chat_id ผิดรูปแบบ หรือบอทไม่ได้อยู่ในห้องนี้
403 CHAT_INACTIVE ห้องปิดอยู่
403 FORBIDDEN details.reason เป็น paused หรือ banned (บอทถูกพักหรือถูกแบนในห้องนี้ ดู status ใน chats) หรือ attacher_lost_rights (คนที่เพิ่มบอทเข้าห้องไม่มีสิทธิ์นั้นแล้ว)
403 BANNED บอทอยู่ในรายชื่อแบนของห้องนี้ (ทีมดูแลห้องแบนบัญชีบอท) ต่างจาก FORBIDDEN เหตุผล banned ที่หมายถึงสถานะของบอทในห้อง
400 REPLY_TOKEN_INVALID token ไม่รู้จัก ใช้แล้ว หมดอายุ เป็นของบอทอื่น หรือเป็นของห้องอื่น
422 UNSUPPORTED_MESSAGE_TYPE type ที่ยังไม่เปิดใช้
422 BANNED_TERM ข้อความมีคำต้องห้ามของห้อง
429 RATE_LIMITED / SLOW_MODE ส่งเร็วเกินไป ดู Retry-After
403 QUOTA_EXCEEDED โควตารายเดือนหมด รอเดือนถัดไปหรือเปลี่ยนแพ็กเกจ

PATCH /v1/messages/{message_id}

แก้ข้อความของบอทเองภายใน 48 ชั่วโมงหลังส่ง

Terminal window
curl -s -X PATCH https://api.sukson.dev/v1/messages/812346 \
-H "Authorization: Bearer $SUKSON_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"สรุปอากาศวันนี้ (อัปเดต 09:00)"}'
{ "message_id": 812346, "chat_id": "0b6c3a52-5d0e-4c8e-9a51-6f1e7f6f2b10" }
ฟิลด์ กติกา
text จำเป็น ไม่ว่าง ยาวไม่เกิน 4,096 ตัวอักษร

ข้อผิดพลาด: 404 NOT_FOUND (ไม่มีข้อความนี้ ไม่ใช่ข้อความของบอท หรือบอทไม่ได้อยู่ในห้องนั้นแล้ว), 403 CHAT_INACTIVE (ห้องปิดอยู่), 403 FORBIDDEN ที่มี details.reason เป็น paused, banned หรือ attacher_lost_rights, 429 RATE_LIMITED (details.retry_after), 422 INVALID (ข้อความว่างหรือยาวเกิน), 403 EDIT_WINDOW_PASSED (เกิน 48 ชั่วโมง), 422 NOT_EDITABLE, 422 BANNED_TERM และข้อผิดพลาดระดับบอทในหน้ารหัสข้อผิดพลาด (FORBIDDEN plan_limit/owner_inactive, RESTRICTED, BOTS_DISABLED)

DELETE /v1/messages/{message_id}

ลบข้อความของบอทเอง ไม่มี body

{ "message_id": 812346, "chat_id": "0b6c3a52-5d0e-4c8e-9a51-6f1e7f6f2b10" }

ข้อผิดพลาด: 404 NOT_FOUND (ไม่มีข้อความนี้ ไม่ใช่ข้อความของบอท หรือบอทไม่ได้อยู่ในห้องนั้นแล้ว), 403 CHAT_INACTIVE (ห้องปิดอยู่), 403 FORBIDDEN ที่มี details.reason เป็น paused, banned หรือ attacher_lost_rights