n8n اور WAHA کا استعمال کرتے ہوئے خود میزبان WhatsApp بوٹ کیسے بنایا جائے۔

واٹس ایپ کے پاس پہلے ہی بہت سارے صارفین ہیں۔ سپورٹ ٹکٹس، آرڈر اپ ڈیٹس، بکنگ کی اطلاعات، اور لیڈ کوالیفیکیشن کے لیے، WhatsApp چینلز میں اکثر تبادلوں کی شرح ہوتی ہے جو ای میل سے کئی گنا بہتر ہوتی ہے۔

تاہم، آفیشل واٹس ایپ بزنس کلاؤڈ API میں سست آن بورڈنگ، پری پیغامات پر ٹیمپلیٹ کی حدود، اور فی گفتگو کی قیمت ہے جسے پیمانے پر تیزی سے شامل کیا جا سکتا ہے۔

ایک اور طریقہ ہے۔ آپ ایک چھوٹے سرور پر اپنا WhatsApp HTTP گیٹ وے چلا سکتے ہیں، اسے اپنے ورک فلو انجن سے جوڑ سکتے ہیں، اور پھر تمام پیغامات (ان باؤنڈ اور آؤٹ باؤنڈ) اپنے زیر کنٹرول انفراسٹرکچر کے اندر رکھ سکتے ہیں۔ بات چیت کی کوئی ماہانہ فیس نہیں ہے، معمول کے جوابات کے لیے ٹیمپلیٹ کی منظوری نہیں ہے، اور نہ ہی کوئی فریق ثالث ثالث جو صارف کا ڈیٹا رکھتا ہے۔

اس ٹیوٹوریل میں ہم صرف اسے بنائیں گے۔ آخر میں، آپ کے پاس واٹس ایپ بوٹ ہوگا جو درج ذیل افعال انجام دیتا ہے۔

  • ویب ہک کے ذریعے آنے والے تمام پیغامات وصول کرتا ہے۔

  • n8n ورک فلو کے ذریعے پیغامات کو روٹنگ کرنا

  • کلیدی الفاظ، AI یا مطلوبہ API کالز پر مبنی خودکار جوابات

  • یہ دو اوپن سورس ٹولز کا استعمال کرتے ہوئے مکمل طور پر آپ کے اپنے سرورز پر چلتا ہے۔

آپ استعمال کریں گے منہ (WhatsApp HTTP API) بطور گیٹ وے اور n8n ورک فلو انجن کے ساتھ۔ دونوں ڈوکر پر چلتے ہیں، خود میزبانی کے لیے آزاد ہیں، اور سادہ خودکار جواب دہندگان سے لے کر مکمل CRM انضمام تک ہر چیز کا احاطہ کرتے ہیں۔

انڈیکس

جو آپ سیکھیں گے۔

  • WAHA اندرونی طور پر کیسے کام کرتا ہے اور آفیشل کلاؤڈ API کے بجائے WAHA کو کب استعمال کرنا ہے۔

  • ڈوکر کمپوز کا استعمال کرتے ہوئے WAHA اور n8n کو ساتھ ساتھ چلانے کا طریقہ

  • کیو آر کوڈ کو کیسے اسکین کریں اور اپنے واٹس ایپ اکاؤنٹ کو گیٹ وے سے کیسے باندھیں۔

  • WAHA کے ویب ہکس کو اپنے n8n ورک فلو سے کیسے جوڑیں۔

  • کی ورڈ پر مبنی خودکار جواب دینے والا بوٹ کیسے بنایا جائے۔

  • علیحدہ ورک فلو میں پیشگی تصدیق کیسے بھیجی جائے۔

  • اپنے پروڈکشن سیٹ اپ کو سخت کیسے کریں (HTTPS، API کیز، ریٹ محدود کرنا، قطار وضع)

شرطیں

  • لینکس سرور (کوئی بھی وی پی ایس کام کرے گا – 2 جی بی ریم چھوٹے بوٹس کے لیے کافی ہے)

  • ڈوکر اور ڈوکر کمپوز انسٹال ہیں۔

  • آپ کے سرور کی طرف اشارہ کرنے والے DNS کے ساتھ ایک عوامی میزبان نام، یا مقامی جانچ کے لیے اینگروک ٹنل۔

  • بوٹ کے لیے خصوصی طور پر استعمال کرنے کے لیے واٹس ایپ اکاؤنٹ (ذیل میں تفصیلات دیکھیں)

  • JSON اور HTTP درخواستوں کا بنیادی علم

پہلے n8n تجربے کی ضرورت نہیں ہے۔ خانوں کو دوسرے خانوں سے جوڑنے کے لیے انہیں گھسیٹنے کے قابل ہونے سے آپ کو بہاؤ پیدا کرنے دیتا ہے۔

نوٹ جس پر واٹس ایپ اکاؤنٹ استعمال کرنا ہے۔

