แค็ตตาล็อกเหตุการณ์

เนื้อหาของ webhook ทุกตัวมีฟิลด์ type ซึ่งมีค่าเป็นหนึ่งในประเภทเหตุการณ์ ในหน้านี้ เมื่อคุณสมัครรับข้อมูลไปยัง ปลายทาง อาร์เรย์ events ต้องมี ประเภทเหตุการณ์ที่คุณต้องการ (หรือเว้นว่างไว้เพื่อสมัครรับข้อมูลทั้งหมด)

เหตุการณ์เหล่านี้มีรูปแบบการส่ง 2 แบบ:

เพย์โหลดตัวอย่างด้านล่างแสดงซองข้อมูลของปลายทางตามลำดับบนสาย (คีย์เรียงตามตัวอักษร: data, event_id, type); การส่งแบบ legacy มี data เดียวกันโดยไม่มี event_id

เหตุการณ์การโทร

telephony.incoming

ส่งเมื่อสายเรียกเข้าไปถึงหมายเลขโทรศัพท์หมายเลขใดหมายเลขหนึ่งของคุณ การส่งไปยังปลายทางเป็นการแจ้งเตือนแบบไม่รอผลตอบกลับที่ส่งสำหรับสายเรียกเข้าทุกรายการ ไม่ว่าหมายเลขนั้นจะกำหนดค่าให้กับเอเจนต์หรือ webhook ก็ตาม หมายเลขที่ไม่ได้กำหนดเอเจนต์จะได้รับคำขอการกำหนดค่าแบบ บล็อกการทำงาน บน webhook แบบเดิมเพิ่มเติมด้วย โปรดดูtelephony.incoming / web.incomingสำหรับสคีมาคำขอ/การตอบกลับฉบับเต็ม

{
  "data": {
    "call_id": 987654321,
    "from_number": "+14155550199",
    "to_number": "+15551234567"
  },
  "event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
  "type": "telephony.incoming"
}

telephony.complete

ส่งเมื่อการโทรผ่านระบบโทรศัพท์ขาเข้าหรือขาออกสิ้นสุดลง ไม่บล็อกการทำงาน รวมถึงข้อความถอดเสียง URL การบันทึกเสียงเมื่อมี และสรุปการเรียกเก็บเงิน โปรดดูtelephony.complete / web.completeสำหรับสคีมาเพย์โหลด

telephony.tool

ส่งหลังจากการโทรผ่านระบบโทรศัพท์เรียกใช้เครื่องมือฟังก์ชัน การแจ้งเตือนเพื่อตรวจสอบแบบไม่บล็อกการทำงาน เครื่องมือได้ทำงานเสร็จแล้วเมื่อมีการส่งเหตุการณ์นี้ โดยครอบคลุมเครื่องมือฟังก์ชันของคุณเองเท่านั้น (ไม่รวมเครื่องมือในตัว ฐานความรู้ การเชื่อมต่อแอป หรือเครื่องมือ MCP)

{
  "data": {
    "arguments": { "date": "2026-04-21" },
    "call_id": 987654321,
    "from_number": "+14155550199",
    "response": {
      "response": { "available_slots": ["9:00 AM", "2:00 PM"] },
      "status": 200
    },
    "to_number": "+15551234567",
    "tool_name": "search_appointments"
  },
  "event_id": "1f0a7c3e-52d4-4a0e-8f4b-b1a6a1c0d9e2",
  "type": "telephony.tool"
}

