Slack 이벤트에 따른 워크플로우 자동화 App 구성
Slack에서 발생하는 특정 이벤트를 탐지하여 n8n에서 활용하는 방법을 안내드리겠습니다. n8n은 워크플로우 자동화를 위한 오픈 소스 도구로, 다양한 트리거와 액션을 통해 자동화 작업을 구성할 수 있습니다.
1. Slack 앱 설정
먼저, Slack에서 n8n과 연동할 수 있도록 설정해야 합니다.
1.1 Slack 앱 생성
- Slack API 페이지에 접속하여 "Create New App" 버튼을 클릭합니다.
- "From scratch" 옵션을 선택하고 앱의 이름과 개발할 워크스페이스를 선택합니다.
1.2 OAuth 및 권한 설정
- 생성된 앱의 설정 페이지에서 "OAuth & Permissions" 섹션으로 이동합니다.
- "OAuth Tokens & Redirect URLs" 아래의 "Scopes" 섹션에서 필요한 권한을 추가합니다. 예를 들어, 메시지 읽기를 위해
channels:history
,groups:history
,im:history
,mpim:history
등의 권한이 필요할 수 있습니다. - "Install App to Workspace" 버튼을 클릭하여 앱을 워크스페이스에 설치하고, 발급된 OAuth Access Token을 복사합니다.
1.3 Event Subscriptions 설정
- 앱 설정 페이지에서 "Event Subscriptions" 섹션으로 이동합니다.
- "Enable Events" 스위치를 활성화하고, "Request URL"에 n8n의 Webhook URL을 입력합니다.
- "Subscribe to bot events" 섹션에서 필요한 이벤트 (예:
message.channels
,message.groups
,message.im
,message.mpim
)를 선택합니다.
2. n8n 설정
이제 n8n에서 Slack 이벤트를 처리할 워크플로우를 설정합니다.
2.1 Webhook 노드 설정
- n8n 웹 인터페이스에 접속하여 새로운 워크플로우를 생성합니다.
- "Webhook" 노드를 추가하고, Webhook URL을 생성합니다. 이 URL을 앞서 Slack의 "Request URL"로 사용합니다.
- Webhook 노드의 HTTP Method는
POST
로 설정하고, Webhook URL을 Slack Event Subscriptions에 설정한 후 저장합니다.
2.2 Slack API 노드 설정
- Webhook 노드 다음에 "Slack" 노드를 추가합니다.
- Slack 노드의 Operation을 "Post a message"로 설정합니다.
- "Authentication" 섹션에서 OAuth Access Token을 설정합니다.
2.3 워크플로우 구성
- Webhook 노드에서 수신된 이벤트 데이터를 Slack 노드로 연결합니다.
- 필요한 경우, "Set" 노드 등을 사용하여 데이터를 가공할 수 있습니다.
- 모든 설정이 완료되면 워크플로우를 활성화합니다.
3. 테스트
- Slack에서 설정한 이벤트가 발생하면, n8n의 Webhook 노드가 이를 수신하고, 설정된 워크플로우가 실행됩니다.
- Slack 노드를 통해 메시지가 정상적으로 전송되는지 확인합니다.
이렇게 설정하면 Slack에서 발생하는 특정 이벤트를 n8n을 통해 자동화할 수 있습니다. 추가적인 워크플로우 설정이나 데이터 가공은 n8n의 다양한 노드를 활용하여 구성할 수 있습니다.
타인이 만든 Slack 앱에서 사용자에게 보내는 메시지를 n8n으로 전송하기 위해서는 메시지 수신을 위한 이벤트를 설정하고, 해당 이벤트를 n8n에서 처리하도록 설정해야 합니다.
1. Slack 설정
1.1 Slack 앱의 이벤트 수신 설정
- Slack API 페이지에 접속하여 본인이 만든 Slack 앱을 선택합니다. 타인이 만든 앱에서 보내는 메시지를 감지하기 위해서는 자신이 앱을 만들어야 합니다.
- "Event Subscriptions" 섹션으로 이동합니다.
- "Enable Events" 스위치를 활성화합니다.
- "Request URL"에 n8n의 Webhook URL을 입력합니다.
- "Subscribe to bot events" 섹션에서
message.im
및message.channels
이벤트를 추가합니다. 이는 다이렉트 메시지와 채널 메시지를 수신하기 위함입니다.
1.2 OAuth & 권한 설정
- "OAuth & Permissions" 섹션으로 이동합니다.
- "Scopes"에서 다음 권한을 추가합니다.
channels:history
groups:history
im:history
mpim:history
- "Install App to Workspace" 버튼을 클릭하여 앱을 워크스페이스에 설치하고, OAuth Access Token을 복사합니다.
2. n8n 설정
2.1 Webhook 노드 설정
- n8n 웹 인터페이스에 접속하여 새로운 워크플로우를 생성합니다.
- "Webhook" 노드를 추가하고, Webhook URL을 생성합니다. 이 URL을 Slack의 "Request URL"로 사용합니다.
- Webhook 노드의 HTTP Method는
POST
로 설정하고, Webhook URL을 복사하여 Slack Event Subscriptions의 "Request URL"로 설정합니다.
2.2 데이터 처리 노드 설정
- Webhook 노드에서 수신된 데이터를 처리하기 위해 "Set" 노드를 추가합니다.
- 필요한 데이터 필드를 설정하여 후속 노드로 전달할 수 있도록 합니다.
2.3 Slack API 노드 설정
- Webhook 노드 다음에 "Slack" 노드를 추가합니다.
- Slack 노드의 Operation을 "Post a message"로 설정합니다.
- "Authentication" 섹션에서 OAuth Access Token을 설정합니다.
- 메시지 내용을 설정하여, n8n이 메시지를 수신했음을 알리는 메시지를 보낼 수 있습니다.
3. 워크플로우 구성 및 테스트
- Webhook 노드에서 수신된 이벤트 데이터를 Slack 노드로 연결합니다.
- 모든 설정이 완료되면 워크플로우를 활성화합니다.
- Slack에서 타인이 만든 앱이 메시지를 보낼 때, n8n의 Webhook이 이를 수신하고 설정된 작업을 수행하는지 확인합니다.
4. 예시 워크플로우
[Webhook Node] -> [Set Node (optional)] -> [Slack Node]
Webhook 노드 설정 예시
- HTTP Method: POST
- Webhook URL: (자동 생성된 URL을 Slack에 설정)
Set 노드 설정 예시
- 원하는 필드 및 값 설정
Slack 노드 설정 예시
- Operation: Post a message
- Channel: #general (또는 원하는 채널)
- Text: "New message received from another app!"
추가적으로, 타인이 만든 앱이 사용자에게 보내는 메시지가 다이렉트 메시지로 식별되는지 확인하려면, Slack에서 다이렉트 메시지와 앱이 보낸 메시지를 구분할 수 있는 방법을 이해해야 합니다. 일반적으로, 타인이 만든 앱이 보내는 메시지도 다이렉트 메시지로 수신될 수 있습니다. 다만, 메시지의 메타데이터를 통해 해당 메시지가 사용자로부터 온 것인지, 앱으로부터 온 것인지 구분할 수 있습니다.
이벤트 구독 설정
Slack에서 다이렉트 메시지를 구독하기 위해서는 message.im
이벤트를 구독해야 합니다. 이 이벤트는 다이렉트 메시지가 발생할 때 트리거됩니다.
메시지 필터링 및 처리
메시지가 도착했을 때, 해당 메시지가 사용자로부터 온 것인지, 앱으로부터 온 것인지 식별하기 위해서는 이벤트 페이로드를 분석해야 합니다.
1. Slack 설정
1.1 Slack 앱의 이벤트 구독 설정
- Slack API 페이지에 접속하여 본인이 만든 Slack 앱을 선택합니다.
- "Event Subscriptions" 섹션으로 이동합니다.
- "Enable Events" 스위치를 활성화합니다.
- "Request URL"에 n8n의 Webhook URL을 입력합니다.
- "Subscribe to bot events" 섹션에서
message.im
이벤트를 추가합니다.
2. n8n 설정
2.1 Webhook 노드 설정
- n8n 웹 인터페이스에 접속하여 새로운 워크플로우를 생성합니다.
- "Webhook" 노드를 추가하고, Webhook URL을 생성합니다. 이 URL을 Slack의 "Request URL"로 사용합니다.
- Webhook 노드의 HTTP Method를
POST
로 설정합니다.
2.2 데이터 처리 노드 설정
- Webhook 노드에서 수신된 데이터를 처리하기 위해 "Function" 노드를 추가합니다.
- Function 노드에서 메시지의
subtype
필드를 확인하여 메시지가 앱으로부터 온 것인지 식별합니다. 예를 들어,subtype
이bot_message
인 경우, 메시지는 앱(봇)으로부터 온 것입니다.
Function 노드 예시 코드
// 이벤트 데이터에서 subtype을 확인하여 메시지가 봇으로부터 온 것인지 확인
const event = items[0].json;
if (event.subtype === 'bot_message') {
return [{ json: { message: 'Message from a bot detected', data: event } }];
} else {
return [{ json: { message: 'Message from a user detected', data: event } }];
}
2.3 Slack API 노드 설정
- Function 노드 다음에 "Slack" 노드를 추가합니다.
- Slack 노드의 Operation을 "Post a message"로 설정합니다.
- "Authentication" 섹션에서 OAuth Access Token을 설정합니다.
- 메시지 내용을 설정하여, n8n이 메시지를 수신했음을 알리는 메시지를 보낼 수 있습니다.
3. 워크플로우 구성 및 테스트
- Webhook 노드에서 수신된 이벤트 데이터를 Function 노드로 연결합니다.
- Function 노드에서 데이터를 처리하고 Slack 노드로 연결합니다.
- 모든 설정이 완료되면 워크플로우를 활성화합니다.
- Slack에서 타인이 만든 앱이 메시지를 보낼 때, n8n의 Webhook이 이를 수신하고 설정된 작업을 수행하는지 확인합니다.
예시 워크플로우
[Webhook Node] -> [Function Node] -> [Slack Node]
Webhook 노드 설정 예시
- HTTP Method: POST
- Webhook URL: (자동 생성된 URL을 Slack에 설정)
Function 노드 설정 예시
- 코드: 위의 예시 코드 사용
Slack 노드 설정 예시
- Operation: Post a message
- Channel: #general (또는 원하는 채널)
- Text: (Function 노드의 출력을 사용하여 메시지 내용 설정)
이와 같은 설정으로 타인이 만든 앱에서 보낸 메시지를 n8n을 통해 처리하고 알림을 받을 수 있습니다. 필요에 따라 추가적인 데이터 가공 및 처리를 워크플로우에 추가하여 활용할 수 있습니다.