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

Reply token

reply token คือรหัสที่มากับทุก event message (ในฟิลด์ reply_token) ใช้ตอบข้อความนั้นผ่าน API ได้ เหมาะเมื่อบอทต้องใช้เวลาคิดคำตอบนานกว่า 10 วินาที หรืออยากตอบหลายข้อความ

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 '{"reply_token":"rt_q8Jf3vYb0kZ2mW9xT1sLr6PaN4cVe7Hd","messages":[{"type":"text","text":"พรุ่งนี้ฝนตก 70%"}]}'
  • ใช้ได้ครั้งเดียว ในคำขอนั้นส่งได้สูงสุด 5 ข้อความ ทุกข้อความเป็นการตอบกลับข้อความที่เรียกบอท
  • อายุ 60 วินาที นับจากตอนที่ Sukson เตรียม event ถ้างานนานกว่านั้น ให้ส่งแบบ push (คือส่งโดยไม่ใส่ reply_token)
  • ใช้ได้เฉพาะห้องของ event นั้น chat_id ใน path ต้องเป็นห้องเดียวกับ chat.id ของ event ถ้าไม่ตรง คำขอจะถูกปฏิเสธ และ token ยังใช้ต่อได้
  • ใช้ได้เฉพาะบอทที่ได้รับ event นั้น บอทตัวอื่นใช้ไม่ได้
  • ใส่ reply_to_message_id คู่กับ reply_token ไม่ได้ เพราะ token บอกอยู่แล้วว่าตอบข้อความไหน
  • token นับว่าใช้ไปแล้ว แม้คำขอจะถูกปฏิเสธในขั้นต่อมา (เช่น ติด rate limit หรือมีคำต้องห้าม) แต่การตรวจรูปแบบข้อความ (ว่าง หรือยาวเกิน) ทำก่อนใช้ token ถ้าติดตรงนั้น token ยังใช้ต่อได้

ถ้า token ไม่ถูกต้อง ใช้ไปแล้ว หมดอายุ หรือเป็นของบอทอื่น จะได้คำตอบเดียวกันคือ 400 REPLY_TOKEN_INVALID ระบบไม่บอกว่าเป็นกรณีไหน

วิธี ใช้เมื่อ นับโควตา
{"reply": "..."} ในคำตอบ webhook ตอบได้ภายใน 10 วินาที ข้อความเดียว นับ
reply_token ต้องใช้เวลาคิดนานขึ้น (ไม่เกิน 60 วินาที) หรือส่งหลายข้อความ นับทุกข้อความ
push (ไม่ใส่ reply_token) ส่งเมื่อไรก็ได้ในห้องที่บอทอยู่ เช่น แจ้งเตือนตามเวลา นับทุกข้อความ

ทั้งสามแบบนับเข้าโควตาข้อความรายเดือน และอยู่ใต้ ขีดจำกัดต่อห้อง เดียวกัน