ইভেন্ট ক্যাটালগ
প্রতিটি webhook বডিতে একটি type ফিল্ড থাকে, যার মান এই পৃষ্ঠার ইভেন্ট
টাইপগুলোর একটি। আপনি যখন কোনো
এন্ডপয়েন্টে সাবস্ক্রাইব করেন, তখন events অ্যারেতে অবশ্যই
আপনার চাওয়া ইভেন্ট টাইপগুলো থাকতে হবে (অথবা সবকিছুর জন্য সাবস্ক্রাইব করতে এটি খালি রাখতে হবে)।
দুটি ডেলিভারি শৈলী এই ইভেন্টগুলো বহন করে:
- এন্ডপয়েন্ট ডেলিভারি সবসময় পুনঃচেষ্টাসহ নন-ব্লকিং
নোটিফিকেশন: যেকোনো 2xx দিয়ে সাড়া দিন; এনভেলপটিতে ডিডুপ্লিকেশনের জন্য একটি
event_idথাকে। - ব্লকিং এক্সচেঞ্জ কেবল
লিগ্যাসি সিঙ্গেল-URL webhook-এ চলে:
telephony.incoming/web.incomingকনফিগারেশন অনুরোধ (webhook-মোড নম্বর ও উইজেট কী, 10 s টাইমআউট) এবং webhook-মোড টুল ডিসপ্যাচ। আপনার প্রতিক্রিয়া লাইভ কলকে রূপ দেয়।
নিচের উদাহরণ পে-লোডগুলো তাদের ওয়্যার ক্রমে এন্ডপয়েন্ট এনভেলপ দেখায়
(কীগুলো বর্ণানুক্রমে সাজানো: data, event_id, type); লিগ্যাসি
ডেলিভারিগুলো event_id ছাড়া একই data বহন করে।
কল ইভেন্ট
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-এ
from_number / to_number-এর পরিবর্তে origin_domain থাকে।
ভয়েস ইভেন্ট
কাস্টম ভয়েস তৈরি একটি অ্যাসিঙ্ক্রোনাস প্রক্রিয়া। এই নন-ব্লকিং ইভেন্টগুলো আপনাকে পোলিং করার পরিবর্তে একটি চূড়ান্ত ফলাফলে প্রতিক্রিয়া জানাতে দেয় ক্লোন বিস্তারিত এন্ডপয়েন্ট।
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.id | স্ট্রিং | কাস্টম ভয়েসের পাবলিক আইডি |
voice.name | স্ট্রিং | custom:<public_id> ফরম্যাটে এজেন্টের ভয়েস মান |
voice.display_name | স্ট্রিং | প্রতিষ্ঠানের জন্য প্রদর্শিত ভয়েসের নাম |
voice.language | স্ট্রিং | ক্লোনের একক ভাষা কোড |
voice.gender | স্ট্রিং | male, female, অথবা একটি খালি স্ট্রিং |
voice.status | স্ট্রিং | voice.ready-এর জন্য ready; voice.failed-এর জন্য failed |
voice.failure_reason | স্ট্রিং | সফল হলে খালি; ব্যর্থ হলে প্রক্রিয়াকরণ ব্যর্থতার বিবরণ |
voice.created_at, voice.updated_at | টাইমস্ট্যাম্প | ISO 8601 টাইমস্ট্যাম্প |
reason | স্ট্রিং | ব্যর্থতার বিবরণ; শুধু 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.id | integer | গ্রেড id |
grade.score | integer | null | 0–100 |
grade.call_outcome | string | success, failure, unknown, অথবা no_conversation |
grade.summary | string | এক অনুচ্ছেদের সারসংক্ষেপ |
grade.detected_issues | array | গ্রেডার দ্বারা পাওয়া সমস্যার স্ট্রিং |
grade.status | string | সর্বদা completed — শুধু সম্পন্ন রানই পাঠায় |
grade.grader_model | string | কোন গ্রেডার ফলাফল তৈরি করেছে (যেমন, heuristic-v1) |
grade.graded_at, grade.created_at | timestamp |
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.severity | string | critical, warning, অথবা info |
issue_report.status | string | open অথবা resolved |
issue_report.source | string | user (ড্যাশবোর্ড থেকে জমা দেওয়া) অথবা 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_type | string | agent অথবা phone_number |
test_call_run.target_id | integer | রানটি যে এজেন্ট id বা ফোন-নম্বর id-কে লক্ষ্য করেছে, target_type-এর সঙ্গে সামঞ্জস্যপূর্ণ |
test_call_run.status | string | completed অথবা failed |
test_call_run.call_id | integer | null | কল স্থাপনের আগে রান ব্যর্থ হলে null |
test_call_run.error_message | string | সফল হলে খালি |
সতর্কতা ইভেন্ট
alert.triggered
ডেভেলপার ওয়েবহুকে ডেলিভার করুন চ্যানেল সক্রিয় থাকা কোনো সতর্কতা নিয়ম তার থ্রেশহোল্ড অতিক্রম করলে পাঠানো হয়। নন-ব্লকিং। একটি নিয়ম একবার ফায়ার হয় এবং তারপর তার কুলডাউন মেনে চলে, তাই ধারাবাহিক লঙ্ঘন প্রতিটি কুলডাউন উইন্ডোতে একটি ইভেন্ট তৈরি করে।
{
"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-তে) | UUID | সতর্কতার ফায়ারিং আইডি — এনভেলপের ডেলিভারি event_id থেকে আলাদা |
rule_id, rule_name | UUID, স্ট্রিং | যে নিয়মটি ফায়ার হয়েছে |
metric | স্ট্রিং | success_rate, failure_rate, avg_score, call_volume, অথবা suite_regression |
comparator | স্ট্রিং | lt, lte, gt, অথবা gte |
metric_value | সংখ্যা | নিয়মটি ফায়ার হওয়ার সময় উইন্ডোজুড়ে মেট্রিকের মান |
threshold | সংখ্যা | কনফিগার করা থ্রেশহোল্ড |
window_hours | পূর্ণসংখ্যা | পেছনের মূল্যায়ন উইন্ডো |
fired_at | টাইমস্ট্যাম্প |
নিয়ম, মেট্রিক, কুলডাউন এবং ইমেল / Slack চ্যানেল তৈরি করতে সতর্কতা নির্দেশিকা দেখুন।