นักพัฒนา

Sonny MCP Beta

เชื่อมต่อผู้ช่วย AI ที่รองรับ MCP — Claude และไคลเอนต์ใดก็ได้ที่ใช้ Model Context Protocol — เข้ากับเวิร์กสเปซของคุณ โดยใช้ขอบเขตสิทธิ์และข้อจำกัดเดียวกับ API สาธารณะ

อ่านคู่มือ API สาธารณะ

เริ่มต้นอย่างรวดเร็ว

  1. 01

    เพิ่ม Sonny ใน Claude

    ใน Claude หรือ Cowork ให้เพิ่มตัวเชื่อมต่อแบบกำหนดเองด้วย URL https://www.usesonny.com/api/mcp Sonny รองรับการลงทะเบียนไคลเอนต์อัตโนมัติ คุณจึงไม่ต้องคัดลอก client ID หรือ secret ใด ๆ

  2. 02

    อนุมัติการเข้าถึงเวิร์กสเปซ

    Claude จะเปิด Sonny ในเบราว์เซอร์ของคุณ ให้เข้าสู่ระบบ ตรวจสอบสิทธิ์ที่ขอ แล้วเลือกเวิร์กสเปซที่จะเชื่อมต่อ OAuth 2.1 แบบ PKCE จะจำกัดโทเค็นการเข้าถึงและโทเค็นรีเฟรชที่ได้ให้อยู่ภายในขอบเขตของการอนุมัตินั้น

  3. 03

    ขอให้ผู้ช่วยของคุณใช้ Sonny

    เครื่องมือแต่ละตัวอธิบายตัวเองได้ คำสั่งอย่าง “แสดงบทสนทนาที่เปิดอยู่ของฉัน” ก็เพียงพอแล้ว ผู้ช่วยจะเห็นว่าเครื่องมือใดอ่านอย่างเดียวและเครื่องมือใดมีผลทำลายข้อมูล ไคลเอนต์ที่ดีจึงจะถามคุณก่อนเปลี่ยนแปลงสิ่งใด

Claude Code

claude mcp add --transport http sonny https://www.usesonny.com/api/mcp

การกำหนดค่าไคลเอนต์แบบ JSON

{
  "mcpServers": {
    "sonny": {
      "url": "https://www.usesonny.com/api/mcp"
    }
  }
}

การใช้งานด้วยคีย์ API

หากไคลเอนต์ทำ OAuth ไม่สำเร็จ ให้สร้างคีย์ที่กำหนดขอบเขตสิทธิ์ใน การตั้งค่า → นักพัฒนา แล้วส่งเป็นส่วนหัว Authorization Bearer คีย์ API ยังคงรองรับเต็มรูปแบบสำหรับการเชื่อมต่อระหว่างเซิร์ฟเวอร์และไคลเอนต์รุ่นเก่า

"Authorization": "Bearer sonny_your_key"

Sonny ดูแลความปลอดภัยของการเรียกใช้เครื่องมืออย่างไร

เวิร์กสเปซเดียว ขอบเขตสิทธิ์ที่คุณเลือก
ทุกการเรียกใช้ทำงานภายในเวิร์กสเปซที่เลือกไว้ตอนให้ความยินยอมผ่าน OAuth หรือเวิร์กสเปซที่เป็นเจ้าของคีย์ API เครื่องมือจะทำงานได้ก็ต่อเมื่อข้อมูลรับรองมีขอบเขตสิทธิ์ที่จำเป็น
ระบุประเภทเครื่องมืออย่างตรงไปตรงมา
เครื่องมือแบบอ่านอย่างเดียวจะระบุว่าอ่านอย่างเดียว ส่วนเครื่องมือที่อัปเดตและลบข้อมูลจะระบุว่ามีผลทำลายข้อมูล เพื่อให้ไคลเอนต์ของคุณยืนยันก่อนดำเนินการได้
กฎทางธุรกิจชุดเดียวกัน
เครื่องมือทำงานตามเวิร์กโฟลว์เดียวกับ API สาธารณะทุกประการ — ประวัติการตรวจสอบ การแจ้งเตือน และเว็บฮุกจะทำงานเหมือนสมาชิกทีมเป็นผู้เปลี่ยนแปลงเอง

