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

چرا استفاده از Telegram Bot در n8n مهم است؟

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

ایجاد ربات تلگرام و دریافت Token

برای اتصال n8n به تلگرام ابتدا باید یک ربات جدید بسازید. مراحل زیر را طی کنید:
اپ Telegram را باز کنید و BotFather را جستجو کنید.
روی Start بزنید و سپس دستور /newbot را بفرستید.
یک نام دلخواه برای ربات انتخاب کنید.
یک نام کاربری منحصر به فرد وارد کنید که به bot ختم شود.
BotFather در پایان یک Token برای شما ارسال می‌کند.
این Token را نگه دارید زیرا برای اتصال به n8n مورد نیاز است.
بعد از این مرحله ربات شما ساخته شده و می‌توانید آن را در n8n استفاده کنید.

ساخت Credential ربات تلگرام در n8n

برای اینکه n8n بتواند پیام‌ها را از طریق Telegram ارسال کند باید یک Credential ایجاد کنید:
به Settings در n8n وارد شوید.
بخش Credentials را انتخاب کنید.
گزینه Telegram را پیدا کنید.
یک نام مثل Codity Telegram Bot وارد کنید.
در قسمت Token همان Token دریافتی از BotFather را قرار دهید.
Save کنید.
از این لحظه ربات شما برای استفاده در گردش کارهای n8n آماده است.

پیدا کردن Chat ID برای ارسال پیام

برای ارسال پیام باید Chat ID فرد یا گروه را بدانید. ساده‌ترین راه این است:
در تلگرام به ربات خود پیام بدهید.
از یک سرویس مثل این ربات استفاده کنید:
@getmyid_bot
این ربات ID شما را نمایش می‌دهد.
اگر می‌خواهید پیام برای گروه ارسال شود ابتدا ربات را به گروه اضافه کنید و یک پیام در گروه ارسال کنید تا ربات ID گروه را برگرداند.
Chat ID را یادداشت کنید تا در گردش کار از آن استفاده کنیم.

ساخت Workflow برای ارسال پیام خودکار

در این قسمت یک گردش کار می‌سازیم که از طریق Webhook داده را دریافت کرده و آن را در قالب پیام تلگرام ارسال می‌کند.

گام ۱: ساخت Webhook

یک Node Webhook اضافه کنید.
Method را روی POST قرار دهید.
Path را مثلا sendTelegram بگذارید.
Response Mode را روی Last Node قرار دهید.
این Webhook داده‌هایی مثل متن پیام و نام کاربر را دریافت می‌کند.

گام ۲: ساخت پیام با Function

برای تولید پیام نهایی از Function زیر استفاده کنید. این کد برای n8n v1.8 تست شده و آماده اجراست:

// n8n v1.8+ Ready
const data = $json;
const errors = [];

if (!data.message) errors.push("message");
if (!data.chatId) errors.push("chatId");

if (errors.length) {
  return [
    {
      json: {
        ok: false,
        error: "Missing required fields: " + errors.join(", ")
      }
    }
  ];
}

const name = data.name || "کاربر عزیز";
const text = [];
text.push(`سلام ${name}`);
text.push("");
text.push(String(data.message).trim());
text.push("");
text.push("با تشکر");
text.push("تیم کدیتی");

return [
  {
    json: {
      ok: true,
      chatId: String(data.chatId).trim(),
      finalMessage: text.join("\n")
    }
  }
];

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

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

یک Node از نوع Telegram اضافه کنید.
Resource را روی Message قرار دهید.
Operation را روی Send قرار دهید.
Token Credential ساخته شده را انتخاب کنید.
Chat ID را برابر قرار دهید:

{{$json["chatId"]}}

Message را نیز برابر بگذارید:

{{$json["finalMessage"]}}

بعد از ذخیره گردش کار آماده تست است.

پاسخ HTTP برای کلاینت

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

{
  "status": "sent",
  "chatId": "{{$json['chatId']}}"
}

اگر Response Mode روی Last Node باشد همین Telegram آخرین مرحله است و خروجی آن به کلاینت باز می‌گردد.

تست گردش کار با cURL

برای تست اولیه این دستور را اجرا کنید:

curl -X POST http://localhost:5678/webhook/sendTelegram \
  -H "Content-Type: application/json" \
  -d '{
    "chatId": "123456789",
    "name": "Sara",
    "message": "سفارش شما با موفقیت ثبت شد"
  }'

اگر همه چیز درست باشد پیام در تلگرام ارسال می‌شود.

نکات حرفه‌ای برای کار با Telegram Node

برای ارسال پیام‌های طولانی از حالت HTML استفاده کنید و برچسب‌های ساده مثل یا قرار دهید.
اگر می‌خواهید فایل ارسال کنید از Operation مربوط به Photo یا Document استفاده کنید.
برای پیام‌های زماندار از Cron Node کمک بگیرید.
برای جلوگیری از ارسال تکراری پیام از یک Function برای بررسی وضعیت قبلی استفاده کنید.
اگر پیام به گروه ارسال می‌کنید ربات باید مجوز ارسال پیام داشته باشد.
برای جلوگیری از اسپم شدن می‌توانید نرخ ارسال پیام را محدود کنید.

نکات امنیتی

Token ربات را در اختیار کسی قرار ندهید.
اگر Token لو رفت از BotFather دستور /revoke را اجرا کنید.
برای ارسال پیام‌های حساس از گروه‌های خصوصی و Chat ID‌های شخصی استفاده کنید.
داده‌های Webhook را اعتبارسنجی کنید تا از ارسال پیام‌های ناخواسته جلوگیری شود.

در قسمت بعد

در قسمت نهم یاد می‌گیرید چگونه با استفاده از HTTP Request Node داده‌ها را از API‌های خارجی دریافت کرده و آن ها را در n8n پردازش کنید و یک سیستم یکپارچه با سرویس‌های دیگر بسازید.