response คือผลลัพธ์ที่ดำเนินการแล้ว: {"status": <http status>, "response": <your endpoint's JSON>} เมื่อสำเร็จ หรือ {"status": <status>, "error": "<message>"} เมื่อล้มเหลว

web.incoming

รายการที่เทียบเท่ากับ telephony.incoming สำหรับช่องทางเว็บ ซึ่งส่งเมื่อเซสชันวิดเจ็ตเว็บหรือการทดสอบการโทรด้วยไมโครโฟนในตัวสร้างเริ่มต้นขึ้น การส่งไปยังปลายทางเป็นแบบไม่รอผลตอบกลับสำหรับทุกเซสชันเว็บ คีย์ที่เผยแพร่ได้ใน mode="webhook" จะได้รับคำขอการกำหนดค่าแบบ บล็อกการทำงาน บน webhook แบบเดิมเพิ่มเติมด้วย คำขอแบบบล็อกนั้นมีโครงสร้างแตกต่างกัน (origin_domain, publishable_key_prefix; ไม่มีหมายเลขโทรศัพท์) โปรดดูtelephony.incoming / web.incoming

{
  "data": {
    "call_id": 987654322,
    "from_number": "web",
    "origin_domain": "https://example.com",
    "publishable_key_prefix": "pk_live_a1b2",
    "to_number": "+15551234567"
  },
  "event_id": "9a2b4c6d-8e0f-4a1b-9c2d-3e4f5a6b7c8d",
  "type": "web.incoming"
}

from_number เป็นค่าตัวอักษร "web" เสมอ สำหรับเซสชันวิดเจ็ตในโหมด webhook ค่า to_number จะว่างเปล่า (หมายเลขเอเจนต์ของเซสชันจะถูกกำหนดหลังการกำหนดค่า) สำหรับการทดสอบการโทรด้วยไมโครโฟนในตัวสร้าง ค่า origin_domain และ publishable_key_prefix จะว่างเปล่า

web.complete

รายการที่เทียบเท่ากับ telephony.complete สำหรับช่องทางเว็บ ครอบคลุมการโทรผ่านวิดเจ็ตเว็บ (direction: "web") และการทดสอบการโทรด้วยไมโครโฟนในตัวสร้าง (direction: "test") ไม่บล็อกการทำงาน มีโครงสร้างเพย์โหลดเดียวกับtelephony.completeพร้อม origin_domain เพิ่มเติม โดยตั้งค่า from_number เป็น "web"

web.tool

รายการที่เทียบเท่ากับ telephony.tool สำหรับช่องทางเว็บ data มี origin_domain แทน from_number / to_number


เหตุการณ์เสียง

การสร้างเสียงแบบกำหนดเองเป็นกระบวนการแบบอะซิงโครนัส เหตุการณ์แบบไม่บล็อกเหล่านี้ช่วยให้คุณตอบสนองต่อผลลัพธ์สุดท้ายได้โดยไม่ต้องโพล ปลายทางรายละเอียดโคลน

voice.ready

ส่งเมื่อเสียงแบบกำหนดเองประมวลผลเสร็จสิ้นและสามารถกำหนดให้กับเอเจนต์ได้

{
  "data": {
    "voice": {
      "created_at": "2026-07-30T14:12:08.317Z",
      "display_name": "Support voice",
      "failure_reason": "",
      "gender": "female",
      "id": "cv_2f6f90b0e9a34ee8b39be7d1",
      "language": "en",
      "name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
      "status": "ready",
      "updated_at": "2026-07-30T14:13:31.605Z"
    }
  },
  "event_id": "2d5f0a61-e9b5-4a3c-b684-29d7d9e4b214",
  "type": "voice.ready"
}

voice.failed

ส่งเมื่อการประมวลผลเสียงแบบกำหนดเองล้มเหลวอย่างถาวร

{
  "data": {
    "reason": "audio sample could not be processed",
    "voice": {
      "created_at": "2026-07-30T14:12:08.317Z",
      "display_name": "Support voice",
      "failure_reason": "audio sample could not be processed",
      "gender": "female",
      "id": "cv_2f6f90b0e9a34ee8b39be7d1",
      "language": "en",
      "name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
      "status": "failed",
      "updated_at": "2026-07-30T14:13:31.605Z"
    }
  },
  "event_id": "3493e985-1a75-4f77-a10a-e74af440cd31",
  "type": "voice.failed"
}
ฟิลด์ประเภทคำอธิบาย
voice.idstringID สาธารณะของเสียงแบบกำหนดเอง
voice.namestringค่าของเสียงเอเจนต์ในรูปแบบ custom:<public_id>
voice.display_namestringชื่อเสียงที่แสดงต่อองค์กร
voice.languagestringรหัสภาษาหนึ่งภาษาเดียวของโคลน
voice.genderstringmale, female หรือสตริงว่าง
voice.statusstringready สำหรับ voice.ready; failed สำหรับ voice.failed
voice.failure_reasonstringว่างเมื่อสำเร็จ; รายละเอียดความล้มเหลวในการประมวลผลเมื่อไม่สำเร็จ
voice.created_at, voice.updated_attimestampการประทับเวลา ISO 8601
reasonstringรายละเอียดความล้มเหลว; มีเฉพาะใน voice.failed

เหตุการณ์คุณภาพ

call.graded

ส่งเมื่อการประเมินด้วย AIเสร็จสิ้นสำหรับการโทร ไม่บล็อกการทำงาน

{
  "data": {
    "call_id": 987654321,
    "grade": {
      "call_outcome": "success",
      "created_at": "2026-04-20T18:25:11.002Z",
      "detected_issues": [],
      "graded_at": "2026-04-20T18:25:11.002Z",
      "grader_model": "heuristic-v1",
      "id": 5512,
      "score": 92,
      "status": "completed",
      "summary": "Caller asked about their policy and got a full answer…"
    }
  },
  "event_id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
  "type": "call.graded"
}
ฟิลด์ประเภทคำอธิบาย
grade.idintegerID ของการประเมิน
grade.scoreinteger | null0–100
grade.call_outcomestringsuccess, failure, unknown หรือ no_conversation
grade.summarystringสรุปความยาวหนึ่งย่อหน้า
grade.detected_issuesarrayสตริงปัญหาที่ผู้ประเมินตรวจพบ
grade.statusstringเป็น completed เสมอ — ส่งเฉพาะการรันที่เสร็จสิ้นแล้ว
grade.grader_modelstringผู้ประเมินที่สร้างผลลัพธ์ (เช่น heuristic-v1)
grade.graded_at, grade.created_attimestamp

issue.reported

ส่งเมื่อมีการสร้างรายงานปัญหา — ไม่ว่าจะส่งโดยผู้ใช้จากแดชบอร์ด (source: "user") หรือสร้างโดยอัตโนมัติจากการประเมินการโทร (source: "system") ไม่บล็อกการทำงาน

{
  "data": {
    "call_id": 987654321,
    "issue_report": {
      "created_at": "2026-04-20T18:25:11.002Z",
      "description": "Five-second silence before responding to the main question.",
      "id": 4321,
      "severity": "warning",
      "source": "system",
      "status": "open",
      "title": "Agent paused too long"
    }
  },
  "event_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
  "type": "issue.reported"
}
ฟิลด์ประเภทคำอธิบาย
issue_report.severitystringcritical, warning หรือ info
issue_report.statusstringopen หรือ resolved
issue_report.sourcestringuser (ส่งจากแดชบอร์ด) หรือ system (สร้างโดยการประเมิน)

เหตุการณ์การโทรทดสอบ

test-call.completed

ส่งเมื่อการรันการโทรทดสอบมีสถานะสิ้นสุด — completed หรือ failed รวมถึงการรันที่ล้มเหลวตอนเริ่มต้นและไม่เคยสร้างการโทร ไม่บล็อกการทำงาน มีประโยชน์สำหรับเชื่อมต่อการรัน CI แบบแบตช์เข้ากับระบบแชต/การแจ้งเตือนของคุณ

{
  "data": {
    "test_call_run": {
      "call_id": 987654321,
      "completed_at": "2026-04-20T18:25:04.822Z",
      "error_message": "",
      "id": 7110,
      "status": "completed",
      "target_id": 12,
      "target_type": "agent"
    }
  },
  "event_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
  "type": "test-call.completed"
}
ฟิลด์ประเภทคำอธิบาย
test_call_run.target_typestringagent หรือ phone_number
test_call_run.target_idintegerID ของเอเจนต์หรือ ID ของหมายเลขโทรศัพท์ที่การรันกำหนดเป้าหมาย โดยสอดคล้องกับ target_type
test_call_run.statusstringcompleted หรือ failed
test_call_run.call_idinteger | nullเป็น null เมื่อการรันล้มเหลวก่อนมีการโทรออก
test_call_run.error_messagestringว่างเปล่าเมื่อสำเร็จ

เหตุการณ์การแจ้งเตือน

alert.triggered

ส่งเมื่อกฎการแจ้งเตือนที่เปิดใช้ช่องทางส่งไปยัง developer webhooksมีค่าเกินเกณฑ์ที่กำหนด ไม่บล็อก กฎจะทริกเกอร์หนึ่งครั้งแล้วปฏิบัติตามช่วงคูลดาวน์ ดังนั้นการละเมิดเกณฑ์อย่างต่อเนื่องจะสร้างหนึ่งเหตุการณ์ต่อหนึ่งช่วงคูลดาวน์

{
  "data": {
    "comparator": "lt",
    "event_id": "b8e6a1d4-2c3f-4a5b-9c8d-7e6f5a4b3c2d",
    "fired_at": "2026-04-20T18:00:00+00:00",
    "metric": "success_rate",
    "metric_value": 71.4,
    "rule_id": "d2c3b4a5-6f7e-4d8c-9b0a-1c2d3e4f5a6b",
    "rule_name": "Success rate below 80%",
    "threshold": 80.0,
    "window_hours": 24
  },
  "event_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
  "type": "alert.triggered"
}
ฟิลด์ประเภทคำอธิบาย
event_id (ใน data)UUIDID การทริกเกอร์การแจ้งเตือน ซึ่งแตกต่างจาก event_id สำหรับการส่งมอบของ envelope
rule_id, rule_nameUUID, สตริงกฎที่ทริกเกอร์
metricสตริงsuccess_rate, failure_rate, avg_score, call_volume หรือ suite_regression
comparatorสตริงlt, lte, gt หรือ gte
metric_valueตัวเลขค่าของเมตริกในช่วงเวลาที่กฎทริกเกอร์
thresholdตัวเลขเกณฑ์ที่กำหนดค่าไว้
window_hoursจำนวนเต็มช่วงเวลาประเมินย้อนหลัง
fired_atการประทับเวลา

ดูคู่มือการแจ้งเตือนสำหรับการสร้างกฎ เมตริก คูลดาวน์ และช่องทางอีเมล / Slack


ที่เกี่ยวข้อง