จำกัดผู้ช่วยให้อยู่ในกล่องข้อความเดียว

ช่องทางที่เลือกไว้ในคีย์ API จะถูกบังคับใช้กับทุกการเรียกใช้เครื่องมือโดยอัตโนมัติ คีย์ API และการเชื่อมต่อ OAuth ยังเป็นไปตามสิทธิ์เข้าถึงช่องทางปัจจุบันของสมาชิกทีมที่เชื่อมต่อด้วย สำหรับการเชื่อมต่อ OAuth หรือคีย์ที่เข้าถึงได้ทุกช่องทาง เวิร์กสเปซมักมีหลายช่องทาง — หนึ่งช่องทางต่อหนึ่งผลิตภัณฑ์หรือแบรนด์ ให้ผู้ช่วยของคุณเรียก list_sources หนึ่งครั้งเพื่อค้นหาช่องทางเหล่านั้น แล้วส่ง sourceId ไปยัง list_conversations เพื่อให้คำถามเกี่ยวกับผลิตภัณฑ์หนึ่งได้ผลลัพธ์เป็นบทสนทนาของผลิตภัณฑ์นั้นเท่านั้น ทุกบทสนทนายังมี sourceId ของตัวเอง คุณจึงตรวจสอบผลลัพธ์ได้

รันลูปงานซัพพอร์ตแบบประหยัดต้นทุน

  1. ค้นหาการเปลี่ยนแปลง: เริ่มต้นด้วยฟีด sync แบบถาวร บันทึก nextCursor หลังประมวลผลแต่ละหน้า และตัด ID อีเวนต์ที่ซ้ำกันออก หากต้องการเลือกงาน ให้เรียก list_conversations พร้อม sourceId, awaitingReply: true, snoozed: "false" และ compact: true โน้ตภายในจะไม่ซ่อนข้อความของลูกค้าที่ยังไม่ได้ตอบ
  2. อ่านเฉพาะข้อความใหม่: สำหรับแต่ละบทสนทนาที่มีการเปลี่ยนแปลง ให้เรียก list_messages โดยใส่ ID ข้อความล่าสุดหรือเวลาแบบ ISO ใน after และตั้งค่า includeHtml: false เว้นแต่จำเป็นต้องใช้ HTML ของอีเมลจริง ๆ
  3. รอรูปภาพและวิดีโอ: เมื่อ list_messages ส่งคืน readsInProgress ให้เรียกตามที่ระบุไว้ใน nextStep ค่า waitSeconds จะรอส่งผลลัพธ์จนกว่าการอ่านรูปภาพและการถอดเสียงวิดีโอจะพร้อม จึงไม่ต้องหน่วงเวลาเอง
  4. โหลดบริบทของลูกค้า: get_conversation จะส่งคืน identityVerified, verifiedTraits ที่ลงนามแล้ว รวมถึงหน้าต้นทางและบริบทไคลเอนต์ของบทสนทนา เมื่อมี contact.id ให้ส่ง ID นั้นไปยัง list_conversations เพื่อโหลดบทสนทนาก่อนหน้าของลูกค้า
  5. ปลุกเมื่อต้องการ: ใช้เว็บฮุกที่กรองตามช่องทางสำหรับ message.created เพื่อปลุกเอเจนต์ทันที แล้วตามข้อมูลให้ทันด้วย sync ฟีดแบบถาวรทำงานแยกจากการส่งเว็บฮุก ใช้ข้อมูลรับรองที่เข้าถึงได้ทุกช่องทางเพื่อสร้างเว็บฮุกและจำกัด ID ช่องทางของเว็บฮุก ส่วนเอเจนต์ยังคงใช้ข้อมูลรับรองขณะทำงานที่จำกัดเฉพาะช่องทาง

แคตตาล็อกเครื่องมือ

ทุกการดำเนินการของ API สาธารณะใช้งานเป็นเครื่องมือได้ ขอบเขตสิทธิ์ที่จำเป็นจะแสดงไว้ข้างเครื่องมือแต่ละตัว

