Meetings

การประชุมและสรุปจาก AI

Meetings

การประชุมและนัดหมายของคุณเอง ทั้งที่พิมพ์ลงปฏิทินเอง ที่สร้างจากไฟล์เสียง/บทถอดเสียงแล้วให้ AI สรุปให้ และไฟล์เสียงที่บันทึกจาก Meet

การประชุมเป็นของแต่ละคน การประชุมเก็บอยู่ในพื้นที่ Meet ส่วนตัวของแต่ละคน ไม่ได้อยู่ในธุรกิจ และธุรกิจมองไม่เห็นการประชุมของสมาชิก Business key (หรือ account key ที่ส่ง X-Business-Id: <business id>) จะได้รายการว่าง ("items": [], "total": 0) และได้ 404 กับทุก meeting id

ถ้าจะอ่านการประชุมของตัวเอง ให้เรียกด้วย account key พร้อม X-Business-Id: personal ค่าสงวนนี้หมายถึงพื้นที่ของเจ้าของ key เสมอ จึงไม่ต้องรู้ id ของพื้นที่ (/meta/whoami และ /businesses ไม่แสดงพื้นที่นี้) สิทธิ์เป็นแบบ อ่านอย่างเดียว ถ้าส่ง personal ไป endpoint อื่นจะได้ 403 insufficient_scope ทุกตัว และ business key ที่ส่ง personal จะได้ 403 account_key_required ดูเพิ่มที่ เริ่มต้นใช้งาน → API key ระดับบัญชี

Scopes: view_meeting_all · view_meeting_self

Account key ที่ส่ง X-Business-Id: personal ได้ทั้งสอง scope จึงอ่านได้ทุกการประชุมในพื้นที่ของคุณ ส่วน API key ที่มีแค่ view_meeting_self จะเห็นเฉพาะการประชุมที่ตัวเองเป็นเจ้าของ (ownerUserId) ซึ่งเป็นกติกาเดียวกับที่หน้าเว็บบังคับ

businessId ของแต่ละการประชุมคือ id ของพื้นที่ของคุณ พื้นที่นี้ไม่ใช่ธุรกิจ จึงไม่อยู่ในรายการธุรกิจของคุณ

GET /meetings

ค้นหา/ไล่รายการการประชุม เรียงตาม startAt ใหม่สุดก่อน

รายการนี้ ไม่มีเนื้อสรุป มาด้วย — สรุปเก็บอยู่ใน object storage และต้องดึงแยกทีละรายการ ใช้ GET /meetings/{id} เมื่อต้องการอ่านเนื้อหาจริง

ParamTypeNote
limitint1–200, ค่าเริ่มต้น 20
offsetintค่าเริ่มต้น 0
statusscheduled | confirmed | cancelled | completedoptional
kindappointment | recordingrecording = สร้างจากไฟล์เสียง/บทถอดเสียง (กลุ่มที่มีสรุป AI)
aiStatuspending | processing | completed | failed | offสถานะการวิเคราะห์ (off = ไม่ได้ขอให้ AI สรุป หรือยกเลิก / เลือกไม่สรุปตอนจบการบันทึก — ไฟล์เสียงและบทถอดเสียงที่ทำเสร็จแล้วยังอยู่ และจะคงเป็น off จนกว่าจะมีคนสั่งสรุป · ถ้ายกเลิกการสรุปใหม่ของการประชุมที่มีบทสรุปอยู่แล้ว สถานะจะกลับเป็น completed พร้อมบทสรุปเดิม)
meetingTypestringป้ายบนปฏิทินที่คุณตั้งเอง ("sales", "standup") ต้องตรงทุกตัวอักษร
startFromdateเริ่มช่วง (รวมวันนั้น) — YYYY-MM-DD = 00:00 ตาม tz
startTodateจบช่วง (รวมวันนั้น) — YYYY-MM-DD = 23:59:59.999 ตาม tz
tzIANA zoneเขตเวลาที่ใช้กับวันที่ที่ไม่ได้ระบุเวลา ค่าเริ่มต้น Asia/Bangkok
hasSummarytrue | falseกรองเฉพาะรายการที่มี/ไม่มีสรุป AI
searchstringค้นคำที่อยู่ในหัวข้อ คำอธิบาย และสถานที่ (ไม่ค้นในบทถอดเสียง)
sortDirasc | descค่าเริ่มต้น desc
curl "https://phone.mcloud.co.th/api/v1/meetings?hasSummary=true&limit=5" \
  -H "Authorization: Bearer crk_<account key>" \
  -H "X-Business-Id: personal"

ตอบกลับ { items, total, limit, offset } โดยแต่ละ item มี id, title, kind, status, startAt, endAt, durationMs, sentiment, actionItemsTotal, actionItemsDone, aiStatus, hasSummary, hasTranscript, hasAudio

GET /meetings/{id}

การประชุมรายการเดียว พร้อมสรุปที่ AI เขียนไว้

นอกจากฟิลด์เดียวกับในรายการ จะได้เพิ่ม:

FieldTypeNote
attendeesarray{ name, email, role, responseStatus }
summaryobject | nullnull เมื่อยังวิเคราะห์ไม่เสร็จ วิเคราะห์ไม่สำเร็จ หรือเป็นนัดหมายที่ไม่มีไฟล์

ทุกฟิลด์ใน summary เป็น optional (เพราะ AI เป็นผู้เขียน): 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_<account key>" \
  -H "X-Business-Id: personal"