Messaging API
ส่งข้อความเข้า HeloSChat ได้ 4 แบบ เลือกตามว่ารู้ผู้รับจากไหน และต้องการส่งถึงกี่คน
| แบบ | ใช้เมื่อ | นับโควตา |
|---|---|---|
| reply | ตอบ event ที่เพิ่งได้รับ ด้วย reply token | ไม่นับ |
| push | ส่งหาผู้ใช้ กลุ่ม หรือห้องเดียว เมื่อไหร่ก็ได้ | 1 ต่อครั้ง |
| multicast | ส่งข้อความเดียวกันหาผู้ใช้หลายคน (สูงสุด 500 UID) | 1 ต่อผู้รับ |
| broadcast | ประกาศถึงทุกคนที่เพิ่มบอทเป็นเพื่อน | 1 ต่อผู้รับ |
Reply
POST/v1/messages/reply
ทุก event ที่ส่งถึงบอทในห้องแชทมี reply_token ใช้ได้ครั้งเดียว และควรตอบภายใน 1 นาที ส่งได้สูงสุด 5 ข้อความต่อครั้ง
curl -X POST "https://bots.gugarhices.com/v1/messages/reply" \
-H "Authorization: Bearer $BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"replyToken": "rt_…",
"messages": [{ "type": "text", "text": "รับทราบครับ" }]
}'Push
POST/v1/messages/push
ระบุผู้รับใน to โดย type เป็น user (UID), group, server หรือ channel ส่งเข้ากลุ่มหรือเซิร์ฟเวอร์ได้เมื่อบอทได้รับสิทธิ์นั้นแล้ว
curl -X POST "https://bots.gugarhices.com/v1/messages/push" \
-H "Authorization: Bearer $BOT_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-shipped" \
-d '{
"to": { "type": "user", "id": "U12AB34CD" },
"messages": [{ "type": "text", "text": "คำสั่งซื้อ #1042 จัดส่งแล้ว" }]
}'Idempotency-Key เมื่อต้องลองส่งซ้ำ ระบบจะตอบผลเดิมแทนการส่งข้อความซ้ำถึงผู้ใช้Multicast และ Broadcast
POST/v1/messages/multicast POST/v1/messages/broadcast
multicast รับ to เป็นรายการ UID ถ้ามีไม่เกิน 20 คนจะส่งทันที ถ้ามากกว่านั้นหรือเป็น broadcast ระบบจะสร้างงานส่งในเบื้องหลัง แล้วตอบ 202 พร้อม job_id ให้ติดตามที่ GET /v1/messages/jobs/{id}
{
"job_id": "5d1f…",
"kind": "broadcast",
"status": "queued",
"total": 1280,
"sent": 0,
"failed": 0
}ประเภทข้อความ
| type | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| text | ข้อความตัวอักษร สูงสุด 4,000 ตัวอักษร | { "type": "text", "text": "สวัสดี" } |
| image | รูปภาพจาก URL | { "type": "image", "originalContentUrl": "https://…/a.jpg", "previewImageUrl": "https://…/a_s.jpg" } |
| video | วิดีโอจาก URL | { "type": "video", "originalContentUrl": "https://…/a.mp4", "previewImageUrl": "https://…/a.jpg" } |
| audio | ไฟล์เสียงจาก URL | { "type": "audio", "originalContentUrl": "https://…/a.m4a" } |
| file | ไฟล์แนบ | { "type": "file", "originalContentUrl": "https://…/a.pdf", "fileName": "a.pdf" } |
| sticker | สติกเกอร์ | { "type": "sticker", "packageId": "1", "stickerId": "2" } |
| location | ตำแหน่ง | { "type": "location", "title": "ร้าน", "address": "…", "latitude": 13.75, "longitude": 100.5 } |
| card | Service Card (ต้องมีสิทธิ์ cards.create) | { "type": "card", "card": { "type": "event", "title": "ประชุม" } } |
| flex | เลย์เอาต์อิสระแบบ Flex | { "type": "flex", "flex": { … } } |
| embed | ลิงก์พร้อมตัวอย่าง | { "type": "embed", "embed": { "url": "https://…", "title": "…" } } |
Service Card
การ์ดที่ผู้ใช้กดตอบได้ในแชท ได้แก่ event (นัดหมาย), poll (โหวต), task (งาน) และ help (ขอความช่วยเหลือ) เมื่อผู้ใช้กด บอทจะได้รับ event card.action ต้องได้รับอนุมัติสิทธิ์ cards.create ก่อน
โควตา
บอทใหม่ได้ 1,000 ข้อความต่อเดือน นับตามเวลาประเทศไทย เมื่อเกินโควตา API ตอบ 429 quota_exceeded ตรวจโควตาได้ที่ GET /v1/messages/quota และยอดใช้ที่ GET /v1/messages/quota/consumption หากต้องการโควตาเพิ่ม ติดต่อทีม HeloSChat ผ่านช่องทางที่ให้ไว้ในใบสมัคร
{ "type": "limited", "value": 1000, "month": "2026-10" }