get_connection_info
Read connection access
conversations:read
get_conversation_context
Read support context
conversations:read
list_conversation_checks
Read conversation checks
conversations:read
record_conversation_check
Record a conversation check
conversations:write
get_status
Check Sonny status
conversations:read
create_conversation
Create a conversation from a form
conversations:write
import_conversations
Import conversation history
conversations:write
upload_attachment
Upload a message attachment
attachments:write
list_properties
List custom properties
contacts:read
get_contact_properties
Read contact properties
contacts:read
set_contact_property
Set a contact property
contacts:write
list_contact_memories
Read customer memories
contact-memory:read
create_contact_memory
Save a customer memory
contact-memory:write
delete_contact_memory
Remove a customer memory
contact-memory:write
get_report
Read a support report
reporting:read
sync
Read workspace changes
conversations:read
batch_update_conversations
Update conversations in a batch
conversations:write
list_members
List members
members:read
list_teams
List teams
members:read
list_tags
List tags
tags:read
create_tag
Create a tag
tags:write
get_tag
Get a tag
tags:read
update_tag
Update a tag
tags:write
delete_tag
Delete a tag
tags:write
add_conversation_tag
Add a conversation tag
conversations:write
remove_conversation_tag
Remove a conversation tag
conversations:write
list_contacts
List contacts
contacts:read
create_contact
Create a contact
contacts:write
get_contact
Get a contact
contacts:read
update_contact
Update a contact
contacts:write
archive_contact
Archive a contact
contacts:write
erase_contact
Permanently erase a contact
contacts:write
list_channels
List conversation channels
conversations:read
list_sources
List sources
conversations:read
list_conversations
List conversations
conversations:read
get_conversation
Get a conversation
conversations:read
update_conversation
Update a conversation
conversations:write
list_messages
List messages
messages:read
create_internal_note
Create an internal note
messages:write
edit_message
Edit a sent reply
messages:send
send_message
Send a reply to the customer
messages:send
list_webhooks
List webhook endpoints
webhooks:read
create_webhook
Create a webhook endpoint
webhooks:write
list_webhook_events
List webhook event types
webhooks:read
update_webhook
Update a webhook endpoint
webhooks:write
delete_webhook
Delete a webhook endpoint
webhooks:write
test_webhook
Queue a test event
webhooks:write
list_webhook_deliveries
List webhook deliveries
webhooks:read
retry_webhook_delivery
Retry a failed delivery
webhooks:write
list_kb_articles
List knowledge base articles
kb:read
create_kb_article
Create a knowledge base article
kb:write
get_kb_article
Get a knowledge base article
kb:read
update_kb_article
Update a knowledge base article
kb:write
delete_kb_article
Delete a knowledge base article
kb:write
list_kb_categories
List knowledge base categories
kb:read
create_kb_category
Create a knowledge base category
kb:write
update_kb_category
Update a knowledge base category
kb:write
delete_kb_category
Delete a knowledge base category
kb:write
get_csat_summary
Get CSAT scores
csat:read
list_csat_ratings
List CSAT ratings
csat:read
get_conversation_csat
Get a conversation's CSAT rating
csat:read
reorder_kb_articles
Reorder knowledge base articles
kb:write
upsert_kb_article
Sync a knowledge base article
kb:write
reorder_kb_categories
Reorder knowledge base categories
kb:write
upsert_kb_category
Sync a knowledge base category
kb:write
get_kb_category
Get a knowledge base category
kb:read
get_help_center
Get help center settings
kb:read
update_help_center
Update help center settings
kb:write
upload_kb_media
Upload a help center image
kb:write
list_kb_audiences
List audiences
kb:read
create_kb_audience
Create audience
kb:write
update_kb_audience
Update audience
kb:write
delete_kb_audience
Delete audience
kb:write

เวิร์กโฟลว์ของเอเจนต์ AI

คัดแยก ดำเนินการ และซิงค์ข้อมูลให้ตรงกันเสมอ

REST และ MCP ใช้สิทธิ์และเวิร์กโฟลว์เดียวกัน ข้อมูลรับรองทำได้เพียงจำกัดสิทธิ์เข้าถึงช่องทางปัจจุบันของคุณให้แคบลง การนำช่องทางออกจากสิทธิ์สมาชิกของคุณจะนำช่องทางนั้นออกจากการเชื่อมต่อของคุณด้วย

