مانیتورینگ ورود/خروج صف و استراحت اپراتورها + ارسال اعلان تلگرام در n8n

هدف پروژه

این Workflow درn8n برای مانیتورینگ وضعیت اپراتورها در سیستم تلفنی سیموتل طراحی شده و قابلیت‌های زیر را فراهم می‌کند:

  • تشخیص ورود و خروج اپراتور از صف
  • تشخیص ورود و خروج از استراحت (عادی و داخل صف)
  • محاسبه مدت حضور در صف یا استراحت
  • ارسال پیام لحظه‌ای به تلگرام
  • ارسال هشدار خودکار در صورت استراحت بیش از حد مجاز

معماری کلی Workflow

این پروژه از دو تریگر اصلی تشکیل شده است:

  1. Webhook (CDR)
    دریافت رویداد تماس‌ها از سیموتل
  2. 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 ذخیره می‌شود
  • از ارسال پیام تکراری جلوگیری می‌شود
  • زمان‌ها محاسبه می‌شوند:
    • مدت استراحت
    • مدت حضور در صف
  • پیام نهایی ساخته می‌شود

نمونه پیام ارسالی:

:white_check_mark: ورود به صف

:bust_in_silhouette: علی احمدی

:alarm_clock: ساعت ورود: 10:32:15

ارسال پیام به تلگرام

Send a text message

  • ارسال پیام به گروه یا تاپیک مشخص
  • پشتیبانی از Thread ID
  • بدون نوتیفیکیشن اضافی

بررسی استراحت غیرمجاز

Schedule Trigger – هر ۱ دقیقه

check break time

منطق:

  • اگر اپراتور در حالت استراحت باشد
  • و مدت استراحت بیشتر از 30 دقیقه شود
  • و قبلاً هشدار ارسال نشده باشد

پیام هشدار ارسال می‌شود

نمونه هشدار:

:warning: استراحت غیرمجاز

:bust_in_silhouette: علی احمدی

:stopwatch: مدت مجاز: 30 دقیقه

ارسال هشدار به تلگرام مدیران

send alert

  • ارسال پیام هشدار به گروه مدیریتی
  • امکان Mention کردن افراد خاص
1 پسندیده