مستندات n8n
74+ نود
📱

واتساپ

WhatsApp Business

اتوماسیون واتساپ: ارسال پیام، Template، رسانه، پیام تعاملی و پشتیبانی مشتریان

ارتباطات
متوسط
۰ بازدید
n8n 1.0+

نمای کلی

نود WhatsApp Business یکی از مهم‌ترین نودهای n8n برای ارتباط با مشتریان است، به خصوص برای کسب‌وکارهایی که بازار بین‌المللی دارند.

WhatsApp Business Cloud API:

واتساپ از طریق Meta (فیسبوک سابق) یک API قدرتمند برای کسب‌وکارها ارائه می‌دهد. این API به شما امکان می‌دهد پیام‌های خودکار ارسال کنید، به پیام‌های مشتریان پاسخ دهید، و فرآیندهای ارتباطی را اتوماسیون کنید.

قابلیت‌های کلیدی:

  • ارسال پیام متنی ساده
  • ارسال Template Message (پیام‌های از پیش تأیید شده)
  • ارسال تصویر، ویدیو، صدا و فایل
  • ارسال لوکیشن و اطلاعات تماس
  • پیام‌های تعاملی: دکمه‌ها (Buttons) و لیست‌ها (Lists)
  • علامت‌گذاری پیام به عنوان خوانده شده
  • آپلود، دانلود و مدیریت رسانه
  • ارسال Reaction (واکنش اموجی)
  • مدیریت پروفایل کسب‌وکار

Cloud API در مقابل On-Premise API:

  • Cloud API: میزبانی توسط Meta، راه‌اندازی ساده‌تر، بروزرسانی خودکار، مقیاس‌پذیر
  • On-Premise API: میزبانی روی سرور شما، کنترل بیشتر، مناسب سازمان‌های بزرگ

قانون پنجره ۲۴ ساعته:

  • پس از آخرین پیام کاربر، ۲۴ ساعت فرصت دارید پیام آزاد ارسال کنید
  • خارج از پنجره ۲۴ ساعته فقط Template Message مجاز است
  • Template Messageها باید از قبل توسط Meta تأیید شوند

کاربردها در ایران و بین‌المللی:

  • ارسال اعلان سفارش و تحویل
  • پشتیبانی مشتریان خارجی
  • یادآوری نوبت و قرار ملاقات
  • تأیید پرداخت و فاکتور
  • ارسال کاتالوگ محصولات
  • بازاریابی و پروموشن با Template
  • ربات پاسخگوی خودکار

احراز هویت

احراز هویت WhatsApp Business Cloud API

پیش‌نیازها:

  1. 1اکانت فیسبوک (Meta)
  2. 2اکانت Meta Business Suite
  3. 3اپلیکیشن ثبت شده در Meta for Developers
  4. 4شماره تلفن تجاری تأیید شده

مراحل راه‌اندازی:

#### مرحله ۱: ایجاد اکانت Meta Business

  1. 1به [business.facebook.com](https://business.facebook.com) بروید
  2. 2ثبت‌نام یا ورود کنید
  3. 3اطلاعات کسب‌وکار را وارد کنید
  4. 4تأیید هویت کسب‌وکار (ممکن است چند روز طول بکشد)

#### مرحله ۲: ایجاد اپلیکیشن در Meta for Developers

  1. 1به [developers.facebook.com](https://developers.facebook.com) بروید
  2. 2My Apps > Create App
  3. 3نوع اپ: Business
  4. 4نام و Business Account انتخاب کنید
  5. 5در داشبورد اپ، WhatsApp را اضافه کنید

#### مرحله ۳: دریافت Access Token

  1. 1در داشبورد WhatsApp > API Setup
  2. 2Temporary Access Token را کپی کنید (۲۴ ساعت اعتبار)
  3. 3برای Production: System User Token بسازید:
  • Business Settings > System Users > Add
  • نقش: Admin
  • Generate Token با دسترسی whatsapp_business_messaging و whatsapp_business_management

#### مرحله ۴: تنظیم شماره تلفن

  1. 1WhatsApp > API Setup > Add phone number
  2. 2شماره تجاری خود را وارد کنید
  3. 3کد تأیید SMS/تماس را وارد کنید
  4. 4Phone Number ID را یادداشت کنید

#### مرحله ۵: تنظیم در n8n

  1. 1Credentials > WhatsApp Business Cloud API
  2. 2فیلدها:
code
Access Token: YOUR_ACCESS_TOKEN
   Business Account ID: YOUR_BUSINESS_ACCOUNT_ID
   Phone Number ID: YOUR_PHONE_NUMBER_ID
  1. 1Test Connection بزنید

تنظیم Webhook (دریافت پیام):

  1. 1در داشبورد Meta > WhatsApp > Configuration
  2. 2Callback URL: آدرس n8n Webhook شما
  3. 3Verify Token: یک رشته دلخواه
  4. 4فیلدهای اشتراک: messages, message_deliveries, message_reads

نکات امنیتی:

  • System User Token برای Production استفاده کنید (بدون انقضا)
  • Temporary Token فقط برای تست (۲۴ ساعت اعتبار)
  • Token را در Environment Variables ذخیره کنید
  • دسترسی‌های Token را محدود کنید
  • Webhook Verify Token قوی انتخاب کنید

عملیات‌های موجود

1

sendTextMessage

ارسال پیام متنی ساده به شماره واتساپ مقصد

2

sendTemplate

ارسال پیام Template از پیش تأیید شده توسط Meta (برای خارج از پنجره ۲۴ ساعته)

3

sendImage

ارسال عکس به مخاطب از طریق URL یا Media ID

4

sendVideo

ارسال فایل ویدیویی (حداکثر 16MB)

5

sendDocument

ارسال فایل (PDF, Word, Excel و ...) حداکثر 100MB

6

sendAudio

ارسال فایل صوتی (MP3, AAC, OGG و ...) حداکثر 16MB

7

sendLocation

ارسال موقعیت مکانی با نام و آدرس

8

sendContact

ارسال کارت ویزیت / اطلاعات تماس

9

sendInteractiveButtons

ارسال پیام با دکمه‌های قابل کلیک (حداکثر 3 دکمه)

10

sendInteractiveList

ارسال پیام با لیست انتخابی (حداکثر 10 آیتم در هر بخش)

11

markAsRead

علامت‌گذاری پیام به عنوان خوانده شده (دو تیک آبی)

12

sendReaction

ارسال اموجی واکنش به یک پیام

13

uploadMedia

آپلود فایل رسانه‌ای و دریافت Media ID برای استفاده در پیام‌ها

14

getMediaUrl

دریافت لینک دانلود فایل رسانه‌ای از Media ID

15

downloadMedia

دانلود فایل رسانه‌ای ارسال شده توسط مخاطب

16

getBusinessProfile

مشاهده اطلاعات پروفایل WhatsApp Business

17

updateBusinessProfile

تغییر اطلاعات پروفایل تجاری واتساپ

کاربردهای متداول

1. اعلان سفارش و تحویل

هنگام ثبت یا ارسال سفارش:

code
Webhook (سفارش جدید)
  → Set (آماده‌سازی داده)
  → WhatsApp (sendTemplate)
    PhoneNumberId: YOUR_PHONE_ID
    To: {{$json.customerPhone}}
    TemplateName: order_confirmation
    LanguageCode: fa
    Components: [
      {type: "body", parameters: [
        {type: "text", text: "{{$json.orderId}}"},
        {type: "text", text: "{{$json.totalAmount}} تومان"},
        {type: "text", text: "{{$json.estimatedDelivery}}"}
      ]}
    ]

2. ربات پشتیبانی مشتریان

پاسخ خودکار به پیام‌های واتساپ:

code
Webhook (پیام واتساپ دریافتی)
  → WhatsApp (markAsRead)
    MessageId: {{$json.messageId}}
  → Switch (بررسی محتوای پیام)
    Case "سلام/شروع":
      → WhatsApp (sendInteractiveButtons)
        BodyText: "سلام! به پشتیبانی خوش آمدید. چه کاری می‌توانم انجام دهم؟"
        Buttons: [
          {id: "track_order", title: "پیگیری سفارش"},
          {id: "products", title: "لیست محصولات"},
          {id: "human_support", title: "ارتباط با پشتیبانی"}
        ]
    Case "track_order":
      → MySQL (جستجوی سفارش)
      → WhatsApp (sendTextMessage)
        Text: "سفارش شما: {{$json.status}}"
    Default:
      → OpenAI (Chat)
      → WhatsApp (sendTextMessage)

3. یادآوری نوبت و قرار ملاقات

ارسال یادآوری ۲۴ ساعت و ۱ ساعت قبل:

code
Schedule (هر ساعت)
  → MySQL (نوبت‌های فردا)
  → Loop
    → WhatsApp (sendTemplate)
      TemplateName: appointment_reminder
      Components: [
        {type: "body", parameters: [
          {type: "text", text: "{{$json.patientName}}"},
          {type: "text", text: "{{$json.doctorName}}"},
          {type: "text", text: "{{$json.appointmentTime}}"}
        ]}
      ]
    → Wait (500ms)

4. تأیید پرداخت و ارسال فاکتور

پس از پرداخت موفق:

code
Webhook (پرداخت موفق)
  → HTTP Request (دریافت PDF فاکتور)
  → WhatsApp (uploadMedia)
    File: Binary PDF
    MimeType: application/pdf
  → WhatsApp (sendDocument)
    To: {{$json.customerPhone}}
    DocumentUrl: {{$json.mediaId}}
    Filename: "فاکتور-{{$json.invoiceId}}.pdf"
    Caption: "فاکتور خرید شما - مبلغ: {{$json.amount}} تومان"

5. ارسال کاتالوگ محصولات با لیست تعاملی

نمایش محصولات به صورت لیست:

code
Webhook (درخواست کاتالوگ)
  → MySQL (دسته‌بندی محصولات)
  → Code (ساخت ساختار لیست)
  → WhatsApp (sendInteractiveList)
    BodyText: "محصولات ما را مشاهده کنید:"
    ButtonText: "مشاهده محصولات"
    Sections: [
      {
        title: "لوازم الکترونیکی",
        rows: [
          {id: "p1", title: "گوشی سامسونگ", description: "12,500,000 تومان"},
          {id: "p2", title: "لپ‌تاپ ایسوس", description: "28,000,000 تومان"}
        ]
      },
      {
        title: "لوازم جانبی",
        rows: [
          {id: "p3", title: "هدفون بلوتوثی", description: "850,000 تومان"},
          {id: "p4", title: "پاوربانک", description: "450,000 تومان"}
        ]
      }
    ]

6. پیگیری ارسال مرسوله

اعلان مراحل ارسال:

code
Webhook (بروزرسانی وضعیت ارسال)
  → Switch (وضعیت)
    Case "shipped":
      → WhatsApp (sendTemplate)
        TemplateName: order_shipped
    Case "out_for_delivery":
      → WhatsApp (sendTextMessage)
        Text: "مرسوله شما در حال تحویل است."
      → WhatsApp (sendLocation)
        Latitude: {{$json.driverLat}}
        Longitude: {{$json.driverLng}}
        Name: "موقعیت پیک"
    Case "delivered":
      → WhatsApp (sendInteractiveButtons)
        BodyText: "سفارش تحویل داده شد. از خرید شما ممنونیم!"
        Buttons: [
          {id: "rate", title: "امتیاز دهید"},
          {id: "issue", title: "مشکلی دارم"}
        ]

7. بازاریابی و ارسال پروموشن

ارسال انبوه Template تبلیغاتی:

code
Schedule (شنبه ساعت 10 صبح)
  → MySQL (مشتریان فعال با رضایت بازاریابی)
  → Loop
    → WhatsApp (sendTemplate)
      TemplateName: weekly_promotion
      Components: [
        {type: "header", parameters: [
          {type: "image", image: {link: "https://example.com/promo.jpg"}}
        ]},
        {type: "body", parameters: [
          {type: "text", text: "{{$json.customerName}}"},
          {type: "text", text: "20%"},
          {type: "text", text: "PROMO20"}
        ]},
        {type: "button", sub_type: "url", index: 0,
          parameters: [{type: "text", text: "winter-sale"}]
        }
      ]
    → Wait (1 second)  // رعایت Rate Limit
  → MySQL (لاگ ارسال)

8. پاسخ خودکار هوشمند با AI

ترکیب واتساپ با OpenAI:

code
Webhook (پیام واتساپ)
  → WhatsApp (markAsRead)
  → IF (پیام متنی)
    → OpenAI (Chat)
      System: "تو دستیار فارسی‌زبان فروشگاه آنلاین هستی.
      پاسخ‌ها باید کوتاه و مفید باشند.
      اگر نمی‌دانی، بگو به پشتیبانی انسانی وصل می‌کنی."
      User: {{$json.text}}
      Temperature: 0.3
    → WhatsApp (sendTextMessage)
      Text: {{$json.response}}
  → IF (تصویر)
    → WhatsApp (getMediaUrl)
    → WhatsApp (downloadMedia)
    → OpenAI (Vision)
    → WhatsApp (sendTextMessage)

9. سیستم نظرسنجی رضایت مشتری

دریافت بازخورد پس از خرید:

code
Schedule (هر شب)
  → MySQL (خریدهای ۲ روز قبل بدون نظرسنجی)
  → Loop
    → WhatsApp (sendInteractiveButtons)
      BodyText: "{{$json.name}} عزیز، از خرید محصول {{$json.product}} چقدر راضی هستید؟"
      Buttons: [
        {id: "rate_5", title: "عالی بود"},
        {id: "rate_3", title: "معمولی بود"},
        {id: "rate_1", title: "ناراضی هستم"}
      ]
    → Wait (500ms)

Webhook (پاسخ دکمه)
  → MySQL (ذخیره نظرسنجی)
  → IF (rate_1)
    → WhatsApp (sendTextMessage)
      Text: "متأسفیم. لطفاً مشکل خود را شرح دهید تا پیگیری کنیم."
    → MySQL (ایجاد تیکت پشتیبانی)

10. ثبت سفارش از طریق واتساپ

سفارش‌گیری تعاملی:

code
Webhook (پیام /order)
  → WhatsApp (sendInteractiveList)
    BodyText: "دسته مورد نظر را انتخاب کنید:"
    ButtonText: "مشاهده دسته‌ها"
    Sections: [محصولات]

Webhook (انتخاب محصول)
  → MySQL (اطلاعات محصول)
  → WhatsApp (sendImage)
    ImageUrl: {{$json.imageUrl}}
    Caption: "{{$json.name}}\nقیمت: {{$json.price}} تومان\n\nبرای سفارش عدد بفرستید"

Webhook (تعداد)
  → MySQL (ثبت سفارش)
  → WhatsApp (sendTextMessage)
    Text: "سفارش ثبت شد!\nکد پیگیری: {{$json.orderId}}"

11. گزارش روزانه به مدیران

ارسال آمار فروش:

code
Schedule (هر شب ساعت 23)
  → MySQL (آمار فروش روز)
  → Code (فرمت فارسی)
  → WhatsApp (sendTextMessage)
    To: MANAGER_PHONE
    Text: "📊 گزارش فروش امروز\n\nتعداد سفارش: {{$json.orders}}\nمبلغ کل: {{$json.total}} تومان\nمیانگین: {{$json.avg}} تومان\nپرفروش‌ترین: {{$json.topProduct}}"

12. احراز هویت دو مرحله‌ای (OTP)

ارسال کد تأیید:

code
Webhook (درخواست OTP)
  → Code (تولید کد 6 رقمی)
  → Redis (ذخیره کد با TTL 5 دقیقه)
  → WhatsApp (sendTemplate)
    TemplateName: otp_verification
    Components: [
      {type: "body", parameters: [
        {type: "text", text: "{{$json.otpCode}}"}
      ]},
      {type: "button", sub_type: "url", index: 0,
        parameters: [{type: "text", text: "{{$json.otpCode}}"}]
      }
    ]

نکات حرفه‌ای

نکات حرفه‌ای

  1. 1فرمت شماره تلفن: همیشه با کد کشور و بدون صفر اول:
code
ایران: 989121234567 (نه 09121234567 یا +989121234567)
   ترکیه: 905321234567
   امارات: 971501234567
  1. 1ساخت Template Message حرفه‌ای:
code
// متن Template در Meta Business Suite:
   "{{1}} عزیز، سفارش شماره {{2}} با موفقیت ثبت شد.
   مبلغ: {{3}} تومان
   زمان تحویل: {{4}}"

   // ارسال در n8n:
   Components: [{
     type: "body",
     parameters: [
       {type: "text", text: customerName},
       {type: "text", text: orderId},
       {type: "text", text: amount},
       {type: "text", text: deliveryDate}
     ]
   }]
  1. 1مدیریت پنجره ۲۴ ساعته: زمان آخرین پیام کاربر را ذخیره کنید:
code
Webhook (پیام دریافتی)
     → MySQL (ذخیره lastMessageAt = NOW())
     → ادامه workflow...

   // قبل از ارسال:
   MySQL (بررسی lastMessageAt)
     → IF (NOW() - lastMessageAt < 24h)
       → پیام آزاد (Text, Image, ...)
     → ELSE
       → Template Message
  1. 1پیام تعاملی با دکمه (Interactive Buttons):
json
{
     "type": "button",
     "body": {"text": "سفارش شما آماده است. تأیید می‌کنید؟"},
     "action": {
       "buttons": [
         {"type": "reply", "reply": {"id": "confirm", "title": "تأیید"}},
         {"type": "reply", "reply": {"id": "cancel", "title": "لغو"}},
         {"type": "reply", "reply": {"id": "change", "title": "تغییر آدرس"}}
       ]
     }
   }
  1. 1پیام تعاملی با لیست (Interactive List):
json
{
     "type": "list",
     "body": {"text": "دسته‌بندی مورد نظر را انتخاب کنید:"},
     "action": {
       "button": "انتخاب دسته",
       "sections": [{
         "title": "محصولات",
         "rows": [
           {"id": "cat_1", "title": "موبایل", "description": "گوشی و تبلت"},
           {"id": "cat_2", "title": "لپ‌تاپ", "description": "نوت‌بوک و PC"}
         ]
       }]
     }
   }
  1. 1ارسال عکس با Caption فارسی:
code
WhatsApp (sendImage)
     ImageUrl: "https://example.com/product.jpg"
     Caption: "*محصول جدید*\n\nنام: {{$json.name}}\nقیمت: {{$json.price}} تومان\n\nبرای خرید عدد 1 ارسال کنید"

نکته: از *bold* و _italic_ در Caption پشتیبانی می‌شود.

  1. 1Webhook امن برای دریافت پیام:
code
// تأیید امضای Webhook Meta:
   Code Node:
   const crypto = require('crypto');
   const signature = $headers['x-hub-signature-256'];
   const expected = 'sha256=' + crypto
     .createHmac('sha256', APP_SECRET)
     .update(JSON.stringify($json))
     .digest('hex');
   if (signature !== expected) throw new Error('Invalid signature');
  1. 1مدیریت وضعیت پیام (Delivery/Read):
code
Webhook (Status Update)
     → Switch (status)
       Case "sent": MySQL (وضعیت: ارسال شد)
       Case "delivered": MySQL (وضعیت: تحویل شد)
       Case "read": MySQL (وضعیت: خوانده شد)
       Case "failed": Telegram (هشدار خطا)
  1. 1جلوگیری از Spam و حفظ Quality Rating:
  • حداکثر ۱ پیام تبلیغاتی در هفته
  • همیشه گزینه انصراف (Opt-out) بگذارید
  • پیام‌ها ارزشمند و مرتبط باشند
  • از ارسال به شماره‌های ناشناس خودداری کنید
  • Quality Rating را در Meta Business Suite پایش کنید
  1. 1محدودیت‌های مهم واتساپ:
code
پیام متنی: 4096 کاراکتر
    Caption: 1024 کاراکتر
    دکمه‌های تعاملی: حداکثر 3 عدد
    آیتم لیست: حداکثر 10 در هر بخش
    بخش‌های لیست: حداکثر 10 بخش
    عکس: 5 مگابایت
    ویدیو: 16 مگابایت
    صوت: 16 مگابایت
    فایل: 100 مگابایت
    Reaction: فقط یک اموجی
    Template نام: حداکثر 512 کاراکتر
  1. 1افزایش تدریجی سقف ارسال (Messaging Limits):
code
Tier 1: 1,000 مخاطب یکتا / 24 ساعت
    Tier 2: 10,000 مخاطب یکتا / 24 ساعت
    Tier 3: 100,000 مخاطب یکتا / 24 ساعت
    Tier 4: نامحدود

    // افزایش Tier:
    - Quality Rating بالا نگه دارید
    - حجم ارسال را تدریجی افزایش دهید
    - 2 برابر Tier فعلی ارسال کنید تا ارتقا دهند
  1. 1Template فارسی: نکات تأیید سریع:
  • از زبان رسمی و مؤدبانه استفاده کنید
  • اطلاعات ارزشمند ارائه دهید نه فقط تبلیغ
  • نمونه مقادیر واقعی در زمان ثبت Template ارائه دهید
  • لینک کوتاه قابل شناسایی استفاده کنید
  • Category صحیح انتخاب کنید: Marketing, Utility, Authentication
  1. 1تفاوت نوع Template:
code
Marketing: پروموشن، تخفیف، اخبار
      → نیاز به Opt-in کاربر
      → ممکن است توسط Meta محدود شود

    Utility: اعلان سفارش، تحویل، تأیید
      → بدون نیاز به Opt-in
      → Rate Limit بالاتر

    Authentication: OTP و تأیید هویت
      → بدون نیاز به Opt-in
      → اولویت بالا در ارسال
  1. 1Cache مدیای پرتکرار: فایل‌هایی که مکرر ارسال می‌شوند را یک بار آپلود کنید:
code
// ابتدا آپلود و ذخیره Media ID
    WhatsApp (uploadMedia)
      → MySQL (ذخیره: file_hash → media_id)

    // استفاده مکرر بدون آپلود مجدد
    MySQL (بررسی media_id)
      → IF (موجود) → WhatsApp (sendImage با media_id)
      → ELSE → Upload → WhatsApp (sendImage)

نکته: Media ID پس از ۳۰ روز منقضی می‌شود.

  1. 1Error Handling حرفه‌ای: مدیریت خطاها در ارسال انبوه:
code
Loop (لیست مخاطبین)
      → WhatsApp (sendTemplate)
        → On Error:
          → IF (429 Rate Limit)
            → Wait (30 seconds) → Retry
          → IF (400 Invalid Number)
            → MySQL (علامت شماره نامعتبر)
          → IF (131026 Outside Window)
            → Queue (صف ارسال Template بعدی)
          → Default:
            → Telegram (هشدار ادمین)
            → MySQL (لاگ خطا)
  1. 1پشتیبانی فارسی و RTL: واتساپ به صورت پیش‌فرض فارسی و RTL پشتیبانی می‌کند:
  • نیازی به تگ RTL نیست
  • اموجی در پیام فارسی بدون مشکل نمایش داده می‌شود
  • لینک‌ها در متن فارسی به درستی کار می‌کنند
  • برای ترکیب فارسی و انگلیسی از خط جدید استفاده کنید

رفع مشکلات

خطاهای رایج و راه‌حل‌ها

1. خطای "Invalid Access Token" (401)

علت: Token نامعتبر یا منقضی شده

راه‌حل

  • Temporary Token فقط ۲۴ ساعت اعتبار دارد
  • System User Token بسازید (بدون انقضا)
  • مطمئن شوید Token دسترسی whatsapp_business_messaging دارد
  • Token را از Business Settings > System Users بروز کنید

2. خطای "Phone number not registered" (400)

علت: شماره مقصد واتساپ فعال ندارد

راه‌حل

  • فرمت شماره: کد کشور + شماره بدون صفر: 989121234567
  • شماره باید واتساپ فعال داشته باشد
  • از + در ابتدای شماره استفاده نکنید
  • شماره‌های تست فقط با شماره‌های تأیید شده کار می‌کنند

3. خطای "Template not found" یا "Template rejected"

علت: Template وجود ندارد یا رد شده

راه‌حل

  • نام Template دقیقاً مطابق داشبورد Meta باشد (case-sensitive)
  • وضعیت Template: باید APPROVED باشد
  • زبان Template صحیح باشد: fa نه fa_IR
  • متغیرهای Template تعداد و ترتیبشان صحیح باشد
  • Template جدید ۲۴-۴۸ ساعت زمان تأیید می‌برد

4. خطای "Outside 24-hour window" (131026)

علت: تلاش برای ارسال پیام آزاد خارج از پنجره ۲۴ ساعته

راه‌حل

  • پس از ۲۴ ساعت از آخرین پیام کاربر فقط Template مجاز است
  • از Template Message استفاده کنید
  • مطمئن شوید پنجره ۲۴ ساعته باز است:
code
IF (lastMessageTime + 24h > now)
    → WhatsApp (sendTextMessage)   // پیام آزاد
  ELSE
    → WhatsApp (sendTemplate)      // فقط Template

5. خطای "Rate limit hit" (429)

علت: تعداد درخواست بیش از حد مجاز

راه‌حل

  • محدودیت‌ها بر اساس Tier:
  • Business: 250 پیام/ثانیه
  • شماره جدید: شروع از 250 پیام/روز
  • بین ارسال‌ها Wait اضافه کنید
  • ارسال انبوه را در ساعات مختلف پخش کنید
  • مقیاس پیام‌رسانی را تدریجی افزایش دهید

6. خطای "Media upload failed"

علت: فرمت یا حجم نادرست رسانه

راه‌حل

  • فرمت‌های مجاز:
  • تصویر: JPEG, PNG (حداکثر 5MB)
  • ویدیو: MP4, 3GPP (حداکثر 16MB)
  • صوت: MP3, AAC, OGG (حداکثر 16MB)
  • فایل: PDF, DOC, XLS و ... (حداکثر 100MB)
  • URL رسانه باید HTTPS و عمومی باشد
  • از MediaID بجای URL برای ارسال مکرر استفاده کنید

7. Template Message متغیرها نمایش نمی‌دهد

علت: ساختار Components اشتباه است

راه‌حل

  • ترتیب متغیرها باید با Template مطابقت داشته باشد
  • ساختار صحیح:
json
{
    "type": "body",
    "parameters": [
      {"type": "text", "text": "مقدار اول"},
      {"type": "text", "text": "مقدار دوم"}
    ]
  }
  • اگر Template دارای header/button است، همه را ارسال کنید

8. Webhook پیام دریافت نمی‌کند

علت: تنظیمات Webhook نادرست

راه‌حل

  • Callback URL باید HTTPS و عمومی باشد
  • Verify Token در n8n و Meta یکسان باشد
  • فیلدهای اشتراک فعال شوند: messages
  • n8n Webhook باید در حالت Production فعال باشد
  • فایروال پورت‌ها را چک کنید

9. پیام‌ها با تأخیر ارسال می‌شوند

علت: صف پیام واتساپ یا مشکل شبکه

راه‌حل

  • وضعیت Phone Number Quality Rating را بررسی کنید
  • اگر Rating پایین باشد سرعت ارسال کاهش می‌یابد
  • شماره مسدود نشده باشد
  • تعداد ارسال روزانه را بررسی کنید

10. خطای "Business verification required"

علت: حساب کسب‌وکار تأیید نشده

راه‌حل

  • به Meta Business Suite بروید
  • فرآیند Business Verification را تکمیل کنید
  • مدارک هویت کسب‌وکار آپلود کنید
  • تأیید ممکن است ۲-۷ روز کاری طول بکشد
اشتراک‌گذاری:

آیا این مستندات مفید بود؟