ค้นหาบทสนทนาที่ต้องดูแล

กรองตาม awaitingReply, unread, unassigned, assigneeId, agentGroupId, snoozed, priority หรือ tagIds การรอตอบกลับ (awaitingReply) ไม่นับโน้ตภายใน ส่วน unread เป็นข้อมูลเฉพาะของสมาชิกทีมที่ยืนยันตัวตนอยู่ unassigned หมายถึงไม่มีผู้รับผิดชอบรายบุคคล แม้จะมอบหมายให้ทีมแล้วก็ตาม แท็กจะตรงเมื่อมี ID ใดก็ได้ที่ส่งมา ส่ง propertyId (ฟิลด์ประเภท Select จาก list_properties) พร้อม propertyValues เพื่อจับคู่ผู้ติดต่อที่มีตัวเลือกใดตัวเลือกหนึ่งในนั้น สำหรับ REST ให้ใส่ propertyValues ซ้ำหนึ่งครั้งต่อหนึ่งตัวเลือก

list_conversations({ status: "open", awaitingReply: true, compact: true, sort: "waitingSince", direction: "asc" })

เรียงลำดับตาม waitingSince, lastMessageAt, createdAt หรือความสำคัญทางธุรกิจ โดยกำหนดทิศทางเป็น asc หรือ desc หากค่าเท่ากันจะใช้ ID ตัดสิน ตัวกรองที่ไม่ได้ระบุจะคงค่า compact=false และ snoozed=any ไว้ tagIds ใน REST รับ ID ที่คั่นด้วยจุลภาค ส่วน MCP รับแบบอาร์เรย์ได้ด้วย waitingSince เริ่มนับที่ข้อความขาเข้าข้อความแรกหลังการตอบกลับล่าสุด ข้อความติดตามผลและโน้ตภายในจะไม่รีเซ็ตค่านี้ ให้ตั้งเวลาสแกนคิวรอนี้เป็นประจำแม้ไม่มีเว็บฮุกเข้ามา เพื่อให้เธรดเก่ากลับขึ้นมาให้เห็น

ตามทันการเปลี่ยนแปลงโดยไม่ต้องอ่านกล่องข้อความซ้ำ

ใช้ sync พร้อม conversations:read ฟีดแบบถาวรนี้มีการเปลี่ยนแปลงของบทสนทนา แท็ก ข้อความ ฟิลด์ของผู้ติดต่อ ความจำ และบันทึกการลบ payload แต่ละประเภทยังต้องใช้ขอบเขตสิทธิ์การอ่านของตนเองด้วย เนื้อหาข้อความต้องใช้ messages:read และความจำต้องใช้ contact-memory:read ข้อมูลรับรองที่ถูกจำกัดจะได้รับเฉพาะช่องทางที่ได้รับอนุญาต

  1. เริ่มโดยไม่ใส่เคอร์เซอร์ ทำตาม nextCursor ไปจนกว่า hasMore จะเป็น false แล้วบันทึกเคอร์เซอร์นั้นไว้
  2. อ่านรายการบทสนทนา/ผู้ติดต่อปัจจุบันและประวัติที่คุณต้องใช้สำหรับสถานะเริ่มต้น
  3. เล่นซ้ำจากเคอร์เซอร์ที่บันทึกไว้เพื่อเก็บการเปลี่ยนแปลงที่เกิดขึ้นระหว่างการอ่านนั้น ประมวลผลแต่ละหน้า แล้วบันทึก nextCursor