WAHA بغیر ہیڈ لیس کرومیم عمل کے اندر اصل WhatsApp ویب سیشن چلا کر کام کرتا ہے۔ اپنے اصلی اکاؤنٹ کے ساتھ اسی طرح لاگ ان کریں جس طرح آپ اپنے براؤزر میں web.whatsapp.com کھولتے ہیں۔ میٹا بڑے پیمانے پر تجارتی استعمال کے لیے اس نقطہ نظر کو باضابطہ طور پر منظور نہیں کرتا ہے، اور ایک نمبر بڑی مقدار کو ممنوع قرار دے سکتا ہے۔

لہذا، اپنے بوٹ کے لیے ایک مخصوص نمبر استعمال کریں۔ پرائیویٹ واٹس ایپ استعمال نہ کریں۔ دوسرا سم، eSIM یا VoIP نمبر حاصل کریں جو WhatsApp ایکٹیویشن کو سپورٹ کرتا ہو۔ زیادہ تر چھوٹے کاروباری استعمال کے معاملات کے لیے آؤٹ باؤنڈ والیوم کو مناسب رکھنا کافی ہے۔

اگر آپ روزانہ ہزاروں مارکیٹنگ پیغامات بھیجنے کا ارادہ رکھتے ہیں تو آفیشل WhatsApp Business Cloud API پر جائیں۔ APIs اسی کے لیے ہیں۔ یہ ٹیوٹوریل درمیانی زمین کو نشانہ بناتا ہے: سپورٹ بوٹس، آرڈر اپ ڈیٹس، ریزرویشن کنفرمیشنز، اور اسی طرح کی بات چیت کے بہاؤ جو انٹرپرائز قیمتوں کے بغیر ریئل ٹائم کنٹرول کی ضرورت ہوتی ہے۔

WAHA اور آفیشل WhatsApp Business Cloud API کا موازنہ

یہ آپ کو یہ سمجھنے میں مدد کرتا ہے کہ کوڈ لکھنے سے پہلے ہر آپشن کب مناسب ہے۔

طول و عرض WAHA (خود میزبان) واٹس ایپ کلاؤڈ API (میٹا)
آن بورڈنگ QR کوڈ اسکین کریں – منٹوں میں تیار کاروباری توثیق، ایپ کا جائزہ — دنوں سے ہفتوں تک
خرچ صرف سرور کی قیمت قیمت فی گفتگو
ٹیمپلیٹ کی منظوری ضرورت نہیں 24 گھنٹے سے زیادہ پیشگی پیغامات کے لیے درکار ہے۔
سیشن ماڈل ایک واٹس ایپ ویب سیشن فی کور کنٹینر مقامی API، کوئی ویب سیشن نہیں۔
خطرہ زیادہ ناپسندیدہ حجم کے لیے اکاؤنٹ بلاک کیا جا سکتا ہے۔ رفتار کی حدیں ہیں، لیکن عام استعمال پر کوئی پابندی نہیں۔
وینڈر لاک ان کوئی نہیں – خالص اوپن سورس میٹا کے API اور قیمتوں سے متعلق
کے لیے بہترین موزوں ہے۔ سپورٹ بوٹس، چھوٹے ٹیم ورک فلو، اندرونی ٹولز بڑے پیمانے پر مارکیٹنگ، ریگولیٹڈ انڈسٹری، ہر ماہ 100,000+ پیغامات

نہ ہی بہتر ہے۔ اگر آپ چھوٹے کاروبار کے لیے سپورٹ ٹیم چلاتے ہیں، تو WAHA اکثر ایک عملی انتخاب ہوتا ہے۔ اگر آپ ایک بینک ہیں جو لین دین کے لاکھوں پیغامات بھیجتا ہے، تو آپ کو کلاؤڈ API کی ضرورت ہے۔ بہت سی ٹیمیں بات چیت کی حمایت کے لیے WAHA اور ہائی والیوم ٹرانزیکشن ٹریفک کے لیے Cloud API دونوں چلاتی ہیں۔

حصہ 1: WAHA کو سمجھنا

WAHA ایک اوپن سورس پروجیکٹ ہے جو WhatsApp ویب کو صاف REST API کے پیچھے لپیٹتا ہے۔ آپ POST /api/sendText اگر آپ اپنی چیٹ آئی ڈی کے ساتھ کوئی پیغام بھیجتے ہیں، تو WAHA آپ کو بھیجے گا۔ ویب ہک URL اور WAHA کو ترتیب دیں۔ POSTجب بھی کوئی پیغام آتا ہے، وہ اس URL پر جاتا ہے۔

اندرونی طور پر، WAHA ایک کرومیم مثال بناتا ہے، WhatsApp ویب کھولتا ہے، اور انجن کا استعمال کرتا ہے (whatsapp-web.js، NOWEBیا GOWS) سیشن کو خودکار کرنے کے لیے۔ آپ کا کوڈ ایسی کوئی پیچیدگی نہیں دکھاتا ہے۔ صرف HTTP API دکھائے جاتے ہیں۔

