هدف پروژه
این Workflow درn8n برای مانیتورینگ وضعیت اپراتورها در سیستم تلفنی سیموتل طراحی شده و قابلیتهای زیر را فراهم میکند:
- تشخیص ورود و خروج اپراتور از صف
- تشخیص ورود و خروج از استراحت (عادی و داخل صف)
- محاسبه مدت حضور در صف یا استراحت
- ارسال پیام لحظهای به تلگرام
- ارسال هشدار خودکار در صورت استراحت بیش از حد مجاز
معماری کلی Workflow
این پروژه از دو تریگر اصلی تشکیل شده است:
- Webhook (CDR)
دریافت رویداد تماسها از سیموتل - Schedule Trigger
بررسی دورهای مدت استراحت اپراتورها (هر ۱ دقیقه)
دریافت اطلاعات تماس (Webhook)
برای ارتباط بین مرکز تماس و n8n از Webhook استفاده میکنیم. در این روش، PBX بعد از هر رویداد تماس (CDR) یک درخواست HTTP به n8n ارسال میکند. لازم است از مرکز تماس سیموتل یک api با url نود webhook در n8n ساخته شود.
Webhook-CDR
- ورودیها شامل:
- src : داخلی اپراتور
- dst : کد ویژگی (Feature Code)
- event_name : نوع رویداد (Cdr)
این وبهوک مستقیماً از سیموتل فراخوانی میشود.
IF: check featurecod
فقط تماسهایی پردازش میشوند که مقصد آنها یکی از کدهای زیر باشد:
| کد | توضیح |
|---|---|
| 91 | ورود به صف |
| 92 | خروج از صف |
| 61 | ورود به استراحت |
| 62 | خروج از استراحت |
| 81 | استراحت در صف |
| 82 | خروج از استراحت در صف |
استخراج اطلاعات تماس
filter data cdr
دادههای مهم از CDR جدا میشوند:
- src
- dst
- event
- disposition
- unique_id
دریافت نام اپراتور از PBX
بعد از دریافت CDR از مرکز تماس، فقط شماره داخلی اپراتور (src) در اختیار n8n است. برای اینکه پیامهای تلگرام خوانا و مدیریتی باشند، لازم است نام اپراتور و صفهای مرتبط از خود PBX دریافت شود. برای دریافت اطلاعات از سیموتل لازم است یک ApiKey سمت سیموتل ساخته شود و به نود n8n معرفی شود و رویداد موردنظر فراخوانی شود.
HTTP Request – pbx/user/search
- جستجوی کاربر بر اساس شماره داخلی
- استفاده از API پنل PBX
Code – return name agent
خروجی این مرحله:
{
“number”: “201”,
“name”: “Ali Ahmadi”,
“queues”: [“Support”]
}
ترکیب اطلاعات تماس و اپراتور
Merge
ترکیب اطلاعات CDR و اطلاعات کاربر بر اساس شماره داخلی (src).
مدیریت وضعیت اپراتور (هسته پروژه)
create massage
در این نود:
- وضعیت هر اپراتور در staticData ذخیره میشود
- از ارسال پیام تکراری جلوگیری میشود
- زمانها محاسبه میشوند:
- مدت استراحت
- مدت حضور در صف
- پیام نهایی ساخته میشود
نمونه پیام ارسالی:
ورود به صف
علی احمدی
ساعت ورود: 10:32:15
ارسال پیام به تلگرام
Send a text message
- ارسال پیام به گروه یا تاپیک مشخص
- پشتیبانی از Thread ID
- بدون نوتیفیکیشن اضافی
بررسی استراحت غیرمجاز
Schedule Trigger – هر ۱ دقیقه
check break time
منطق:
- اگر اپراتور در حالت استراحت باشد
- و مدت استراحت بیشتر از 30 دقیقه شود
- و قبلاً هشدار ارسال نشده باشد
پیام هشدار ارسال میشود
نمونه هشدار:
استراحت غیرمجاز
علی احمدی
مدت مجاز: 30 دقیقه
ارسال هشدار به تلگرام مدیران
send alert
- ارسال پیام هشدار به گروه مدیریتی
- امکان Mention کردن افراد خاص
