웹디자인 (HTML,JS)

Slack 이벤트에 따른 워크플로우 자동화 App 구성

날으는물고기 2024. 7. 19. 00:17

Slack에서 발생하는 특정 이벤트를 탐지하여 n8n에서 활용하는 방법을 안내드리겠습니다. n8n은 워크플로우 자동화를 위한 오픈 소스 도구로, 다양한 트리거와 액션을 통해 자동화 작업을 구성할 수 있습니다.

1. Slack 앱 설정

먼저, Slack에서 n8n과 연동할 수 있도록 설정해야 합니다.

1.1 Slack 앱 생성

  1. Slack API 페이지에 접속하여 "Create New App" 버튼을 클릭합니다.
  2. "From scratch" 옵션을 선택하고 앱의 이름과 개발할 워크스페이스를 선택합니다.

1.2 OAuth 및 권한 설정

  1. 생성된 앱의 설정 페이지에서 "OAuth & Permissions" 섹션으로 이동합니다.
  2. "OAuth Tokens & Redirect URLs" 아래의 "Scopes" 섹션에서 필요한 권한을 추가합니다. 예를 들어, 메시지 읽기를 위해 channels:history, groups:history, im:history, mpim:history 등의 권한이 필요할 수 있습니다.
  3. "Install App to Workspace" 버튼을 클릭하여 앱을 워크스페이스에 설치하고, 발급된 OAuth Access Token을 복사합니다.

1.3 Event Subscriptions 설정

  1. 앱 설정 페이지에서 "Event Subscriptions" 섹션으로 이동합니다.
  2. "Enable Events" 스위치를 활성화하고, "Request URL"에 n8n의 Webhook URL을 입력합니다.
  3. "Subscribe to bot events" 섹션에서 필요한 이벤트 (예: message.channels, message.groups, message.im, message.mpim)를 선택합니다.

2. n8n 설정

이제 n8n에서 Slack 이벤트를 처리할 워크플로우를 설정합니다.

2.1 Webhook 노드 설정

  1. n8n 웹 인터페이스에 접속하여 새로운 워크플로우를 생성합니다.
  2. "Webhook" 노드를 추가하고, Webhook URL을 생성합니다. 이 URL을 앞서 Slack의 "Request URL"로 사용합니다.
  3. Webhook 노드의 HTTP Method는 POST로 설정하고, Webhook URL을 Slack Event Subscriptions에 설정한 후 저장합니다.

2.2 Slack API 노드 설정

  1. Webhook 노드 다음에 "Slack" 노드를 추가합니다.
  2. Slack 노드의 Operation을 "Post a message"로 설정합니다.
  3. "Authentication" 섹션에서 OAuth Access Token을 설정합니다.

2.3 워크플로우 구성

  1. Webhook 노드에서 수신된 이벤트 데이터를 Slack 노드로 연결합니다.
  2. 필요한 경우, "Set" 노드 등을 사용하여 데이터를 가공할 수 있습니다.
  3. 모든 설정이 완료되면 워크플로우를 활성화합니다.

3. 테스트

  1. Slack에서 설정한 이벤트가 발생하면, n8n의 Webhook 노드가 이를 수신하고, 설정된 워크플로우가 실행됩니다.
  2. Slack 노드를 통해 메시지가 정상적으로 전송되는지 확인합니다.

이렇게 설정하면 Slack에서 발생하는 특정 이벤트를 n8n을 통해 자동화할 수 있습니다. 추가적인 워크플로우 설정이나 데이터 가공은 n8n의 다양한 노드를 활용하여 구성할 수 있습니다.

 

타인이 만든 Slack 앱에서 사용자에게 보내는 메시지를 n8n으로 전송하기 위해서는 메시지 수신을 위한 이벤트를 설정하고, 해당 이벤트를 n8n에서 처리하도록 설정해야 합니다.

1. Slack 설정

1.1 Slack 앱의 이벤트 수신 설정

  1. Slack API 페이지에 접속하여 본인이 만든 Slack 앱을 선택합니다. 타인이 만든 앱에서 보내는 메시지를 감지하기 위해서는 자신이 앱을 만들어야 합니다.
  2. "Event Subscriptions" 섹션으로 이동합니다.
  3. "Enable Events" 스위치를 활성화합니다.
  4. "Request URL"에 n8n의 Webhook URL을 입력합니다.
  5. "Subscribe to bot events" 섹션에서 message.immessage.channels 이벤트를 추가합니다. 이는 다이렉트 메시지와 채널 메시지를 수신하기 위함입니다.