یہ منصوبہ دو شکلوں میں آتا ہے:

  • واہ کور – مفت، MIT لائسنس یافتہ، فی کنٹینر ایک فعال سیشن، کمیونٹی سپورٹ۔

  • واہ پلس – کمرشل لائسنس، ملٹی سیشن سپورٹ، ترجیحی معاونت، اور ایڈوانس اینڈ پوائنٹس تک رسائی۔

ایک ہی بوٹ بنانے والے زیادہ تر ڈویلپرز کے لیے، کور کافی ہے۔ آپ ہمیشہ بعد میں اپ گریڈ کر سکتے ہیں۔

سرکاری دستاویزات waha.devlike.pro پر ہے۔ اسے کسی اور ٹیب میں کھلا چھوڑ دیں۔ ہم آگے بڑھتے ہی مخصوص اختتامی نکات کا حوالہ دیں گے۔

حصہ 2: ڈوکر کے ساتھ WAHA چلانا

اپنے پروجیکٹ کے لیے ایک نئی ڈائرکٹری بنائیں۔

mkdir whatsapp-bot && cd whatsapp-bot

بنانا docker-compose.yml فائل:

services:
  waha:
    image: devlikeapro/waha:latest
    container_name: waha
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - WAHA_DASHBOARD_ENABLED=true
      - WAHA_DASHBOARD_USERNAME=admin
      - WAHA_DASHBOARD_PASSWORD=change-me-now
      - WHATSAPP_API_KEY=super-secret-key-change-me
      - WHATSAPP_DEFAULT_ENGINE=WEBJS
    volumes:
      - ./waha-sessions:/app/.sessions

نوٹ کرنے کے لئے چند چیزیں:

  • آپ کا ڈیش بورڈ صارف نام اور پاس ورڈ ویب UI کو محفوظ رکھتا ہے۔ http://your-server:3000. پورٹ کو عوامی طور پر ظاہر کرنے سے پہلے ہمیشہ ڈیفالٹ کو تبدیل کریں۔

  • WHATSAPP_API_KEY WAHA کو تمام HTTP درخواستیں ہیں۔ X-Api-Key ہیڈر اسے ڈیٹا بیس کے پاس ورڈ کی طرح سمجھیں۔

  • WHATSAPP_DEFAULT_ENGINE=WEBJS بالغ استعمال کریں۔ whatsapp-web.js انجن WAHA بھی سپورٹ کرتا ہے۔ NOWEB اور GOWS مختلف فوائد اور نقصانات کے ساتھ انجن — WEBJS آپ کی پہلی تعیناتی کے لیے سب سے محفوظ ڈیفالٹ ہے۔

  • والیوم ماؤنٹس دوبارہ شروع ہونے کے دوران سیشنز کو برقرار رکھتے ہیں۔ اس کے بغیر، جب بھی آپ کنٹینر کو دوبارہ بنائیں گے تو آپ کو QR کوڈ کو دوبارہ اسکین کرنا پڑے گا۔

کنٹینر شروع کریں۔

docker compose up -d
docker compose logs -f waha

WAHA تقریباً 20 سیکنڈ میں بوٹنگ مکمل کر لے گا۔ دورہ http://your-server:3000 اپنے ڈیش بورڈ کی اسناد کے ساتھ لاگ ان کریں۔

حصہ 3: واٹس ایپ سیشن شروع کرنا

WAHA ہر WhatsApp اکاؤنٹ کو "سیشن” کہتا ہے۔ WAHA Core آپ کو ایک وقت میں ایک سیشن کرنے کی اجازت دیتا ہے۔

ڈیش بورڈ سے ایک نیا سیشن شروع کریں۔ اور اسے ایک نام دیں۔ default. WAHA QR کوڈ دکھاتا ہے۔

آپ کے فون سے:

  1. واٹس ایپ کھولیں۔

  2. تھری ڈاٹ مینو (Android) یا سیٹنگز (iOS) کو تھپتھپائیں۔

  3. منسلک ڈیوائس کو منتخب کریں ← ڈیوائس کو جوڑیں۔

  4. اپنے کیمرے کو اسکرین پر QR کوڈ کی طرف رکھیں۔

چند سیکنڈ کے اندر، آپ کا ڈیش بورڈ ڈسپلے کرے گا: WORKING صورت حال سیشن لائیو ہے۔

آپ یہ API کے ذریعے بھی کر سکتے ہیں۔ سیشن شروع کریں (default سیشن کا نام URL پاتھ کے بطور انکوڈ کیا گیا ہے۔

curl -X POST http://your-server:3000/api/sessions/default/start \
  -H "X-Api-Key: super-secret-key-change-me"

کالیں بے ضمیر ہیں۔ اگر سیشن پہلے سے چل رہا ہے، تو کچھ نہیں ہوتا۔

QR کو PNG میں درآمد کریں۔

curl http://your-server:3000/api/default/auth/qr \
  -H "X-Api-Key: super-secret-key-change-me" \
  -H "Accept: image/png" \
  --output qr.png

اگر آپ اسے اسکین کرتے ہیں تو یہ اندر چلا جاتا ہے۔

خود کو پیغام بھیج کر جانچ کریں کہ آپ کا سیشن کام کر رہا ہے۔

curl -X POST http://your-server:3000/api/sendText \
  -H "X-Api-Key: super-secret-key-change-me" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "default",
    "chatId": "15555550123@c.us",
    "text": "Hello from WAHA!"
  }'

