تجمیع وضعیت رهگیری مرسولات FedEx، UPS و DHL در n8n

تجمیع وضعیت رهگیری مرسولات FedEx، UPS و DHL در n8n

5 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۷

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 16338 · منبع: کاتالوگ Axeto

تجمیع وضعیت‌های رهگیری مرسولات از FedEx، UPS و DHL

این Workflow نحوه تجمیع اطلاعات رهگیری مرسولات را از چندین شرکت حمل‌ونقل (FedEx، UPS و DHL) در یک نمای یکپارچه نشان می‌دهد. این راهکار برای کسب‌وکارهایی که نیاز به نظارت بر پیشرفت مرسولات مختلف از طریق ارائه‌دهندگان لجستیک متفاوت دارند، ایده‌آل است.

نمای کلی Workflow

این Workflow از مجموعه‌ای از Node ها برای موارد زیر استفاده می‌کند:

1. راه‌اندازی Workflow: این می‌تواند زمان‌بندی شده یا به صورت دستی آغاز شود.

2. دریافت داده‌های رهگیری: با ارسال درخواست‌های HTTP به API های مربوطه FedEx، UPS و DHL برای دریافت وضعیت‌های رهگیری برای شماره‌های رهگیری مشخص شده، داده‌ها را دریافت می‌کند.

3. پردازش و استانداردسازی داده‌ها: داده‌های دریافت شده سپس پردازش می‌شوند تا یک فرمت سازگار، صرف نظر از شرکت حمل‌ونقل، تضمین شود.

4. تجمیع نتایج: تمام وضعیت‌های رهگیری در یک خروجی واحد ترکیب می‌شوند.

5. نمایش نتایج: داده‌های تجمیع شده در یک فرمت جدولی واضح ارائه می‌شوند.

پیش‌نیازها

  • دسترسی به کاتالوگ Axeto.ai n8n: https://axeto.ai/n8n
  • اعتبارنامه‌ها و نقاط پایانی API برای FedEx، UPS و DHL. شما باید این موارد را مستقیماً از پورتال توسعه‌دهنده هر شرکت حمل‌ونقل دریافت کنید.
  • لیستی از شماره‌های رهگیری که می‌خواهید نظارت کنید.

Node های مورد استفاده

این Workflow عمدتاً از Node های n8n زیر استفاده می‌کند:

  • scheduleTrigger: برای زمان‌بندی اجرای Workflow.
  • httpRequest: برای ارسال درخواست‌های API به FedEx، UPS و DHL.
  • set: برای تنظیم متغیرها و تبدیل داده‌ها.
  • code: برای منطق سفارشی جاوا اسکریپت جهت پردازش و استانداردسازی اطلاعات رهگیری.
  • merge: برای ترکیب داده‌ها از شاخه‌های مختلف.
  • filter: برای پالایش داده‌ها بر اساس معیارهای خاص.
  • switch: برای هدایت داده‌ها بر اساس شرایط (مانند نوع شرکت حمل‌ونقل).
  • dataTable: برای نمایش اطلاعات رهگیری تجمیع شده در یک جدول ساختاریافته.
  • stickyNote: برای افزودن توضیحات توضیحی در داخل Workflow.

راه‌اندازی Workflow

1. Node راه‌انداز: scheduleTrigger را برای اجرای Workflow با فرکانس دلخواه خود (مانند روزانه، ساعتی) پیکربندی کنید.

2. Node های API شرکت حمل‌ونقل:

* برای هر شرکت حمل‌ونقل (FedEx، UPS، DHL)، یک Node httpRequest اضافه کنید.

* هر Node httpRequest را با نقطه پایانی API صحیح، متد HTTP (معمولاً POST یا GET)، هدرها (شامل اعتبارنامه‌های احراز هویت مانند کلیدهای API یا توکن‌ها) و بدنه (شامل شماره رهگیری و هر پارامتر مورد نیاز دیگر) پیکربندی کنید.

* مهم: شما باید مستندات API خاص هر شرکت حمل‌ونقل را برای دریافت URL های نقطه پایانی دقیق، فرمت‌های درخواست و روش‌های احراز هویت مشورت کنید.

3. Node های پردازش داده:

* پس از هر Node httpRequest، از Node های set یا code برای استخراج اطلاعات رهگیری مربوطه (مانند شماره رهگیری، توضیحات وضعیت، تاریخ تخمینی تحویل، مکان) از پاسخ API استفاده کنید.

* از Node های code برای استانداردسازی داده‌های استخراج شده به یک فرمت مشترک استفاده کنید. این امر حیاتی است زیرا API هر شرکت حمل‌ونقل داده‌ها را به طور متفاوتی برمی‌گرداند. ممکن است بخواهید فیلدهایی مانند "status" و "location" را به نام‌های سازگار نگاشت کنید.

4. Node ادغام: از یک Node merge برای ترکیب داده‌های رهگیری پردازش شده از همه شرکت‌های حمل‌ونقل در یک جریان واحد استفاده کنید.

5. Node نمایش: خروجی Node merge را به یک Node dataTable متصل کنید. Node dataTable را برای نمایش ستون‌های مورد نظر (مانند Carrier، Tracking Number، Status، Last Update، Estimated Delivery) پیکربندی کنید.

مثال تبدیل داده (با استفاده از Node code)

فرض کنید پاسخ‌هایی از FedEx و UPS دریافت می‌کنید. شما باید آن‌ها را به یک ساختار مشترک تبدیل کنید.

ورودی از FedEx (مثال):