ตัดรายการซ้ำด้วย id ของอีเวนต์ เนื่องจากการเล่นซ้ำรับประกันแบบอย่างน้อยหนึ่งครั้ง (at least once) การดำเนินการปลายทางจึงต้องมีการป้องกันการซ้ำของตนเอง คำขอที่ไม่มีเคอร์เซอร์จะครอบคลุมเฉพาะชั่วโมงล่าสุด ไม่ใช่สแนปช็อตทั้งหมด อีเวนต์จะถูกเก็บไว้ 30 วัน HTTP 410 resync_required หมายถึงต้องโหลดสถานะเริ่มต้นใหม่ และควรโหลดสถานะเริ่มต้นใหม่หลังขยายขอบเขตสิทธิ์หรือสิทธิ์เข้าถึงช่องทางด้วย ใช้ limit ได้สูงสุด 100 และ maxBodyChars ได้สูงสุด 10,000 (ค่าเริ่มต้น 500) ตั้ง compact=true เพื่อรับฟิลด์ textPreview/textTruncated ของข้อความที่จำกัดไว้ 200 ตัวอักษรแทน body/bodyTruncated เว็บฮุกปลุกเอเจนต์ได้ ส่วนฟีดยังใช้ได้แม้ไม่ได้สมัครรับเว็บฮุก หรือเมื่อการส่งเว็บฮุกค้างอยู่

บันทึกการตรวจสอบครั้งเดียวและแชร์ผลลัพธ์

ก่อนตรวจสอบเรื่องเดิมซ้ำ ให้อ่าน list_conversation_checks (GET /api/v1/conversations/{conversationId}/checks) บันทึกผลด้วย record_conversation_check (PUT ไปยังพาธเดียวกัน) โดยระบุ key, result, checkedBy และ reference ซึ่งไม่บังคับสำหรับ ID หรือ URL ของการ์ด ตัวอย่างเช่น key=product-version, result=Shopstar Go verified, checkedBy=Engineer, reference=card-X แล้ว Sonny จะบันทึก actorId ที่ยืนยันตัวตนและเวลา checkedAt การใช้ key ซ้ำจะแทนที่เฉพาะการตรวจสอบนั้น ข้อมูลนี้เป็นสถานะปัจจุบัน ไม่ใช่บันทึกประวัติ การอ่านต้องใช้ conversations:read และการเขียนต้องใช้ conversations:write โดยทั้งสองอย่างจำกัดตามช่องทางของบทสนทนา การเรียกเหล่านี้จะไม่ส่งคำตอบหรือทำเครื่องหมายว่าตอบผู้ขายแล้ว

มอบหมายและอัปเดตงานเป็นชุด

ดูสมาชิกทีมและทีมที่ใช้งานอยู่และมอบหมายได้ด้วย list_members / list_teams (members:read) การตอบกลับมีสถานะพร้อมให้บริการและสิทธิ์เข้าถึงช่องทางที่มีผลจริง โดยไม่มีอีเมล ใช้ conversations:write เพื่อเปลี่ยน status, priority, assigneeId, agentGroupId, snoozedUntil, snoozedUntilReply, addTagIds หรือ removeTagIds

batch_update_conversations({
  conversationIds: ["conversation_1", "conversation_2"],
  updates: { agentGroupId: "team_1", assignment: "round_robin" }
})

การกระจายงานแบบวนรอบ (round-robin) จะเลือกสมาชิกทีมที่พร้อมให้บริการและเข้าถึงช่องทางของบทสนทนาได้ หากไม่มีสมาชิกที่เข้าเกณฑ์ การอัปเดตรายการเดียวจะส่งกลับ 409 และรายการในชุดจะล้มเหลว แต่ละชุดรับ ID ที่ไม่ซ้ำกันได้สูงสุด 100 รายการ และใช้การแก้ไขหนึ่งชุดแบบ atomic ต่อบทสนทนา ตรวจสอบผลลัพธ์ { id, ok, error? } ทุกรายการ เพราะบางรายการอาจล้มเหลว ชุดคำขอใช้ขีดจำกัดอัตราตามจำนวนคำขอปัจจุบัน โดยไม่คิดน้ำหนักตามจำนวนรายการ

แชร์บริบทของลูกค้ากับ Sonny AI

แสดงรายการ บันทึก และนำความจำของผู้ติดต่อออกด้วย contact-memory:read/write ระบุทั้ง contactId และ sourceId ที่เข้าถึงได้ โดยผู้ติดต่อต้องมีบทสนทนาในช่องทางนั้น ข้อเท็จจริงที่บันทึกจะใช้การตรวจสอบ การจัดการข้อมูลซ้ำ และขีดจำกัดเดียวกับในแอป และบันทึกเป็นความจำที่เพิ่มด้วยตนเอง

