n8n x Slack: แจ้งเตือนทีมอัตโนมัติ
คู่มือเชื่อม n8n กับ Slack เพื่อส่งแจ้งเตือนอัตโนมัติ รับคำสั่งจาก Slack และสร้าง bot ช่วยทีม ตั้งแต่สร้าง Slack App จนถึง Workflow พร้อมใช้งาน
ทีม developer และ operations ที่ใช้ Slack อยู่แล้วสามารถดึง n8n เข้ามาทำ automation ได้โดยตรง ตั้งแต่ deploy notification, alert จาก monitoring, รายงานยอดขายประจำวัน จนถึง approval bot ที่ทีมโต้ตอบผ่าน Slack ได้เลย ไม่ต้องเปิด browser
สิ่งที่ต้องเตรียม
- Slack Workspace ที่มีสิทธิ์สร้าง App (Admin หรือ owner)
- n8n instance พร้อม public URL (สำหรับรับ Slack event)
- เวลาประมาณ 30 นาทีสำหรับตั้งค่าครั้งแรก
ขั้นตอนที่ 1: สร้าง Slack App
- ไปที่ api.slack.com/apps แล้วกด “Create New App”
- เลือก “From scratch”
- ตั้งชื่อ App เช่น “n8n Bot” และเลือก Workspace
- กด Create App
เพิ่ม OAuth Scopes
ไปที่ OAuth & Permissions → Bot Token Scopes เพิ่ม scopes ที่ต้องการ
| Scope | ใช้สำหรับ |
|---|---|
chat:write | ส่งข้อความเข้า channel |
chat:write.public | ส่งข้อความเข้า public channel โดยไม่ต้อง join |
channels:read | อ่านรายชื่อ channel |
users:read | อ่านข้อมูล user |
commands | รับ slash commands |
incoming-webhook | ส่งข้อความผ่าน Incoming Webhook (วิธีง่ายกว่า) |
Install App และ Copy Token
- ไปที่ OAuth & Permissions → Install App to Workspace
- กด Allow
- คัดลอก Bot User OAuth Token (ขึ้นต้นด้วย
xoxb-)
ขั้นตอนที่ 2: ตั้งค่า Slack Credential ใน n8n
- ใน n8n: Settings → Credentials → New → “Slack API”
- ใส่ Bot User OAuth Token
- กด Save
Workflow 1: ส่งข้อความเข้า Slack Channel
ตัวอย่าง: แจ้งเตือนเมื่อมี Error ใน Workflow อื่น
Error Trigger
→ Slack node
Resource: Message
Operation: Post
Channel: #alerts
Text: |
:red_circle: *Workflow Error*
Workflow: {{ $json.workflow.name }}
Error: {{ $json.error.message }}
เวลา: {{ $now.toFormat('dd/MM/yyyy HH:mm') }}
ตัวอย่าง: รายงานยอดขายเช้า
Schedule Trigger (08.00 ทุกวัน จันทร์-ศุกร์)
→ Google Sheets (ดึงยอดขายเมื่อวาน)
→ Slack node
Channel: #sales-team
Text: |
:bar_chart: *Daily Sales Report - {{ $now.minus({days:1}).toFormat('dd/MM/yyyy') }}*
ยอดขายรวม: *{{ $json.total }} บาท*
จำนวนออเดอร์: *{{ $json.count }} รายการ*
เฉลี่ยต่อออเดอร์: *{{ $json.avg }} บาท*
Block Kit: ข้อความที่มีโครงสร้าง
Slack รองรับ Block Kit สำหรับข้อความที่มีปุ่ม, image, section แยกกัน ทำให้ notification ดูเป็นมืออาชีพกว่า plain text
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":package: ออเดอร์ใหม่ #{{ $json.order_id }}"
}
},
{
"type": "section",
"fields": [
{ "type": "mrkdwn", "text": "*ลูกค้า:*\n{{ $json.customer }}" },
{ "type": "mrkdwn", "text": "*ยอด:*\n{{ $json.amount }} บาท" }
]
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": { "type": "plain_text", "text": "ดูออเดอร์" },
"url": "{{ $json.order_url }}"
}
]
}
]
}
ใส่ JSON นี้ใน Blocks field ของ Slack node (ไม่ใช่ Text field)
Workflow 2: รับ Slash Command จาก Slack
Slash command คือคำสั่งที่ user พิมพ์ใน Slack เช่น /report, /status, /deploy แล้ว Slack ส่งมาให้ n8n ทำงาน
สร้าง Slash Command ใน Slack App
- ใน Slack App: Slash Commands → Create New Command
- Command:
/report - Request URL: ใส่ Webhook URL จาก n8n Webhook node
- Short Description: “ดูรายงานยอดขาย”
- กด Save
n8n Workflow รับ Slash Command
Webhook Trigger (รับ POST จาก Slack)
→ Code node (parse Slack payload)
→ Switch node (แยกตาม command)
→ /report:
Google Sheets (ดึงยอดขาย)
HTTP Request (ตอบกลับ Slack)
→ /status:
HTTP Request (check server health)
HTTP Request (ตอบกลับ Slack)
Slack ต้องการ response ภายใน 3 วินาที ถ้า workflow ใช้เวลามากกว่านั้น ต้องตอบกลับ “กำลังประมวลผล…” ก่อน แล้วส่งผลลัพธ์จริงผ่าน response_url ที่ Slack ส่งมา
Code ตอบกลับ Slack Slash Command
// ตอบกลับทันทีเพื่อ acknowledge
const responseUrl = $json.body.response_url;
const text = "กำลังดึงรายงาน รอสักครู่...";
// ส่ง immediate response
// (ผ่าน Respond to Webhook node ใน n8n)
return [{
json: {
response_type: "in_channel",
text: text,
responseUrl: responseUrl
}
}];
Workflow 3: Incoming Webhook (วิธีง่ายที่สุด)
ถ้าต้องการแค่ “ส่งข้อความเข้า channel” โดยไม่ต้องรับคำสั่งจาก Slack วิธีที่ง่ายที่สุดคือ Incoming Webhook
สร้าง Incoming Webhook
- ใน Slack App: Incoming Webhooks → Activate Incoming Webhooks
- Add New Webhook to Workspace → เลือก channel → Allow
- คัดลอก Webhook URL (เช่น
https://hooks.slack.com/services/T.../B.../...)
ใช้ HTTP Request node แทน Slack node
HTTP Request node
Method: POST
URL: https://hooks.slack.com/services/xxx/xxx/xxx
Body (JSON):
{
"text": "แจ้งเตือน: {{ $json.message }}"
}
Incoming Webhook เหมาะสำหรับ notification แบบ one-way ไม่ต้องสร้าง credential ก็ใช้ได้
ข้อควรระวัง
Rate Limits: Slack จำกัด 1 message per second ต่อ channel ถ้าต้องส่งหลาย message พร้อมกัน ให้ใส่ Wait node ระหว่างแต่ละข้อความ
Token Security: Bot Token ต้องเก็บเป็น n8n Credential อย่า hardcode ใน workflow และอย่าแชร์ใน repository
Channel Names: ใช้ Channel ID แทน Channel Name จะ reliable กว่า เพราะ Channel Name เปลี่ยนได้ ส่วน ID คงที่เสมอ หา Channel ID ได้จาก URL ใน Slack browser หรือผ่าน Slack API conversations.list
Slack App ต้อง Join Channel ก่อน: Bot ต้อง join channel ก่อนจึงจะส่งข้อความได้ (เว้นแต่มี chat:write.public scope สำหรับ public channel)
สรุป
n8n x Slack เป็น combination ที่ทีม developer ใช้ได้จริงตั้งแต่วันแรก ส่ง deployment notification, error alert, หรือ daily report เข้า channel ที่เหมาะสม เริ่มต้นด้วย Incoming Webhook ก่อนถ้าต้องการแค่ส่งข้อความ แล้วค่อยอัปเกรดเป็น Slack App เต็มรูปแบบเมื่อต้องการ slash command หรือ interactive message
บทความที่เกี่ยวข้อง: สร้าง Telegram Bot ด้วย n8n | คู่มือ Webhook ใน n8n ฉบับสมบูรณ์
อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co
Related posts
n8n x Airtable: ใช้ Airtable เป็น Backend ง่ายๆ
เชื่อมต่อ n8n กับ Airtable เพื่ออ่าน เพิ่ม อัปเดต และลบข้อมูลอัตโนมัติ เหมาะสำหรับทีมที่ไม่มี Dev
เชื่อมต่อ ChatGPT กับ n8n: วิธีใช้ OpenAI API
วิธีเชื่อม ChatGPT และ OpenAI API กับ n8n ตั้งแต่สร้าง API Key จนถึงสร้าง Workflow AI ใช้งานจริง
ใช้ Claude AI กับ n8n: Anthropic API Integration
วิธีเชื่อมต่อ Claude AI ของ Anthropic กับ n8n ตั้งแต่สร้าง API Key จนใช้งานจริง พร้อมเปรียบเทียบกับ ChatGPT