
این راهنما روش دریافت وضعیت لحظهای اپراتورها و تاریخچهٔ یکپارچهٔ تغییر وضعیتها و رویدادهای تماس را با وبسرویس Telefonchy توضیح میدهد. نمونههای درخواست، صفحهبندی، محدودیت درخواست، پاسخ ناقص و خطاهای رایج نیز به محتوا افزوده شدهاند.
وضعیت و تاریخچهٔ اپراتورها
وبسرویس وضعیت و تاریخچهٔ اپراتورها، وضعیت فعلی اپراتورها و یک Timeline یکپارچه از تغییر وضعیتها و رویدادهای تماس را در اختیار سامانهٔ شما قرار میدهد. با این API میتوانید حضور اپراتورها، مشغولبودن آنها و رخدادهای تماس را در CRM یا داشبورد اختصاصی نمایش دهید.
اطلاعات پایه
نشانی Production:
https://panel.telefonchy.comهدر الزامی همهٔ درخواستها:
webservice-token: YOUR_WEBSERVICE_TOKENنکته مهم: پارامتر
service_idدر همهٔ مسیرها الزامی است و باید متعلق به صاحب همان توکن باشد.
دریافت وضعیت همهٔ اپراتورها
GET /webservice/v1/operators/status?service_id=SERVICE_IDcurl \
--header "webservice-token: YOUR_WEBSERVICE_TOKEN" \
"https://panel.telefonchy.com/webservice/v1/operators/status?service_id=SERVICE_ID"فقط اپراتورهای فعال سرویس در data.items برگردانده میشوند.
دریافت وضعیت یک اپراتور
برای محدودکردن پاسخ به یک داخلی مشخص، پارامتر exten را ارسال کنید:
GET /webservice/v1/operators/status?service_id=SERVICE_ID&exten=201curl \
--header "webservice-token: YOUR_WEBSERVICE_TOKEN" \
"https://panel.telefonchy.com/webservice/v1/operators/status?service_id=SERVICE_ID&exten=201"اگر
extenبه سرویس انتخابشده تعلق نداشته باشد، پاسخ404برگردانده میشود.
ساختار پاسخ وضعیت
{
"status": "Ok",
"code": 200,
"message": null,
"data": {
"service_id": "SERVICE_ID",
"items": [
{
"exten": "201",
"name": "اپراتور فروش",
"state": "Idle",
"state_label": "آنلاین",
"is_online": true,
"stated_at": "2026-09-07T10:20:00+00:00",
"jalali_stated_at": "1405-06-16 13:50:00"
}
]
}
}
وضعیتهای اپراتور
| برچسب |
|
|---|---|---|
| آنلاین |
|
| مشغول مکالمه |
|
| در حال زنگ |
|
| پشت خط |
|
| در حالت توقف |
|
| آفلاین |
|
فقط وضعیت Unavailable آفلاین است. اگر وضعیت ذخیرهشده ناشناخته باشد، API مقدار Unknown و is_online=false را برمیگرداند.
فیلد stated_at زمان استاندارد ISO-8601 آخرین تغییر وضعیت و jalali_stated_at معادل جلالی آن است.
دریافت Timeline اپراتورها
GET /webservice/v1/operators/events?service_id=SERVICE_IDاین مسیر دو نوع داده را با ترتیب زمانی نزولی ترکیب میکند:
source=presence: تغییر وضعیت اپراتورsource=call: رویدادهای تماس ذخیرهشده درCDR
پارامترهای Timeline
پارامتر | اجباری | توضیحات |
|---|---|---|
| بله | شناسهٔ سرویس متعلق به توکن |
| خیر | محدودکردن نتایج به یک اپراتور |
| خیر | یکی از |
| خیر | یک یا چند وضعیت جداشده با ویرگول |
| خیر | یک یا چند رویداد تماس جداشده با ویرگول |
| خیر | ابتدای بازه به شکل |
| خیر | انتهای بازه به شکل |
| خیر | پیشفرض |
| خیر | شناسهٔ صفحهٔ بعد؛ مقدار |
حداکثر بازهٔ زمانی قابل درخواست ۹۰ روز است.
نمونهٔ دریافت Timeline
curl --get \
--header "webservice-token: YOUR_WEBSERVICE_TOKEN" \
--data-urlencode "service_id=SERVICE_ID" \
--data-urlencode "exten=201" \
--data-urlencode "source=all" \
--data-urlencode "state=Idle,InUse,Unavailable" \
--data-urlencode "from=2026-09-01T00:00:00+03:30" \
--data-urlencode "to=2026-09-07T23:59:59+03:30" \
--data-urlencode "limit=50" \
"https://panel.telefonchy.com/webservice/v1/operators/events"
صفحهبندی با Cursor
اگر مقدار has_more برابر true بود، فیلترهای درخواست قبلی را بدون تغییر و همراه next_cursor ارسال کنید.
curl --get \
--header "webservice-token: YOUR_WEBSERVICE_TOKEN" \
--data-urlencode "service_id=SERVICE_ID" \
--data-urlencode "exten=201" \
--data-urlencode "source=all" \
--data-urlencode "limit=50" \
--data-urlencode "cursor=OPAQUE_CURSOR" \
"https://panel.telefonchy.com/webservice/v1/operators/events"
cursorرا Decode یا تغییر ندهید. برای جلوگیری از تکرار یا حذف نتیجه، همهٔ فیلترهای صفحهٔ قبل را ثابت نگه دارید.
پاسخ ناقص هنگام قطعی CDR
اگر CDR موقتاً در دسترس نباشد، تاریخچهٔ presence پنهان نمیشود؛ اما پاسخ بهشکل ناقص علامتگذاری میشود:
{
"partial": true,
"has_more": false,
"next_cursor": null,
"warnings": [
"call_events_unavailable"
]
}در این وضعیت فقط دادههای موجود قابل اتکا هستند. پس از بازیابی CDR، همان صفحه را دوباره درخواست کنید.
نگهداری تاریخچه
وضعیت فعلی و رکورد تغییر وضعیت در یک تراکنش ثبت میشوند.
اگر وضعیت جدید با وضعیت قبلی یکسان باشد، تاریخچهٔ جدید ساخته نمیشود.
تاریخچهٔ
presenceفقط از زمان فعالسازی قابلیت موجود است و دادهٔ گذشته بهصورت تخمینی تکمیل نمیشود.رکوردهای بیش از ۹۰ روز بهصورت روزانه حذف میشوند.
محدودیت درخواست
دو مسیر GET وضعیت و Timeline از remains کم نمیکنند. برای هر توکن و هر مسیر، حداکثر ۶۰ درخواست در دقیقه مجاز است.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42در صورت عبور از سقف درخواست:
HTTP/1.1 429 Too Many Requests
Retry-After: 24
خطاهای رایج
HTTP | مفهوم |
|---|---|
| پارامتر، بازهٔ زمانی، |
| سرویس یا اپراتور پیدا نشده یا متعلق به توکن نیست |
| سقف درخواست عبور کرده است؛ مقدار |
| خطای داخلی Panel |
بهترین روش استفاده
توکن وبسرویس را فقط در
Backendنگهداری کنید.برای نمایش زنده، وضعیت فعلی را با فاصلهٔ زمانی منطقی دریافت کنید.
برای Timeline از
cursorاستفاده کرده و فیلترها را بین صفحهها ثابت نگه دارید.زمان رخداد را با
occurred_atپردازش وjalali_datetimeرا برای نمایش فارسی استفاده کنید.در پاسخ
partial، وضعیتCDRرا بررسی کرده و درخواست را بعداً تکرار کنید.

