نظارت بر در دسترس بودن API با هشدارهای واتس‌اپ و مدیریت گوگل…

نظارت بر در دسترس بودن API با هشدارهای واتس‌اپ و مدیریت گوگل…

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

دانلود workflow

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

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

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

نظارت بر در دسترس بودن API با هشدارهای واتس‌اپ و مدیریت گوگل شیت

این گردش کار، نظارت بر در دسترس بودن API را خودکار می‌کند. این گردش کار به صورت دوره‌ای لیستی از APIها را بررسی می‌کند، درخواست‌های ناموفق را مجدداً امتحان می‌کند و در صورت تأیید عدم در دسترس بودن یک API، هشدارهای واتس‌اپ ارسال می‌کند. لیست APIها از طریق گوگل شیت مدیریت می‌شود و گردش کار شامل منطق تلاش مجدد با تأخیر است. این گردش کار برای سناریوهایی که در دسترس بودن مداوم API حیاتی است و اطلاع‌رسانی سریع حوادث از طریق واتس‌اپ ضروری است، ایده‌آل است.

شما می‌توانید این گردش کار و موارد دیگر را در کاتالوگ n8n شرکت Axeto.ai بیابید.

نمای کلی گردش کار

این گردش کار به چندین بخش منطقی تقسیم شده است:

1. زمان‌بندی و بارگذاری ورودی: گردش کار را به صورت دوره‌ای فعال می‌کند، لیست APIها را از گوگل شیت می‌خواند و آن را برای پردازش فردی آماده می‌کند.

2. تست API و منطق تلاش مجدد: هر API را تست می‌کند، مکانیزم تلاش مجدد با تأخیر برای درخواست‌های ناموفق را پیاده‌سازی می‌کند و نتایج را ارزیابی می‌کند.

3. هشدار و ادامه کار: هشدارهای واتس‌اپ را برای APIهای غیرپاسخگو قالب‌بندی و ارسال می‌کند و ادامه کار به API بعدی را مدیریت می‌کند.

4. جریان کنترل و حلقه‌زنی: اطمینان حاصل می‌کند که گردش کار به درستی از طریق APIها و تلاش‌های مجدد حلقه می‌زند.

---

تجزیه و تحلیل گره‌های دقیق

۱. زمان‌بندی و بارگذاری ورودی

این بخش مراحل اولیه راه‌اندازی گردش کار، دریافت لیست APIها و آماده‌سازی آن برای پردازش را پوشش می‌دهد.

  • گره‌ها (Nodes):

* Schedule Trigger

* Read API List

* Process Each API

  • جزئیات گره‌ها:

1. Schedule Trigger

* نوع: scheduleTrigger

* نقش: گردش کار را در یک بازه زمانی مشخص راه‌اندازی می‌کند.

* پیکربندی: برای راه‌اندازی هر ۱۵ دقیقه تنظیم شده است.

* ورودی/خروجی: ورودی ندارد؛ یک رویداد راه‌اندازی خروجی می‌دهد.

* مشکلات احتمالی: نقص در زمان‌بند گردش کار.

2. Read API List

* نوع: googleSheets.list

* نقش: لیست APIها برای نظارت را از یک گوگل شیت می‌خواند.

* پیکربندی: از Sheet1 (gid=0) یک گوگل شیت با شناسه 1VKlDZSHicdZhhj-fl-vIIH0mC6VDwdCS4-LqaDIeyw0 می‌خواند. به اعتبارنامه‌های OAuth2 با نام "Google Sheets account" نیاز دارد.

* ورودی/خروجی: راه‌اندازی را از Schedule Trigger دریافت می‌کند؛ آرایه‌ای از اشیاء داده API را خروجی می‌دهد.

* مشکلات احتمالی: خطاهای احراز هویت، مشکلات اتصال، یا عدم دسترسی کافی به شیت.

3. Process Each API

* نوع: splitInBatches

* نقش: آرایه APIها را به موارد جداگانه برای پردازش متوالی تقسیم می‌کند.

* پیکربندی: اندازه دسته پیش‌فرض ۱ برای پردازش یک API در هر زمان.

* ورودی/خروجی: آرایه را از Read API List می‌پذیرد؛ یک شیء داده API را در هر زمان خروجی می‌دهد.

* مشکلات احتمالی: داده‌های ورودی نامعتبر یا خالی.

۲. تست API و منطق تلاش مجدد

این بلوک منطق اصلی تست در دسترس بودن API و پیاده‌سازی تلاش‌های مجدد را مدیریت می‌کند.

  • گره‌ها (Nodes):

* Init Retry Counter

* Test API

* Check Response

* If No Response

* Wait 10 Min