อ่านคำจำกัดความของฟิลด์ที่ /api/v1/properties และอ่านหรือตั้งค่าที่ /api/v1/contacts/{contactId}/properties MCP มี list_properties, get_contact_properties และ set_contact_property ซึ่งต้องใช้ contacts:read/write และสิทธิ์เข้าถึงทุกช่องทาง ระบุ propertyId หรือ propertyName อย่างใดอย่างหนึ่งเท่านั้น พร้อมค่าสตริง หรือ null เพื่อล้างค่า ค่าข้อความ ตัวเลข URL วันที่ และตัวเลือกจะถูกตรวจสอบตามคำจำกัดความของฟิลด์

set_contact_property({ contactId: "contact_1", propertyName: "Plan", value: "Pro" })
list_contacts({ property: { Plan: "Pro" } })

ตัวกรองฟิลด์จะจับคู่กับสตริงที่จัดเก็บไว้แบบตรงตัว หากใช้หลายฟิลด์ ต้องตรงทั้งหมด ค่าที่เขียนผ่าน API จะถูกระบุว่าเป็นข้อมูลจาก API ใน Co-Pilot และระบบตอบกลับอัตโนมัติ กฎเดิมเกี่ยวกับลูกค้าที่ยืนยันแล้วและช่องทางยังคงมีผล ค่าฟิลด์ภายในที่กรอกด้วยตนเองตามปกติยังคงไม่รวมอยู่ในบริบท AI นี้

อ่านรายงานชุดเดียวกับที่ทีมของคุณเห็น

เมื่อมี reporting:read ให้เรียก get_report({ kind, filters }) ประเภทรายงานได้แก่ overview, volume, response-times, agents, sources, tags, csat, ai, knowledge, leads และ online-hours โดย overview จะรวมจำนวน เวลาตอบกลับ และ CSAT ไว้ด้วยกัน ตัวกรองได้แก่ period (1–365 วัน ค่าเริ่มต้น 30), วันที่ from/to ที่ใช้คู่กัน (ไม่รวมวันที่ to), granularity (day/month), source, assigneeId และ tagId ค่า source รับ all, all-chat, all-email, website:{id} หรือ email:{id}

รายงานใช้คิวรีเดียวกับแดชบอร์ดและการตรวจสอบสิทธิ์เข้าถึงปัจจุบัน knowledge ใช้วันที่และช่องทางที่ได้รับอนุญาต โดยไม่ขึ้นกับ source ผู้รับผิดชอบ หรือแท็กที่เลือก online-hours วัดการออนไลน์ในเวิร์กสเปซของสมาชิกทีมที่เข้าถึงได้ ส่วนจำนวนบทสนทนายังคงจำกัดตามช่องทาง เอนด์พอยต์ /csat ที่มีอยู่ยังคงใช้ขอบเขตสิทธิ์ csat:read แยกต่างหาก และอาจอธิบายกลุ่มข้อมูลที่ต่างกัน

ส่งไฟล์พร้อมคำตอบหรือโน้ตภายใน

ให้สิทธิ์ attachments:write แล้วอัปโหลดไฟล์ขนาดไม่เกิน 25 MB สำหรับบทสนทนา upload_attachment รับ conversationId, fileName, contentType และ dataBase64 การตอบกลับมี id และ expiresAt ส่ง attachmentIds ได้สูงสุด 10 รายการไปกับคำตอบหรือโน้ตภายในหนึ่งชั่วโมง ไฟล์ที่อัปโหลดแต่ละไฟล์ผูกกับผู้ใช้และบทสนทนาของคุณ และใช้ได้เพียงครั้งเดียว ไฟล์ที่ไม่ได้ใช้จะถูกล้างหลังหมดอายุ

send_message({ conversationId: "conversation_1", attachmentIds: ["upload_1"] })