{
  "trackDetails": [
    {
      "trackingNumberInfo": { "trackingNumber": "YOUR_FEDEX_TRACKING_NUMBER" },
      "trackStatusEvents": [
        {
          "eventDescription": "In Transit",
          "eventTimestamp": "2023-10-27T10:00:00Z",
          "eventLocation": { "city": "Memphis", "state": "TN" }
        }
      ]
    }
  ]
}

ورودی از UPS (مثال):

{
  "track": {
    "packageDetails": [
      {
        "trackingNumber": "YOUR_UPS_TRACKING_NUMBER",
        "currentStatus": {
          "description": "Out for Delivery",
          "code": "02"
        },
        "deliveryDate": "2023-10-28",
        "shipmentEvents": [
          {
            "event": {
              "date": "2023-10-27",
              "time": "09:30:00",
              "location": { "city": "Louisville", "state": "KY" }
            },
            "description": "Package received by UPS facility"
          }
        ]
      }
    ]
  }
}

کد جاوا اسکریپت برای Node code جهت استانداردسازی:

// فرض می‌کنیم 'inputData' خروجی Node قبلی است
// و شما راهی برای شناسایی شرکت حمل‌ونقل دارید (مثلاً از Node 'set' قبلی)

let output = [];
const carrier = $json.extract(inputData, 'carrier'); // فرض می‌کنیم نام شرکت حمل‌ونقل ارسال شده است

if (carrier === 'FedEx') {
  const trackDetails = $json.extract(inputData, 'data.trackDetails');
  if (trackDetails && trackDetails.length > 0) {
    trackDetails.forEach(detail => {
      const statusEvents = $json.extract(detail, 'trackStatusEvents');
      if (statusEvents && statusEvents.length > 0) {
        const latestEvent = statusEvents[statusEvents.length - 1]; // آخرین رویداد را دریافت کنید
        output.push({
          carrier: 'FedEx',
          trackingNumber: $json.extract(detail, 'trackingNumberInfo.trackingNumber'),
          status: $json.extract(latestEvent, 'eventDescription'),
          lastUpdate: $json.extract(latestEvent, 'eventTimestamp'),
          location: `${$json.extract(latestEvent, 'eventLocation.city')}, ${$json.extract(latestEvent, 'eventLocation.state')}`
        });
      }
    });
  }
} else if (carrier === 'UPS') {
  const packageDetails = $json.extract(inputData, 'data.track.packageDetails');
  if (packageDetails && packageDetails.length > 0) {
    packageDetails.forEach(detail => {
      const shipmentEvents = $json.extract(detail, 'shipmentEvents');
      if (shipmentEvents && shipmentEvents.length > 0) {
        const latestEvent = shipmentEvents[shipmentEvents.length - 1]; // آخرین رویداد را دریافت کنید
        output.push({
          carrier: 'UPS',
          trackingNumber: $json.extract(detail, 'trackingNumber'),
          status: $json.extract(detail, 'currentStatus.description'),
          lastUpdate: `${$json.extract(latestEvent, 'event.date')}T${$json.extract(latestEvent, 'event.time')}Z`,
          location: `${$json.extract(latestEvent, 'event.location.city')}, ${$json.extract(latestEvent, 'event.location.state')}`
        });
      }
    });
  }
}
// منطق DHL را به طور مشابه اضافه کنید

return output;

بهبودهای بیشتر

  • مدیریت خطا: پیاده‌سازی مدیریت خطای قوی برای درخواست‌های API که ناموفق هستند.
  • اطلاع‌رسانی‌ها: ادغام با Node های ایمیل یا پیام‌رسانی برای ارسال هشدارها هنگام تغییر قابل توجه وضعیت مرسولات.
  • ذخیره‌سازی پایگاه داده: ذخیره داده‌های رهگیری تاریخی در یک پایگاه داده برای تجزیه و تحلیل و گزارش‌گیری.
  • شماره‌های رهگیری پویا: به جای کدگذاری سخت شماره‌های رهگیری، آن‌ها را از یک پایگاه داده، یک صفحه گسترده یا یک API دیگر دریافت کنید.

این Workflow یک پایه محکم برای مدیریت رهگیری مرسولات چند شرکتی فراهم می‌کند. به یاد داشته باشید که جزئیات درخواست API و منطق تبدیل داده را برای مطابقت با الزامات خاص و پاسخ‌های API FedEx، UPS و DHL تطبیق دهید.

Nodeهای استفاده‌شده

سوالات متداول

این Workflow چگونه وضعیت رهگیری مرسولات را از شرکت‌های مختلف جمع‌آوری می‌کند؟

این Workflow با استفاده از Node های `httpRequest` به API های FedEx، UPS و DHL متصل شده و اطلاعات رهگیری را دریافت می‌کند. سپس با استفاده از Node های `code` و `set`، داده‌ها را استانداردسازی کرده و در نهایت با Node `merge` آن‌ها را در یک خروجی واحد ترکیب می‌کند.

چه پیش‌نیازهایی برای راه‌اندازی این Workflow لازم است؟

شما به دسترسی به کاتالوگ Axeto.ai n8n، اعتبارنامه‌ها و نقاط پایانی API برای FedEx، UPS و DHL و همچنین لیستی از شماره‌های رهگیری که می‌خواهید نظارت کنید، نیاز دارید.

آیا این Workflow می‌تواند داده‌های رهگیری را به صورت خودکار و در زمان‌های مشخص اجرا کند؟

بله، با استفاده از Node `scheduleTrigger` می‌توانید اجرای Workflow را زمان‌بندی کنید تا به صورت خودکار در فواصل زمانی مشخص (مانند روزانه یا ساعتی) اجرا شود.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.