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

معرفی Slack Node در n8n

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

ساخت Credentials برای Slack

نخستین مرحله برای ارسال پیام خودکار در Slack، ایجاد Credential در n8n است. برای این کار مراحل زیر را انجام دهید.

مرحله ۱: ساخت Bot در Slack

به آدرس api.slack.com/apps بروید و یک App جدید ایجاد کنید. نام مناسب انتخاب کنید و Workspace را مشخص نمایید.

مرحله ۲: فعال کردن Bot Token

از بخش OAuth and Permissions گزینه Bot Token را فعال کنید. سپس دسترسی مورد نیاز را اضافه نمایید مانند chat.write برای ارسال پیام.

مرحله ۳: نصب Bot در Workspace

دکمه Install to Workspace را بزنید تا Bot در Slack فعال شود.

مرحله ۴: افزودن Credential در n8n

در n8n وارد Settings شوید و یک Credential جدید از نوع Slack API بسازید. Bot Token ایجاد شده را وارد و ذخیره کنید.

طراحی یک سیستم اطلاع رسانی خودکار

در این بخش یک Workflow کامل می‌سازیم که یک پیام خودکار را بر اساس داده دریافتی از Webhook یا هر Node دیگر به Slack ارسال می‌کند.

گام ۱: ساخت Webhook برای دریافت ورودی

یک Node از نوع Webhook اضافه کنید و Method را روی POST بگذارید. این Webhook می‌تواند داده‌ها را از سایت، فرم تماس، اعلان سرور یا هر سرویس دیگر دریافت کند. برای مثال ورودی می‌تواند شامل عنوان پیام، متن پیام و سطح اهمیت باشد.

گام ۲: آماده سازی پیام با Function

برای ساخت پیام پویا و استاندارد از Function Node استفاده می‌کنیم. کد زیر آماده برای اجرا و سازگار با n8n نسخه 1.8+ است.

const data = $json;
const title = data.title || "اعلان جدید";
const message = data.message || "پیام جدید از سیستم دریافت شد";
const level = data.level || "info";
let prefix = "";
if (level === "error") prefix = "خطا: ";
if (level === "warning") prefix = "هشدار: ";
return [
  {
    json: {
      text: `${prefix}${title}\n${message}`
    }
  }
];

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

گام ۳: ارسال پیام با Slack Node

یک Slack Node اضافه کنید و مقادیر را این گونه تنظیم کنید:
Channel: نام کانالی که Bot اجازه ارسال پیام دارد
Text:

={{$json["text"]}}

Credentials: همان Slack Credential که ساختید
با اجرای این Node پیام فوراً به کانال ارسال می‌شود.

گام ۴: افزودن پاسخ به درخواست کننده

برای اینکه سرویس فراخواننده بداند پیام ارسال شده است، می‌توانید از Respond to Webhook استفاده کنید و خروجی زیر را برگردانید:

{
  "status": "sent",
  "channel": "alerts",
  "ok": true
}

نمونه فلو کامل آماده ایمپورت

در این بخش یک فلو کامل آماده ارائه شده است. کافی است آن را کپی و در n8n ایمپورت کنید و سپس Credential خود را روی Slack Node قرار دهید.

{
  "name": "Codity Slack Notify",
  "nodes": [
    {
      "id": "Webhook",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [300, 300],
      "parameters": {
        "path": "alert",
        "options": {
          "responseMode": "lastNode"
        }
      }
    },
    {
      "id": "Prepare",
      "name": "Prepare Message",
      "type": "n8n-nodes-base.function",
      "typeVersion": 2,
      "position": [600, 300],
      "parameters": {
        "functionCode": "const data = $json;\nconst title = data.title || \"اعلان جدید\";\nconst message = data.message || \"پیام جدید از سیستم\";\nconst level = data.level || \"info\";\nlet prefix = \"\";\nif (level === \"error\") prefix = \"خطا: \";\nif (level === \"warning\") prefix = \"هشدار: \";\nreturn [{json:{text:`${prefix}${title}\\n${message}`}}];"
      }
    },
    {
      "id": "Slack",
      "name": "Slack Send",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 1,
      "position": [900, 300],
      "parameters": {
        "operation": "postMessage",
        "channel": "alerts",
        "text": "={{$json[\"text\"]}}"
      },
      "credentials": {
        "slackApi": {
          "id": "",
          "name": ""
        }
      }
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Prepare Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Message": {
      "main": [
        [
          {
            "node": "Slack Send",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

برای حرفه ای شدن سیستم اطلاع رسانی می‌توانید:
از رنگ بندی و ایموجی در پیام ها استفاده کنید
برای پیام های حساس به صورت Direct Message ارسال کنید
از Function Node برای ساخت پیام های پیچیده تر استفاده نمایید
با استفاده از Cron می‌توانید گزارش های دوره ای ارسال کنید
در صورت بروز خطا، پیام ها را به کانال ویژه هشدار ارسال نمایید

کاربردهای واقعی Slack Node در اتوماسیون

ارسال خطاهای سرور به کانال DevOps
اطلاع رسانی از فرایندهای فروش به تیم مارکتینگ
ارسال پیام خوش آمد پس از ثبت نام کاربر
گزارش روزانه از وضعیت سیستم
اتصال به ابزارهایی مثل GitHub و ارسال اعلان Push یا PR

در قسمت بعد

در قسمت بعد یاد می گیرید چگونه با استفاده از Trello Node در n8n وظایف و کارت ها را به صورت خودکار ایجاد کنید و یک سیستم مدیریت پروژه هوشمند بسازید.