คำตอบต้องใช้ messages:send ส่วนโน้ตภายในต้องใช้ messages:write และจะไม่ถึงลูกค้า รองรับข้อความที่มีแต่ไฟล์แนบ คำตอบทางอีเมลจะแนบไฟล์ภายในขนาดอีเมลที่กำหนด และให้ลิงก์ดาวน์โหลดสำหรับไฟล์ที่เหลือ อีเมลแชทเมื่อออฟไลน์จะมีลิงก์ไฟล์ ลิงก์ในอีเมลใช้ได้ตราบใดที่ไฟล์แนบยังอยู่ ผู้รับจึงเปิดภายหลังได้ การส่งต่ออีเมลจะเป็นการแชร์สิทธิ์เข้าถึงไฟล์เหล่านั้นด้วย ตรวจสอบ emailDeliveryStatus เพื่อดูการส่งที่ล้มเหลว

การอ่านข้อความที่ได้รับอนุญาตจะมี downloadUrl, downloadExpiresAt, aiStatus, aiDescription และ aiExtractedText รวมถึง videoTranscripts สำหรับวิดีโอที่ลิงก์ไว้ (Loom, Vimeo และอื่นๆ) ลิงก์ดาวน์โหลดมีอายุ 15 นาที อ่านข้อความอีกครั้งเพื่อรับลิงก์ใหม่ ไฟล์ที่อัปโหลดผ่าน API/MCP ใหม่จะจัดเก็บแบบส่วนตัว ไฟล์แนบเก่ายังคงเป็นแบบสาธารณะและถูกระบุเป็น access=legacy_public โดย URL เดิมจะไม่หมดอายุ การอ่านข้อความจะเริ่มอ่านรูปภาพในข้อความเมื่อเวิร์กสเปซมี Sonny AI การอ่านรูปภาพและการถอดความวิดีโอจะเสร็จในไม่ช้าหลังจากข้อความเข้ามา ระหว่างที่ยังทำงานอยู่ การตอบกลับจะขึ้นต้นด้วย readsInProgress ซึ่ง nextStep จะระบุการเรียกที่ต้องทำอย่างชัดเจน ส่ง waitSeconds (สูงสุด 30) เพื่อรอผลในคำขอเดียว ข้อความในวิดเจ็ตที่ลูกค้าเห็นและข้อความแบบเรียลไทม์จะไม่มีข้อมูลที่ดึงออกมาหรือคำถอดความ

สำรวจสัญญาคำขอและการตอบกลับทั้งหมด

ฐานความรู้

ซิงค์จากแหล่งข้อมูลภายนอก

ซิงค์บทความและหมวดหมู่ด้วย external ID ที่คงที่ นำเข้า Markdown หรือ HTML อัปโหลดรูปภาพ กำหนดลำดับ และจัดการกลุ่มผู้ชม การ upsert ซ้ำจะอัปเดตเนื้อหาที่มีอยู่

  1. เลือก sourceId ของช่องทางคุณและให้สิทธิ์ kb:read และ kb:write หากต้องการค้นหาช่องทาง list_sources ต้องใช้ conversations:read ด้วย
  2. สร้างหมวดหมู่ แล้วซิงค์บทความเป็นฉบับร่าง ตรวจสอบรูปแบบและสิทธิ์เข้าถึงก่อนเผยแพร่
  3. กำหนดค่าสิทธิ์เข้าถึงศูนย์ช่วยเหลือ เผยแพร่ แล้วทดสอบมุมมองของผู้อ่าน ใช้การแบ่งหน้าและ external ID ที่คงที่สำหรับการอัปเดตครั้งต่อไป
ทำตามคู่มือการซิงค์ด้วย MCP แบบครบขั้นตอน

จัดการกลุ่มผู้ชมที่เป็นลูกค้า

สร้างกลุ่มจากคุณลักษณะของลูกค้าที่ยืนยันแล้ว และนำไปใช้กับศูนย์ช่วยเหลือ หมวดหมู่ หรือบทความ ข้อจำกัดที่สืบทอดมาทั้งหมดต้องตรงกัน ข้อมูลรับรองของ API และ MCP จะทำงานในฐานะพนักงานภายในขอบเขตสิทธิ์ของตน ให้ดูตัวอย่างและทดสอบด้วยเซสชันของลูกค้าจริงเพื่อตรวจสอบสิทธิ์เข้าถึงของผู้อ่าน

ตั้งค่าและทดสอบกลุ่มผู้ชมของศูนย์ช่วยเหลือ

เอกสารที่เกี่ยวข้อง