* Increment Retry

* Retry API

* Check Retry Response

* If Still No Response

* If Still No Retry > 4

  • جزئیات گره‌ها:

1. Init Retry Counter

* نوع: code

* نقش: متغیر retryCount را در صورت عدم وجود، روی ۰ مقداردهی اولیه می‌کند.

* پیکربندی: کد جاوا اسکریپت را برای اطمینان از وجود retryCount اجرا می‌کند.

* ورودی/خروجی: یک شیء API واحد را دریافت می‌کند؛ شیء را با retryCount خروجی می‌دهد.

* مشکلات احتمالی: خطاهای عبارت اگر داده ورودی نامعتبر باشد.

2. Test API

* نوع: httpRequest

* نقش: درخواست اولیه را به URL API ارسال می‌کند.

* پیکربندی: متد HTTP و URL را به صورت پویا از داده‌های ورودی استخراج می‌کند. مهلت زمانی ۱۰ ثانیه‌ای را تنظیم می‌کند. هدر Content-Type: application/json را شامل می‌شود. Continue On Fail فعال است.

* ورودی/خروجی: داده‌های API را دریافت می‌کند؛ پاسخ HTTP را خروجی می‌دهد.

* مشکلات احتمالی: خطاهای شبکه، مهلت زمانی، URLهای نامعتبر، یا کدهای وضعیت HTTP غیرمنتظره.

3. Check Response

* نوع: code

* نقش: تعیین می‌کند که آیا API یک پاسخ معتبر برگردانده است یا خیر.

* پیکربندی: بررسی می‌کند که آیا پاسخ یک شیء غیر خالی است و یک پرچم بولی hasResponse را تنظیم می‌کند.

* ورودی/خروجی: پاسخ HTTP را دریافت می‌کند؛ داده‌های ترکیبی شامل پرچم hasResponse را خروجی می‌دهد.

* مشکلات احتمالی: خطاهای عبارت اگر پاسخ JSON معتبر نباشد یا خالی باشد.

4. If No Response

* نوع: if

* نقش: گردش کار را بر اساس اینکه آیا پاسخی دریافت شده است یا خیر، منشعب می‌کند.

* پیکربندی: شرط بررسی می‌کند که آیا hasResponse برابر false است.

* ورودی/خروجی: اگر false (بدون پاسخ)، به جریان تلاش مجدد (Wait 10 Min) ادامه می‌دهد. اگر true، به ادامه به API بعدی می‌رود.

* مشکلات احتمالی: خطاهای ارزیابی شرط اگر پرچم hasResponse گم شده باشد.

5. Wait 10 Min

* نوع: wait

* نقش: گردش کار را برای ۱۰ دقیقه قبل از تلاش مجدد متوقف می‌کند.

* پیکربندی: برای ۱۰ دقیقه انتظار تنظیم شده است.

* ورودی/خروجی: از If No Response دریافت می‌کند؛ به Increment Retry خروجی می‌دهد.

* مشکلات احتمالی: ملاحظات مهلت زمانی گردش کار.

6. Increment Retry

* نوع: code

* نقش: retryCount را ۱ واحد افزایش می‌دهد.

* پیکربندی: جاوا اسکریپت را برای افزایش retryCount اجرا می‌کند.

* ورودی/خروجی: داده‌ها را دریافت می‌کند؛ داده‌ها را با retryCount افزایش یافته خروجی می‌دهد.

* مشکلات احتمالی: خطاها اگر retryCount گم شده باشد یا عدد نباشد.

7. Retry API

* نوع: httpRequest

* نقش: درخواست تلاش مجدد را به API ارسال می‌کند.

* پیکربندی: از همان URL و متد پویا مانند Test API استفاده می‌کند. مهلت زمانی ۱۰ ثانیه است. Continue On Fail فعال است.

* ورودی/خروجی: داده‌ها را دریافت می‌کند؛ پاسخ HTTP تلاش مجدد را خروجی می‌دهد.

* مشکلات احتمالی: مشابه شکست‌های درخواست اولیه (شبکه، مهلت زمانی و غیره).

8. Check Retry Response

* نوع: code

* نقش: پاسخ تلاش مجدد را ارزیابی می‌کند.

* پیکربندی: پرچم hasResponse را بر اساس محتوای پاسخ تلاش مجدد تنظیم می‌کند.

* ورودی/خروجی: داده‌ها را به If Still No Response خروجی می‌دهد.

* مشکلات احتمالی: مشابه گره Check Response اولیه.

9. If Still No Response

* نوع: if

* نقش: بر اساس اینکه آیا تلاش مجدد موفقیت‌آمیز بوده است یا خیر، منشعب می‌شود.