تبدیلی 15555550123 آپ کا فون نمبر (ملکی کوڈ اور نمبرز، نمبر +کوئی خالی جگہ نہیں، کوئی ڈیش نہیں)۔ کہ @c.us لاحقے انفرادی چیٹس میں ظاہر ہوتے ہیں۔ گروپ استعمال @g.us.

اگر آپ کے فون پر پیغام آیا تو مبارکباد۔ گیٹ وے کام کرتا ہے۔

حصہ 4: n8n چل رہا ہے۔

اضافہ n8n آپ کی خدمت docker-compose.yml WAHA کے ساتھ:

services:
  waha:
    # ... existing config

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=UTC
    volumes:
      - ./n8n-data:/home/node/.n8n

تبدیلی n8n.example.com آپ کے اصل ڈومین پر۔ خالصتاً مقامی ٹیسٹ کے لیے، سیٹ کریں:

- N8N_HOST=localhost
- N8N_PROTOCOL=http
- WEBHOOK_URL=http://localhost:5678/

سرور کے بغیر لیپ ٹاپ پر ویب ہک کی جانچ کرنے کے لیے، چلائیں: ngrok http 5678 دوسرے ٹرمینل میں اس طرح ngrok HTTPS URL استعمال کریں: WEBHOOK_URL. n8n استعمال کریں۔ WEBHOOK_URL کسی بیرونی سروس کو یہ بتانے کے لیے کہ کہاں پوسٹ کرنا ہے — اگر آپ یہ غلط کرتے ہیں تو آپ کا ویب ہک 404 ہو جائے گا۔

اسٹیک شروع کریں۔

docker compose up -d

دورہ http://your-server:5678. آپ کے پہلے وزٹ پر، n8n مالک اکاؤنٹ (ای میل اور پاس ورڈ) بنانے میں آپ کی رہنمائی کرے گا۔ آپ کو ہر آنے والے دورے کے لیے لاگ ان کرنے کی ضرورت ہوگی۔ پروڈکشن میں اضافی سیکیورٹی کے لیے، وائٹ لسٹنگ یا ایک اضافی تصدیقی پرت کا استعمال کرتے ہوئے n8n کو ریورس پراکسی کے پیچھے رکھیں۔ ہم اسے بعد میں قائم کریں گے۔

حصہ 5: n8n میں ویب ہک ٹرگر بنانا

ورک فلو بنائیں پر کلک کریں۔ آپ کو ایک خالی کینوس نظر آتا ہے۔

ویب ہک نوڈ کو شامل اور ترتیب دیں۔

  • HTTP طریقہ: میل

  • سڑک: whatsapp (یہ URL کا حصہ بن جائے گا)

  • ردعمل موڈ: فوری جواب

  • جوابی ڈیٹا: پہلی آئٹم JSON

ٹیسٹ ایونٹ وصول کریں پر کلک کریں۔ n8n دو یو آر ایل دکھاتا ہے: ایک ٹیسٹ یو آر ایل اور ایک پروڈکشن یو آر ایل۔ پروڈکشن یو آر ایل کاپی کریں۔ یہ مندرجہ ذیل ہے:

https://n8n.example.com/webhook/whatsapp

نہیں webhook-test – صرف اس وقت چلتا ہے جب ایڈیٹر کھلا ہو۔ آپ چاہتے ہیں webhook.

حصہ 6: WAHA کو n8n سے جوڑنا

WAHA کو کسی بھی WhatsApp ایونٹ میں ویب ہکس پر پوسٹ کیا جا سکتا ہے۔ براہ کرم ہمیں بتائیں کہ آپ اس ایونٹ کو کہاں بھیجنا چاہیں گے۔

WAHA ڈیش بورڈ میں سیشن کھولیں اور ویب ہک URL سیٹ کریں۔ یا API کے ذریعے کریں۔

curl -X PUT http://your-server:3000/api/sessions/default \
  -H "X-Api-Key: super-secret-key-change-me" \
  -H "Content-Type: application/json" \
  -d '{
    "config": {
      "webhooks": [
        {
          "url": "https://n8n.example.com/webhook/whatsapp",
          "events": ["message", "session.status"]
        }
      ]
    }
  }'

کہ message تمام ان باؤنڈ پیغامات پر واقعات رونما ہوتے ہیں۔ session.status اس وقت ہوتا ہے جب کوئی سیشن منسلک، منقطع، یا دوبارہ منسلک ہوتا ہے۔ جب آپ کا بوٹ نیچے جاتا ہے تو یہ آپ کو متنبہ کرنے کے لیے مفید ہے۔

