Meetings
การประชุมและนัดหมายของ business — ทั้งที่พิมพ์ลงปฏิทินเอง และที่สร้างจากไฟล์เสียง/บทถอดเสียงแล้วให้ AI สรุปให้
Account key: ทุก request ด้านล่างต้องส่ง
X-Business-Id: <business id>เพื่อเลือก business ที่จะทำงานด้วย (ถ้าไม่ส่งจะได้400 business_required) business key ไม่สนใจ header นี้ ดูเพิ่มที่ Getting started → API Key ระดับบัญชี
Scopes: view_meeting_all · view_meeting_self
Token ที่ถือแค่ view_meeting_self จะเห็นเฉพาะการประชุมที่ตัวเองเป็นเจ้าของ (ownerUserId) — กติกาเดียวกับที่หน้าเว็บบังคับ
GET /meetings
ค้นหา/ไล่รายการการประชุม เรียงตาม startAt ใหม่สุดก่อน
รายการนี้ ไม่มีเนื้อสรุป มาด้วย — สรุปอยู่ใน object storage และการอ่านมันคือหนึ่งครั้งต่อหนึ่งรายการ ใช้ GET /meetings/{id} เมื่อต้องการอ่านของจริง
| Param | Type | Note |
|---|---|---|
limit | int | 1–200, ค่าเริ่มต้น 20 |
offset | int | ค่าเริ่มต้น 0 |
status | scheduled | confirmed | cancelled | completed | optional |
kind | appointment | recording | recording = สร้างจากไฟล์เสียง/บทถอดเสียง (กลุ่มที่มีสรุป AI) |
aiStatus | pending | processing | completed | failed | สถานะการวิเคราะห์ |
meetingType | string | ป้ายบนปฏิทินที่ธุรกิจตั้งเอง ("sales", "standup") ตรงตัวเป๊ะ |
startFrom | date | เริ่มช่วง (รวมวันนั้น) — YYYY-MM-DD = 00:00 ตาม tz |
startTo | date | จบช่วง (รวมวันนั้น) — YYYY-MM-DD = 23:59:59.999 ตาม tz |
tz | IANA zone | โซนที่ใช้ตีความวันที่เปล่า ๆ ค่าเริ่มต้น Asia/Bangkok |
hasSummary | true | false | กรองเฉพาะรายการที่มี/ไม่มีสรุป AI |
search | string | substring ของหัวข้อ คำอธิบาย และสถานที่ (ไม่ค้นในบทถอดเสียง) |
sortDir | asc | desc | ค่าเริ่มต้น desc |
curl "https://phone.mcloud.co.th/api/v1/meetings?hasSummary=true&limit=5" \
-H "Authorization: Bearer crk_..." \
-H "X-Business-Id: <business id>"
ตอบกลับ { items, total, limit, offset } โดยแต่ละ item มี id, title, kind, status, startAt, endAt, durationMs, sentiment, actionItemsTotal, actionItemsDone, aiStatus, hasSummary, hasTranscript, hasAudio
GET /meetings/{id}
การประชุมรายการเดียว พร้อมสรุปที่ AI เขียนไว้
นอกจากฟิลด์เดียวกับในรายการ จะได้เพิ่ม:
| Field | Type | Note |
|---|---|---|
attendees | array | { name, email, role, responseStatus } |
summary | object | null | null เมื่อการวิเคราะห์ยังไม่เสร็จ ล้มเหลว หรือเป็นนัดหมายเปล่า ๆ ที่ไม่มีไฟล์ |
ฟิลด์ใน summary เป็น optional ทั้งหมด (ผู้เขียนคือโมเดล): executiveSummary, keyDecisions, actionItems ({ text, owner, dueDate, priority, done }), keyTopics, risks, openQuestions, nextSteps, sentiment, tone, language
การประชุมที่ยังไม่มีสรุปตอบ 200 ไม่ใช่ 404 — "มีอยู่จริงแต่ยังวิเคราะห์ไม่เสร็จ" เป็นคำตอบจริง ดูสาเหตุได้จาก aiStatus และ aiError
curl https://phone.mcloud.co.th/api/v1/meetings/<meeting id> \
-H "Authorization: Bearer crk_..." \
-H "X-Business-Id: <business id>"
