مقدمه
ایونت تماس یکی از قابلیتهای تعبیهشده در سیستم تلفن ابری تلفنچی است که به شما امکان میدهد رویدادهای تماس را بهصورت لحظهای دریافت کنید. برخلاف روش polling (که نیاز به درخواست مکرر دارد)، در این روش سیستم تلفنچی بهصورت خودکار اطلاعات را به آدرس وبهوک شما ارسال میکند.
دو نوع رویداد ارسال میشود:
رویداد | توضیحات |
ringing | هنگامی که تماسی در حال زنگ خوردن است — قبل از پاسخ دادن |
hangup | پس از قطع شدن تماس — چه پاسخ داده شده باشد چه خیر |
نحوه عملکرد
پس از ثبت آدرس وبهوک در پنل کاربری تلفنچی، هر بار که یک تماس رخ میدهد سیستم بهصورت خودکار یک درخواست POST حاوی اطلاعات تماس به آدرس شما ارسال میکند. جریان کلی به این شکل است:
۱ | تماسی برقرار یا دریافت میشود |
۲ | سیستم تلفنچی رویداد ringing را تشخیص میدهد |
۳ | یک درخواست POST با اطلاعات تماس به events_hook شما ارسال میشود |
۴ | پس از قطع تماس، رویداد hangup نیز به همان آدرس ارسال میشود |
۵ | سرور شما اطلاعات را پردازش کرده و پاسخ HTTP 200 برمیگرداند |
⚠ نکته: سرور شما باید در کمترین زمان ممکن پاسخ HTTP 200 برگرداند. پردازشهای سنگین را به صف (queue) بسپارید تا از timeout جلوگیری شود.
ساختار داده دریافتی (Payload)
اطلاعات بهصورت JSON در بدنه درخواست POST ارسال میشود:
{
"uid": "3Ev15-2841c6b5-1111-4c1c-bffe-8f5f1d4a9fec",
"rid": "OTCL-bd07341f-1111-4c19-bdad-c18044bf105d",
"message": "request sent",
"data": {
"service_id": "3Ev15-114h-1414-bffe-8f5f1d4a9fasd",
"cuid": "173133386.125769",
"unique_id": "173133386.125769",
"src": "89**3",
"dest": "912****975",
"type": "outgoing",
"event": "ringing",
"datetime": "2024-11-18 16:55:37",
"trunk_number": "021******75",
"trunk_outgoing": "pishgaman",
"webservice_token": "123ghj564-02be-44c9-bb3f-121039ghjghjf9",
"events_hook": "your_url",
"app_name": "parsvt",
"date": "2024-11-18 16:55:38"
},
"created_at": "2024-11-18 16:55:38",
"type": "info"
}
توضیحات فیلدهای خروجی
فیلدهای اصلی
فیلد | توضیحات |
uid | شناسه یکتای درخواست |
rid | شناسه یکتای رویداد (Event ID) |
message | وضعیت ارسال درخواست — مقدار ثابت: "request sent" |
created_at | زمان ایجاد این رویداد توسط سیستم |
type | نوع پیام — مقدار: "info" برای اطلاعرسانی |
فیلدهای بخش data
فیلد | توضیحات |
service_id | شناسه سرویس تلفنچی مرتبط با این تماس |
cuid / unique_id | شناسه یکتای تماس — هر دو فیلد مقدار یکسان دارند |
src | شماره مبدأ تماس (تماسگیرنده) — بهصورت مخفیشده |
dest | شماره مقصد تماس (تماسگیرندهشونده) — بهصورت مخفیشده |
type | نوع تماس: "incoming" برای ورودی یا "outgoing" برای خروجی |
event | وضعیت رویداد: "ringing" هنگام زنگ خوردن، "hangup" پس از قطع تماس |
datetime | زمان وقوع رویداد با فرمت Y-m-d H:i:s |
trunk_number | شماره خط (ترانک) استفادهشده در این تماس |
trunk_outgoing | نام ترانک خروجی |
webservice_token | توکن امنیتی وبسرویس برای تأیید هویت درخواست |
events_hook | آدرس URL وبهوک شما که این رویداد به آن ارسال شده است |
app_name | نام اپلیکیشن یا سرویس ارسالکننده رویداد |
date | تاریخ و زمان ثبت رویداد با فرمت Y-m-d H:i:s |
امنیت و اعتبارسنجی
برای اطمینان از اینکه درخواستهای دریافتی واقعاً از تلفنچی ارسال شدهاند و جعلی نیستند، میتوانید از فیلد webservice_token در بدنه درخواست استفاده کنید:
<?php
// اعتبارسنجی درخواست ورودی از تلفنچی
$payload = json_decode(file_get_contents('php://input'), true);
$received_token = $payload['data']['webservice_token'] ?? '';
$expected_token = '{YOUR_WEBSERVICE_TOKEN}'; // توکن ذخیرهشده در سرور شما
if ($received_token !== $expected_token) {
http_response_code(403);
exit('Unauthorized');
}
// پردازش رویداد
$event = $payload['data']['event']; // 'ringing' یا 'hangup'
$cuid = $payload['data']['cuid'];
$src = $payload['data']['src'];
$dest = $payload['data']['dest'];
$type = $payload['data']['type']; // 'incoming' یا 'outgoing'
// پاسخ سریع به تلفنچی
http_response_code(200);
echo json_encode(['status' => 'ok']);
// پردازشهای سنگین را در صف قرار دهید
// ...
موارد استفاده رایج
نمایش لحظهای وضعیت تماس
با دریافت رویداد ringing میتوانید بلافاصله اطلاعات تماسگیرنده را روی صفحه نمایش دهید — مثلاً نام مشتری از CRM — قبل از اینکه اپراتور تلفن را بردارد.
ثبت خودکار تماسها در CRM
با دریافت رویداد ringing میتوان تماس را در CRM ثبت کرد و با hangup، زمان پایان مکالمه را بهروز نمود.
سیستم اعلان و هشدار
در صورتی که تماس مهمی از مشتری خاص دریافت شد، میتوان بر اساس src پیام فوری به تیم مربوطه ارسال کرد.
گزارشگیری بلادرنگ
با پردازش رویدادهای ringing و hangup میتوان داشبورد زندهای از وضعیت تماسهای جاری ساخت.
ردیابی مسیر تماس
با ذخیره cuid در هر رویداد میتوان کل چرخه یک تماس (زنگ، پاسخ، قطع) را ردیابی و تحلیل کرد.