* پیکربندی: بررسی می‌کند که آیا hasResponse هنوز false است.

* ورودی/خروجی: اگر false (هنوز بدون پاسخ)، به بررسی تعداد تلاش مجدد (If Still No Retry > 4) ادامه می‌دهد. اگر true، به ادامه به API بعدی می‌رود.

* مشکلات احتمالی: خطاهای ارزیابی شرط اگر داده‌ها نامعتبر باشند.

10. If Still No Retry > 4

* نوع: if

* نقش: بررسی می‌کند که آیا حداکثر تعداد تلاش‌های مجدد (۴) رسیده است یا خیر.

* پیکربندی: شرط بررسی می‌کند که آیا retryCount >= 4 است.

* ورودی/خروجی: اگر true (تلاش‌های مجدد تمام شده است)، به قالب‌بندی هشدار (Format Down Alert) ادامه می‌دهد. اگر false، قبل از تلاش مجدد دوباره ۱۰ دقیقه دیگر صبر می‌کند (Wait 10 Min).

* مشکلات احتمالی: خطاهای منطقی اگر retryCount گم شده باشد.

۳. هشدار و ادامه کار

این بخش ارسال اعلان‌ها و مدیریت پیشرفت گردش کار را پوشش می‌دهد.

  • گره‌ها (Nodes):

* Format Down Alert

* Send WhatsApp Alert

* Continue Next API

  • جزئیات گره‌ها:

1. Format Down Alert

* نوع: code

* نقش: یک پیام هشدار قالب‌بندی شده برای واتس‌اپ ایجاد می‌کند.

* پیکربندی: یک رشته پیام شامل نام API، URL و یک مُهر زمانی با ایموجی‌ها می‌سازد.

* ورودی/خروجی: داده‌های API را دریافت می‌کند؛ داده‌های غنی شده با alertMessage را خروجی می‌دهد.

* مشکلات احتمالی: خطاهای عبارت اگر فیلدهای داده ورودی مورد نیاز گم شده باشند.

2. Send WhatsApp Alert

* نوع: whatsApp.send

* نقش: پیام هشدار قالب‌بندی شده را از طریق واتس‌اپ ارسال می‌کند.

* پیکربندی: پیام alertMessage را به شماره تلفن +919974388925 با استفاده از phoneNumberId 550325331503475 ارسال می‌کند. به اعتبارنامه‌های واتس‌اپ API با نام "WhatsApp account API" نیاز دارد.

* ورودی/خروجی: داده‌های هشدار را دریافت می‌کند؛ به Continue Next API خروجی می‌دهد.

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

3. Continue Next API

* نوع: code

* نقش: تعداد تلاش‌های مجدد را در صورت پاسخگو بودن API بازنشانی می‌کند و برای پردازش API بعدی در لیست سیگنال می‌دهد.

* پیکربندی: retryCount را در صورت true بودن hasResponse به ۰ بازنشانی می‌کند. داده‌ها را برای مدیریت مورد بعدی به گره Process Each API برمی‌گرداند.

* ورودی/خروجی: داده‌ها را از شاخه‌های مختلف می‌پذیرد؛ به Process Each API خروجی می‌دهد.

* مشکلات احتمالی: خطاهای منطقی اگر داده‌های ورودی نامعتبر باشند.

۴. جریان کنترل و حلقه‌زنی

این بلوک اطمینان حاصل می‌کند که گردش کار به درستی از طریق لیست APIها تکرار می‌شود و حلقه تلاش مجدد را مدیریت می‌کند.

  • گره‌ها (Nodes):

* Process Each API (خروجی دوم)

* Continue Next API

* Schedule Trigger

  • جزئیات گره‌ها:

1. Process Each API (خروجی دوم)

* نوع: splitInBatches

* نقش: داده‌ها را از Continue Next API برای پردازش API بعدی در لیست دریافت می‌کند و اجرای متوالی را تضمین می‌کند.

* پیکربندی: جریان دسته را مدیریت می‌کند.

* ورودی/خروجی: از Continue Next API دریافت می‌کند؛ به Init Retry Counter خروجی می‌دهد.

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

2. Continue Next API

* نقش: بررسی‌های موفقیت‌آمیز API و موفقیت‌های تلاش مجدد را به حلقه پردازش دسته برمی‌گرداند. (برای جزئیات به بخش ۳ مراجعه کنید).

3. Schedule Trigger

* نقش: کل فرآیند را هر ۱۵ دقیقه راه‌اندازی می‌کند و نظارت مداوم را تضمین می‌کند. (برای جزئیات به بخش ۱ مراجعه کنید).

---