1.2 OAuth & 권한 설정

  1. "OAuth & Permissions" 섹션으로 이동합니다.
  2. "Scopes"에서 다음 권한을 추가합니다.
    • channels:history
    • groups:history
    • im:history
    • mpim:history
  3. "Install App to Workspace" 버튼을 클릭하여 앱을 워크스페이스에 설치하고, OAuth Access Token을 복사합니다.

2. n8n 설정

2.1 Webhook 노드 설정

  1. n8n 웹 인터페이스에 접속하여 새로운 워크플로우를 생성합니다.
  2. "Webhook" 노드를 추가하고, Webhook URL을 생성합니다. 이 URL을 Slack의 "Request URL"로 사용합니다.
  3. Webhook 노드의 HTTP Method는 POST로 설정하고, Webhook URL을 복사하여 Slack Event Subscriptions의 "Request URL"로 설정합니다.

2.2 데이터 처리 노드 설정

  1. Webhook 노드에서 수신된 데이터를 처리하기 위해 "Set" 노드를 추가합니다.
  2. 필요한 데이터 필드를 설정하여 후속 노드로 전달할 수 있도록 합니다.

2.3 Slack API 노드 설정

  1. Webhook 노드 다음에 "Slack" 노드를 추가합니다.
  2. Slack 노드의 Operation을 "Post a message"로 설정합니다.
  3. "Authentication" 섹션에서 OAuth Access Token을 설정합니다.
  4. 메시지 내용을 설정하여, n8n이 메시지를 수신했음을 알리는 메시지를 보낼 수 있습니다.

3. 워크플로우 구성 및 테스트

  1. Webhook 노드에서 수신된 이벤트 데이터를 Slack 노드로 연결합니다.
  2. 모든 설정이 완료되면 워크플로우를 활성화합니다.
  3. 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 앱의 이벤트 구독 설정

  1. Slack API 페이지에 접속하여 본인이 만든 Slack 앱을 선택합니다.
  2. "Event Subscriptions" 섹션으로 이동합니다.
  3. "Enable Events" 스위치를 활성화합니다.
  4. "Request URL"에 n8n의 Webhook URL을 입력합니다.
  5. "Subscribe to bot events" 섹션에서 message.im 이벤트를 추가합니다.

2. n8n 설정

2.1 Webhook 노드 설정

  1. n8n 웹 인터페이스에 접속하여 새로운 워크플로우를 생성합니다.
  2. "Webhook" 노드를 추가하고, Webhook URL을 생성합니다. 이 URL을 Slack의 "Request URL"로 사용합니다.
  3. Webhook 노드의 HTTP Method를 POST로 설정합니다.

2.2 데이터 처리 노드 설정

  1. Webhook 노드에서 수신된 데이터를 처리하기 위해 "Function" 노드를 추가합니다.
  2. Function 노드에서 메시지의 subtype 필드를 확인하여 메시지가 앱으로부터 온 것인지 식별합니다. 예를 들어, subtypebot_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 노드 설정

  1. Function 노드 다음에 "Slack" 노드를 추가합니다.
  2. Slack 노드의 Operation을 "Post a message"로 설정합니다.
  3. "Authentication" 섹션에서 OAuth Access Token을 설정합니다.
  4. 메시지 내용을 설정하여, n8n이 메시지를 수신했음을 알리는 메시지를 보낼 수 있습니다.

3. 워크플로우 구성 및 테스트

  1. Webhook 노드에서 수신된 이벤트 데이터를 Function 노드로 연결합니다.
  2. Function 노드에서 데이터를 처리하고 Slack 노드로 연결합니다.
  3. 모든 설정이 완료되면 워크플로우를 활성화합니다.
  4. 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을 통해 처리하고 알림을 받을 수 있습니다. 필요에 따라 추가적인 데이터 가공 및 처리를 워크플로우에 추가하여 활용할 수 있습니다.

728x90