اس کی جانچ کریں۔ دوسرے فون سے بوٹ کے نمبر پر واٹس ایپ پیغام بھیجیں۔ n8n ایڈیٹر پر واپس جائیں۔ ایک یا دو سیکنڈ کے اندر، ویب ہک نوڈ ایونٹ کے ڈیٹا کے ساتھ آن ہو جائے گا۔

پے لوڈ تقریباً اس طرح ہے:

{
  "event": "message",
  "session": "default",
  "payload": {
    "id": "false_15555550123@c.us_3EB0...",
    "from": "15555550123@c.us",
    "body": "Hello",
    "timestamp": 1713801234,
    "fromMe": false
  }
}

اس میں آپ کی ضرورت کی ہر چیز موجود ہے۔ payload: کس نے بھیجا ہے (fromانہوں نے کیا کہا (body)، اور جب (timestamp

حصہ 7: اپنا پہلا خودکار جواب بنائیں

بوٹس جو صرف سنتے ہیں بورنگ ہوتے ہیں۔ آئیے جواب دیں۔

آپ ایک چھوٹا کلیدی لفظ راؤٹر بنائیں گے: hi یا helloبوٹ ہیلو کہتا ہے۔ اگر وہ بھیجیں۔ priceقیمت کا پیغام بھیجیں۔ کوئی اور چیز بدل دی جاتی ہے۔

Webhook نوڈ کے بعد ایک سوئچ نوڈ شامل کریں۔

سوئچ نوڈ کو ترتیب دیں۔

سوئچ کے بعد، تین HTTP درخواست نوڈس شامل کریں، ہر آؤٹ پٹ کے لیے ایک۔

باڈی ٹیکسٹ کے علاوہ ہر HTTP درخواست نوڈ کو یکساں طور پر ترتیب دیں۔

گریٹنگ نوڈ کے لیے، JSON باڈی ہے:

{
  "session": "default",
  "chatId": "={{ $('Webhook').item.json.payload.from }}",
  "text": "Hi! I'm the bot. Send 'price' to see pricing, or anything else for help."
}

قیمتوں کا تعین کرنے والے نوڈس کے لیے:

{
  "session": "default",
  "chatId": "={{ $('Webhook').item.json.payload.from }}",
  "text": "Our plans start at $49/month. Reply 'sales' to talk to a human."
}

متبادل کے لیے:

{
  "session": "default",
  "chatId": "={{ $('Webhook').item.json.payload.from }}",
  "text": "I didn't catch that. Try 'hi' or 'price'."
}

کہ ={{ ... }} نحو ایک n8n اظہار ہے۔ رن ٹائم پر، قدر پچھلے نوڈ سے لی جاتی ہے۔

سوئچ آؤٹ پٹ کو مماثل HTTP درخواست نوڈ سے مربوط کریں۔ اپنے ورک فلو کو محفوظ کریں۔ اوپر دائیں جانب ایکٹیویٹ پر کلک کریں۔

جانے دو hi آپ کسی بھی فون سے بوٹ سے جڑ سکتے ہیں۔ آپ کو 1 سیکنڈ کے اندر جواب دینا چاہیے۔

مبارک ہو اب آپ کے پاس واٹس ایپ بوٹ مکمل طور پر آپ کے اپنے انفراسٹرکچر پر چل رہا ہے۔

حصہ 8: دوسری مثال – پہلے سے بکنگ کی تصدیق

خودکار جواب دہندگان مددگار ہیں۔ فعال آؤٹ باؤنڈ وہ جگہ ہے جہاں قدر واقعی مرکب ہوتی ہے۔ ذیل میں ایک دوسرا ورک فلو ہے جو ہر بار ڈیٹا بیس میں نئی ​​قطار داخل ہونے پر ریزرویشن کی تصدیق بھیجتا ہے۔

n8n میں دوسرا ورک فلو بنائیں۔ درج ذیل محرکات میں سے ایک کا استعمال کریں:

  • شیڈول ٹرگر — نئی قطاروں کے لیے ہر منٹ ڈیٹا بیس کو پول کریں۔

  • ویب ہُک ٹرگر – ریزرویشن سسٹم سے اطلاعات سنیں۔

  • ڈیٹا بیس ٹرگر (پوسٹگریس، مائی ایس کیو ایل، سوپا بیس) – ریئل ٹائم میں داخلوں پر ردعمل ظاہر کریں۔

یہ مثال ہر منٹ پر سیٹ شیڈول ٹرگر کا استعمال کرتی ہے، اس کے بعد پوسٹگریس۔ استفسار پر عمل درآمد نوڈس جو زیر التواء تصدیقوں کو پڑھتے ہیں:

SELECT id, customer_phone, service_name, booking_time
FROM bookings
WHERE confirmation_sent = false
LIMIT 20;

پوسٹگریس نوڈ کے بعد، اسی WAHA کی طرف اشارہ کرنے والا HTTP درخواست نوڈ شامل کریں۔ sendText یہ آخری نقطہ ہے جو پہلے استعمال کیا گیا تھا۔ ہستی:

{
  "session": "default",
  "chatId": "={{ $json.customer_phone }}@c.us",
  "text": "Hi! Your booking for {{ \(json.service_name }} on {{ \)json.booking_time }} is confirmed. Reply 'change' to reschedule."
}

آخر میں، ہم ایک دوسرا پوسٹگریس نوڈ شامل کرتے ہیں جو ریزرویشن کو بطور بھیجے گئے نشان زد کرتا ہے۔

UPDATE bookings
SET confirmation_sent = true, confirmation_sent_at = NOW()
WHERE id = {{ $json.id }};

ورک فلو کو چالو کریں۔ ہر منٹ، n8n آپ کے زیر التواء تحفظات لیتا ہے، آپ کو ایک WhatsApp تصدیقی پیغام بھیجتا ہے اور انہیں مکمل کے طور پر نشان زد کرتا ہے۔

یہ نمونہ عام کرتا ہے۔ ایس کیو ایل کو آرڈر کی تصدیق کے لیے Shopify پر کال، رسید کے پیغام کے لیے اسٹرائپ پر کال، یا اپوائنٹمنٹ کی یاد دہانیوں کے لیے Calendly کو کال سے تبدیل کریں۔ واٹس ایپ کی پرت وہی رہتی ہے، صرف معلومات کا ذریعہ تبدیل ہوتا ہے۔

حصہ 9: پیداوار کا آغاز

مندرجہ بالا سیٹ اپ کام کرتا ہے، لیکن ابھی تک پیداوار تیار نہیں ہے۔ اپنے اصل گاہکوں کو اس کی نشاندہی کرنے سے پہلے آپ کو ان چیزوں کو تقویت دینے کی ضرورت ہے:

1. ہر چیز کو HTTPS کے پیچھے چھوڑ دیں۔

n8n یا WAHA کو براہ راست سادہ HTTP پر ظاہر نہ کریں۔ ایک ریورس پراکسی سامنے رکھیں۔ Caddy سب سے آسان انتخاب ہے کیونکہ یہ آپ کے لیے Let’s Encrypt کو ہینڈل کرتا ہے۔

کم سے کم Caddyfile:

n8n.example.com {
    reverse_proxy n8n:5678
}

waha.example.com {
    reverse_proxy waha:3000
}

میں اسی ڈوکر کمپوز میں کیڈی کو ایک اور سروس کے طور پر چلاتا ہوں۔ TLS سرٹیفکیٹ خود بخود جاری اور تجدید ہوتے ہیں۔

2. API کلید کو تبدیل کریں۔

جہاز نہ بھیجیں۔ super-secret-key-change-me پیداوار کے لئے. اصل کلید بنائیں:

openssl rand -hex 32

ڈالو .env براہ کرم درج ذیل فائل سے رجوع کریں: ${WHATSAPP_API_KEY} کو docker-compose.ymlاور شامل کریں .env آپ کو .gitignore.

3. آؤٹ باؤنڈ پیغامات کو محدود کرنے کی شرح

واٹس ایپ نے ایسے اکاؤنٹس پر پابندی لگا دی ہے جو بہت زیادہ پیغامات بہت جلدی بھیجتے ہیں۔ نئے نمبروں کے لیے محفوظ آؤٹ باؤنڈ کی شرح 20 پیغامات فی منٹ سے کم ہے۔ پھٹے جوابات کے لیے، ٹرانسمیشنز کے درمیان n8n ویٹنگ نوڈس شامل کریں، یا چھوٹے کسٹم فنکشن نوڈس کے ذریعے آؤٹ گوئنگ میسجز کو قطار میں لگائیں جو درخواستوں کے درمیان انتظار کرتے ہیں۔

4. قطار موڈ کے ساتھ n8n توسیع

پہلے سے طے شدہ طور پر، n8n ایک ہی عمل میں سب کچھ چلاتا ہے۔ یہ ٹھیک ہے کیونکہ والیوم کم ہے۔ تھرو پٹ بڑھانے کے لیے قطار موڈ پر سوئچ کریں۔

قطار وضع docs.n8n.io/hosting/scaling/queue-mode/ میں دستاویزی ہے۔ انسٹالر دو ماحولیاتی متغیرات کا اضافہ کرتا ہے (EXECUTIONS_MODE=queue، QUEUE_BULL_REDIS_HOST=redis) ورک فلو کے عمل سے آنے والے ویب ہک کو ڈی جول کرتا ہے۔ ویب ہکس ملی سیکنڈ میں جواب دیتے ہیں جبکہ کارکن پس منظر میں قطار کو چبا رہے ہیں۔

5. سیشن کی نگرانی

واٹس ایپ ویب سیشن میں خلل پڑا ہے۔ فون منقطع ہو جائے گا، WhatsApp سیکورٹی ٹوکن کو سائیکل کرے گا، یا سرور دوبارہ شروع ہو جائے گا۔ اس ڈراپ کو جلدی پکڑو۔

سبسکرائب کریں۔ session.status WAHA کا ویب ہک ایونٹ۔ جب ریاست ہے۔ FAILED یا STOPPEDایک n8n ورک فلو کا راستہ جو Slack پر پوسٹ کرتا ہے، ای میل بھیجتا ہے، یا کسی صفحہ پر کال کرتا ہے۔ جتنی جلدی آپ جان لیں گے، اتنی ہی تیزی سے آپ کی بازیابی ہوگی۔

مجموعی طور پر اپ ٹائم دیکھنے کے لیے، اپ ٹائم کوما کی طرح کچھ بیان کریں۔ GET /api/sessions/default WAHA سے۔ جب WAHA رپورٹ کرتا ہے۔ WORKINGتم ٹھیک ہو کوئی اور چیز انتباہ کو متحرک کرے گی۔

6. سیشن والیوم بیک اپ

کہ waha-sessions ڈائریکٹری لاگ ان کی حیثیت پر مشتمل ہے۔ اگر آپ اسے کھو دیتے ہیں تو آپ کو دوبارہ QR کوڈ اسکین کرنا ہوگا۔ ہو سکتا ہے کہ آپ اسے ایسے فون پر استعمال کر سکیں جو آپ اب استعمال نہیں کرتے ہیں۔ ہر رات بیک اپ۔ سادہ کرون جاب tar اور rclone یہ S3 ہم آہنگ اسٹوریج کے لیے کافی ہے۔

7. لائیو ایجنٹ ہینڈ آف شامل کریں۔

ہر بات چیت بوٹ کے ساتھ نہیں ہونی چاہیے۔ جب صارف ٹائپ کرتا ہے۔ human — یا، اگر آپ کے ارادے کی درجہ بندی کرنے والا اعتماد کے ساتھ جواب نہیں دے سکتا، تو اسے کسی حقیقی ایجنٹ کے پاس بھیج دیں۔

Chatwoot ایک ٹھوس اوپن سورس آپشن ہے۔ ایک وقف واٹس ایپ چینل، ایجنٹ ان باکس، ٹیم اسائنمنٹس، اور گفتگو کی سرگزشت ہے۔ ہینڈ آف ایک n8n برانچ ہے جو بوٹ کے جوابات پر کارروائی روکتی ہے اور میسج اسٹریم کو Chatwoot’s API میں منتقل کرتی ہے۔

عام نقصانات

اپنی پہلی پیداوار کی تعیناتی کے دوران تقریباً ہر ایک کو کئی مسائل کا سامنا کرنا پڑتا ہے۔

ویب ہُک ٹائم آؤٹ

WAHA ویب ہک کو جواب دینے کے لیے چند سیکنڈ دیتا ہے۔ اگر آپ کا n8n ورک فلو سست ہے (LLM کالز، ریموٹ API ہٹ)، ویب ہک کا وقت ختم ہو جائے گا اور WAHA دوبارہ کوشش کرے گا، جس کے نتیجے میں ممکنہ طور پر ڈپلیکیٹ جوابات ہوں گے۔

ترمیم کریں: ویب ہک ریٹرن بنائیں 200 سست کاموں کو فوری طور پر آف لوڈ کریں۔ n8n میں، Webhook نوڈ کے رسپانس موڈ کو اس پر سیٹ کریں: ویب ہک نوڈس کے ساتھ جوابات کا استعمالپہلے قدم کے طور پر رسپانڈ ٹو ویب ہُک نوڈ شامل کریں۔ 200 اپنے جسم کو صاف کرنے کے بعد، کچھ بھاری لفٹنگ کریں۔

ڈپلیکیٹ پیغام

WAHA بھی یہی پیش کش کرتا ہے۔ message انتہائی صورتوں میں، واقعہ ایک سے زیادہ بار ہوتا ہے (فون آن لائن واپس آجاتا ہے اور سیشن دوبارہ جڑ جاتا ہے)۔ محفوظ کریں payload.id اسے کہیں اسٹور کریں (Redis، ایک ڈیٹا بیس، یا n8n میں ایک جامد ڈیٹا اسٹور) اور ان IDs کو حذف کریں جن پر آپ پہلے سے کارروائی کر چکے ہیں۔

آرڈر سے باہر آنے والے پیغامات

ویب ہکس غیر مطابقت پذیر ہیں اور n8n عملدرآمد کو متوازی کر سکتے ہیں۔ مثال کے طور پر، اگر ایک کثیر مرحلہ گفتگو میں آرڈر اہم ہے، تو بھیجنے والے کی قطار میں کلید درج کریں۔ chatId ہر بھیجنے والے پر ترتیب وار کارروائی کریں۔

فون دوبارہ شروع ہونے کے بعد سیشن منقطع ہو جاتا ہے۔

عام واٹس ایپ ویب رویہ۔ WAHA خود بخود دوبارہ جڑ جاتا ہے، لیکن آپ کو منسلک آلات کی فہرست کو دستی طور پر تازہ کرنے کی ضرورت پڑ سکتی ہے۔ اگر سیشن واپس آنے سے انکار کرتا ہے، تو WAHA کنٹینر کو روکیں اور ذیل میں متعلقہ سیشن فولڈر کو حذف کر دیں۔ waha-sessions/کنٹینر کو دوبارہ شروع کریں اور دوبارہ QR اسکین کریں۔

آپ کا نمبر ممنوع ہے۔

سب سے بڑا مجرم رفتار ہے۔ ایک گھنٹے میں سینکڑوں پیغامات کو بلاسٹ کرتے ہوئے، نئے نمبر تیزی سے ظاہر ہوتے ہیں۔ آہستہ آہستہ اپنے نمبر تیار کریں۔ پہلے ہفتے کے لئے، عام انسانی حجم ہے. براہ کرم اسے اجنبیوں کو بلاوجہ نہ بھیجیں۔ جب بھی ممکن ہو آؤٹ باؤنڈ پشز پر ان باؤنڈ پر مبنی ردعمل کو ترجیح دیں۔

غلط چیٹ ID فارمیٹ

واٹس ایپ پرائیویٹ چیٹ استعمال کریں۔ @c.us اور گروپ استعمال کرتا ہے۔ @g.us. شامل نہ کریں: + یا نمبر میں جگہ ہے۔ اگر WAHA بھیجے جانے پر 404 واپس کرتا ہے، تو چیٹ ID تقریباً ہمیشہ ہی مسئلہ ہوتا ہے۔

آگے کہاں جانا ہے۔

اب آپ کے پاس بنیاد ہے۔ ایک ہی دو سروس اسٹیک عملی طور پر ہر بوٹ کو سپورٹ کرتا ہے جس کا تصور کیا جا سکتا ہے۔ آپ صرف اتنا ہی محدود ہیں جو آپ n8n ورک فلو میں بنا سکتے ہیں۔

قدرتی اگلا مرحلہ:

  • AI کو مربوط کریں اور یہ جواب دے گا: ویب ہک کے پیچھے ایک OpenAI یا Anthropic نوڈ شامل کریں، صارف کے پیغام کو ایک مختصر سسٹم پرامپٹ کے ذریعے منتقل کریں، اور پھر WAHA کے ذریعے جواب واپس بھیجیں۔ سیلاب کے ٹوکن کے استعمال کو روکنے کے لیے گفتگو کی لمبائی کو محدود کریں۔

  • CRM انضمام: کالر ID تلاش کریں۔ chatId جواب دینے کا طریقہ طے کرنے سے پہلے HubSpot، Pipedrive، یا آپ کے اپنے ڈیٹا بیس سے۔ کسٹمر سیگمنٹ کے حساب سے جوابات کو ترتیب دیں۔

  • پیشگی اطلاع بھیجیں: اپوائنٹمنٹ ریمائنڈرز، ڈیلیوری اپ ڈیٹس، ادائیگی کی رسیدیں، ترک شدہ کارٹ کی اطلاعات۔ اپنے مواد کو قابل تجارت اور متوقع رکھیں۔ غیر منقولہ مارکیٹنگ دھماکے پابندی حاصل کرنے کا تیز ترین طریقہ ہے۔

  • ہر گفتگو کو ریکارڈ کریں: تجزیات اور کسٹمر کے ریکارڈ کے لیے پیغامات کو برقرار رکھنے کے لیے ویب ہُک کے پیچھے ایک Postgres یا Supabase نوڈ شامل کریں۔ آپ کا مستقبل خود (اور آپ کی معاون ٹیم) آپ کا شکریہ ادا کرے گا۔

  • میڈیا ہینڈلنگ شامل کریں: WAHA بے نقاب کرتا ہے۔ sendImage، sendFileاور sendVoice اختتامی نقطہ اپنے بوٹ کو سپورٹ ٹکٹس کے لیے تصاویر قبول کرنا سکھائیں یا چیٹ کے اندر سے براہ راست پی ڈی ایف کے بطور انوائس بھیجیں۔

واٹس ایپ کی پرتیں وہی رہتی ہیں۔ کام کے بہاؤ میں سب کچھ دلچسپ ہوتا ہے۔

اگر آپ پیمانے پر چلنے والے n8n اور WAHA کی پیداوار کی مثال دیکھنا چاہتے ہیں، یا آپ کے کاروبار کے لیے اسی طرح کی آٹومیشن کی ضرورت ہے، تو میں اچیہ آٹومیشن کا بانی ہوں، جو WhatsApp، n8n، اور Chatwoot انٹیگریشن فراہم کرتا ہے۔ مزید معلومات کے لیے، براہ کرم ملاحظہ کریں: achiya-automation.com.

اوپر تک سکرول کریں۔