เรียนรู้ว่าผู้อนุมัติสามารถอนุมัติหรือปฏิเสธการดำเนินการ workflow n8n โดยตรงภายใน Slack ด้วยการดำเนินการส่งและรอการตอบกลับของ node Slack ได้อย่างไร
ด้วยการ Message > Send and Wait for Response ผู้อนุมัติสามารถอนุมัติหรือปฏิเสธได้โดยตรงภายใน Slack ไม่มีหน้าเบราว์เซอร์เปิดขึ้น: workflow จะดำเนินการต่อทันทีที่มีคนตอบกลับ และบันทึกผลลัพธ์ที่ตอบกลับ
มันแตกต่างจากปุ่มลิงค์อย่างไร
| อะไร | ปุ่มลิงค์ (ค่าเริ่มต้น) | การอนุมัติใน Slack |
|---|---|---|
| การตัดสินใจเกิดขึ้นที่ไหน | เปิดหน้า n8n ในเบราว์เซอร์ | คลิกเพียงครั้งเดียวภายใน Slack |
| ใครตอบได้บ้าง | ใครสามารถคลิกลิงค์ได้เลยนะครับ | เฉพาะผู้อนุมัติที่คุณระบุ (รายการว่างช่วยให้ใครก็ตามที่เห็นข้อความตอบกลับได้) ใครก็ตามที่ได้รับบันทึกส่วนตัว คุณสามารถพูดเองได้ และขั้นตอนการทำงานก็ยังคงรออยู่ |
| เอาท์พุต | approved และ respondedAt |
เพิ่มผู้ที่ตอบกลับ (ID ชื่อ ชื่อผู้ใช้ และอีเมล) รวมถึงช่องทางและข้อความ |
| ข้อความหลังการตัดสินใจ | ไม่เปลี่ยนแปลง ปุ่มต่างๆ จะยังคงคลิกได้ แต่การคลิกในภายหลังจะแสดงหน้า "ไม่ต้องดำเนินการใดๆ" การตัดสินใจครั้งแรกยืนหยัด | ทางเลือกของคุณ: แสดงผลและลบปุ่มออก (ค่าเริ่มต้น) ลบเฉพาะปุ่มเท่านั้น หรือปล่อยให้ข้อความไม่เปลี่ยนแปลง |
| ความปลอดภัย | ลิงก์ที่เซ็นชื่อ: ไม่มีใครสามารถยุ่งเกี่ยวกับ URL หรือการกระทำของมันได้ แต่ใครก็ตามที่มีลิงก์สามารถตอบสนองได้ และ n8n ไม่สามารถบอกได้ว่าใครคลิก | n8n ตรวจสอบทุกการโทรกลับมาจาก Slack (โดยใช้การลงนามคำขอของ Slack) และตรวจสอบผู้ตอบกลับกับรายชื่อผู้อนุมัติของคุณ |
ข้อกำหนด
หากต้องการอนุมัติภายใน Slack คุณต้องมี:
- อินสแตนซ์ n8n ของคุณสามารถเข้าถึงได้จาก Slack ผ่าน HTTPS สาธารณะ Slack จะเรียกอินสแตนซ์ของคุณกลับมาเมื่อมีคนตอบกลับ ดังนั้นอินสแตนซ์ที่ทำงานบน localhost จะไม่ทำงาน
- credentials Slack โดยใช้ token การเข้าถึง API หรือ OAuth2
- ที่ Signature Secret ช่อง credentials Slack ของคุณต้องมีความลับในการลงนามของแอป Slack ซึ่งพบใน Settings > Basic Information . หากไม่มีปุ่มดังกล่าวจะแสดงผล แต่การคลิกจะไม่ดำเนินการต่อตามขั้นตอนการทำงาน
- Response Type ตั้งค่าเป็น Approval.
- ที่
users:readและusers:read.emailขอบเขต ID ชื่อ และชื่อผู้ใช้ของผู้ตอบกลับมาจาก payload การโต้ตอบของ Slack อีเมลมาจาก Slack API และต้องการขอบเขตเหล่านี้ ขอบเขตที่ขาดหายไปเพียงหมายความว่า output ละเว้นอีเมล หากคุณใช้ credentials OAuth2 ที่สร้างขึ้นก่อนที่จะมีคุณลักษณะนี้ ให้เชื่อมต่อใหม่เพื่อให้รับusers:read.emailขอบเขต
ตั้งค่าการอนุมัติ
1. สร้างแอป Slack และข้อมูลประจำตัว (1. Create a Slack app and credential)
ติดตาม การใช้ token การเข้าถึง API หรือ การใช้ OAuth2 เพื่อสร้างแอป Slack และตั้งค่า credentials ของคุณ เมื่อคุณกำหนดค่าขอบเขตของแอป ให้เพิ่ม users:read และ users:read.email ดังนั้นผลลัพธ์จึงสามารถรวมอีเมลของผู้ตอบกลับได้
2. Turn on Interactivity
- ไปที่ แอพของคุณ ใน Slack แล้วเลือกแอปที่คุณต้องการใช้
- ไปที่ Features > การโต้ตอบและทางลัด (Interactivity & Shortcuts) และเปิดเครื่อง Interactivity.
- ใน Request URL , เข้า
https://<your-n8n-instance>/webhook-waiting-slack. workflow ทั้งหมดบนอินสแตนซ์แชร์ URL เดียวนี้ หากคุณเปลี่ยนN8N_ENDPOINT_WEBHOOK_WAITตัวแปรสภาพแวดล้อม ปรับเส้นทางให้ตรงกัน - เลือก Save Changes.
หย่อนช่วยให้หนึ่ง Request URL ต่อแอป ดังนั้นแอป Slack หนึ่งแอปจึงให้บริการหนึ่งอินสแตนซ์ n8n
3. เพิ่มความลับในการลงนามใน credentials ของคุณ (3. Add the signing secret to your credential)
- ในแอป Slack ของคุณ ให้ไปที่ Settings > Basic Information และคัดลอกไฟล์ Signing Secret จาก App Credentials ส่วน
- ใน n8n ให้วางลงในไฟล์ Signature Secret ช่อง credentials Slack ของคุณ
n8n ใช้ความลับในการลงนามเพื่อตรวจสอบว่าการโทรกลับแต่ละครั้งมาจาก Slack n8n ปฏิเสธการโทรกลับที่ไม่ผ่านการตรวจสอบ และ workflow ยังคงรอต่อไป
4. กำหนดค่า node (4. Configure the node)
ใน node Slack ให้เลือก Message ทรัพยากรด้วย Send and Wait for Response การดำเนินงานและการตั้งค่า Response Type ถึง Approval . การตั้งค่าด้านล่างจะปรากฏใต้ Advanced Interactivity ส่วนหัวของส่วน
- Capture Who Responded : เปิดสิ่งนี้เพื่อสลับปุ่มอนุมัติเป็นปุ่มโต้ตอบของ Slack และบันทึกผู้ที่ตอบกลับ การตั้งค่าที่เหลือจะปรากฏขึ้นเมื่อเปิดเครื่อง
- Restrict Who Can Approve : เลือกผู้ใช้ที่ได้รับอนุญาตให้ดำเนินการ คุณยังสามารถระบุ ID ผู้ใช้ด้วย expression ได้ ใครก็ตามที่ไม่อยู่ในรายชื่อที่คลิกจะได้รับการแจ้งเตือนส่วนตัว และขั้นตอนการทำงานก็จะรอต่อไป
- Unauthorized Reply : ข้อความส่วนตัว (ชั่วคราว) ที่แสดงต่อผู้ที่คลิกแต่ไม่อยู่ในรายชื่อผู้อนุมัติ ค่าเริ่มต้นเป็น
You are not authorized to respond to this request. - After Decision : จะเกิดอะไรขึ้นกับข้อความ Slack ดั้งเดิมเมื่อมีคนอนุมัติหรือปฏิเสธ
- Show Outcome and Remove Buttons (ค่าเริ่มต้น): เอาปุ่มออกและเพิ่มบรรทัดตั้งชื่อการตัดสินใจและผู้ตอบกลับ
- Remove Buttons Only : ลบปุ่มโดยไม่ต้องเพิ่มบรรทัดผลลัพธ์
- Keep Message Unchanged : ออกจากข้อความตามที่ส่งแล้ว รวมปุ่มต่างๆ การคลิกในภายหลังจะไม่เปลี่ยนแปลงการตัดสินใจที่บันทึกไว้ ซึ่งเป็นการตัดสินใจครั้งแรก
หากคุณปล่อยรายชื่อผู้อนุมัติว่างไว้ ใครก็ตามที่เห็นข้อความจะสามารถอนุมัติหรือปฏิเสธได้ ในช่องนั่นคือสมาชิกทุกคน รายการจะควบคุมผู้ที่สามารถตอบสนอง ไม่ใช่ผู้ที่สามารถดูคำขอได้ ดังนั้นให้โพสต์การอนุมัติที่ละเอียดอ่อนไปยังช่องทางส่วนตัวหรือข้อความส่วนตัว
5. ทดสอบดู (5. Test it)
ดำเนินการ workflow เลือก Approve ใน Slack และตรวจสอบ output ของ node
output node
เมื่อมีคนตอบกลับใน Slack node จะแสดงการตัดสินใจและผู้ตอบกลับ:
{
"data": {
"approved": true,
"respondedAt": "2025-07-13T12:34:56.000Z",
"channel": "C0123ABC456",
"messageId": "1752407696.123456",
"responder": {
"id": "U0123ABC456",
"name": "Jo Doe",
"username": "jo.doe",
"email": "jo@example.com",
"source": "slack"
}
}
}
ด้วยปุ่มลิงค์ output จะมีเพียงเท่านั้น approved และ respondedAt.
เมื่อคุณได้รับปุ่มลิงค์แทน
node จะทำงานเหมือนเมื่อก่อน โดยส่งปุ่มที่เปิดหน้ายืนยัน n8n เมื่อมีสิ่งใดสิ่งหนึ่งต่อไปนี้:
- Response Type คือ Free Text หรือ Custom Form.
- Capture Who Responded ปิดอยู่
ขั้นตอนการทำงานที่มีอยู่ยังคงทำงานไม่เปลี่ยนแปลง
การแก้ไขปัญหา
- ปุ่มไม่ทำอะไรเลย หรือ Slack แสดงคำเตือน (The buttons don't do anything, or Slack shows a warning) : ที่ Request URL ผิด อินสแตนซ์ของคุณไม่สามารถเข้าถึงได้แบบสาธารณะผ่าน HTTPS หรือ Signature Secret หายไปหรือผิด Slack จะแสดงคำเตือนเดียวกันสำหรับการโทรกลับที่ถูกปฏิเสธ เช่นเดียวกับ URL ที่ไม่สามารถเข้าถึงได้
- มีคนได้รับคำตอบว่า "ไม่ได้รับอนุญาต" (Someone gets a "not authorized" reply) : ผู้ใช้รายนั้นไม่อยู่ในรายการ Restrict Who Can Approve . ถ้อยคำมาจาก Unauthorized Reply.
- workflow จะไม่ดำเนินต่อแม้ว่าจะมีคนตอบกลับก็ตาม (The workflow never resumes although someone responded) : ที่ Signature Secret หายไปหรือไม่ตรงกับแอปของคุณ Signing Secret . n8n ปฏิเสธการโทรกลับที่ไม่สามารถตรวจสอบได้ และ workflow ยังคงรออยู่