جدول خلاصه

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))یادداشت چسبان (Sticky Note)
Schedule TriggerscheduleTriggerراه‌اندازی گردش کار هر ۱۵ دقیقهRead API List## نحوه کار<br>* Schedule Trigger → هر ۱۵ دقیقه فعال می‌شود.
Read API ListgoogleSheets.listخواندن لیست API از گوگل شیتSchedule TriggerProcess Each API* Read API List → تمام URLهای API را از یک گوگل شیت دریافت می‌کند.
Process Each APIsplitInBatchesتقسیم لیست API برای پردازش جداگانهRead API List, Continue Next APIInit Retry Counter, (خروجی دوم به Init Retry Counter)* Process Each API → هر ورودی API را پیمایش می‌کند.
Init Retry Countercodeمقداردهی اولیه شمارنده تلاش مجدد به ۰Process Each APITest API* Init Retry Counter → retryCount = 0 را مقداردهی اولیه می‌کند.
Test APIhttpRequestارسال درخواست اولیه APIInit Retry CounterCheck Response* Test API → اولین درخواست را به API ارسال می‌کند.
Check Responsecodeبررسی دریافت پاسخ از APITest APIIf No Response* Check Response → بررسی می‌کند که آیا پاسخ معتبری دریافت شده است.
If No Responseifانشعاب در صورت عدم دریافت پاسخCheck ResponseWait 10 Min, Continue Next API* If No Response → در صورت عدم پاسخگویی، به جریان تلاش مجدد منشعب می‌شود.
Wait 10 Minwaitانتظار ۱۰ دقیقه قبل از تلاش مجددIf No Response, If Still No Retry > 4Increment Retry, Retry API* Wait 10 Min → Increment Retry → Retry API → Check Retry Response.
Increment Retrycodeافزایش شمارنده تلاش مجددWait 10 MinRetry API
Retry APIhttpRequestارسال درخواست تلاش مجدد APIIncrement RetryCheck Retry Response
Check Retry Responsecodeبررسی دریافت پاسخ از تلاش مجددRetry APIIf Still No Response* Check Retry Response → پاسخ را پس از تلاش مجدد تأیید می‌کند.
If Still No Responseifانشعاب در صورت شکست تلاش مجددCheck Retry ResponseIf Still No Retry > 4, Continue Next API* If Still No Response → بررسی می‌کند که آیا تلاش‌های مجدد بیشتری مجاز است.
If Still No Retry > 4ifبررسی عبور شمارنده تلاش مجدد از حد مجازIf Still No ResponseFormat Down Alert, Wait 10 Min* If Still No Retry > 4 → تصمیم می‌گیرد که آیا هشدار ارسال شود یا دوباره منتظر بماند.
Format Down Alertcodeقالب‌بندی پیام هشدار واتس‌اپIf Still No Retry > 4Send WhatsApp Alert* Format Down Alert → محتوای پیام هشدار را ایجاد می‌کند.
Send WhatsApp AlertwhatsApp.sendارسال پیام هشدار از طریق واتس‌اپFormat Down AlertContinue Next API* Send WhatsApp Alert → اعلان را ارسال می‌کند.
Continue Next APIcodeبازنشانی شمارنده تلاش مجدد و ادامه به API بعدیIf No Response, If Still No Response, Send WhatsApp AlertProcess Each API* Continue Next API → retryCount را بازنشانی کرده و به مورد بعدی در لیست منتقل می‌شود.

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

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

این گردش کار n8n چگونه در دسترس بودن API را نظارت می‌کند؟

این گردش کار به طور دوره‌ای لیستی از URLهای API را از یک گوگل شیت می‌خواند و با استفاده از گره httpRequest وضعیت پاسخگویی آن‌ها را بررسی می‌کند.

در صورت عدم پاسخگویی API چه اتفاقی می‌افتد؟

در صورت عدم پاسخگویی API، گردش کار ابتدا منطق تلاش مجدد را با تأخیر اجرا می‌کند. اگر API همچنان در دسترس نباشد، یک هشدار فوری از طریق واتس‌اپ ارسال می‌شود.

چگونه می‌توان لیست APIهایی که باید نظارت شوند را مدیریت کرد؟

لیست APIها در یک گوگل شیت نگهداری می‌شود و گردش کار به طور خودکار این لیست را می‌خواند. شما می‌توانید با ویرایش گوگل شیت، APIهای جدید اضافه کرده یا APIهای موجود را حذف کنید.

چه نوع هشدارهایی ارسال می‌شود و از چه طریقی؟

هشدارهای فوری از طریق واتس‌اپ ارسال می‌شوند تا به محض تأیید عدم در دسترس بودن یک API، به شما اطلاع داده شود.

workflowهای مرتبط

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