본문 바로가기
프로그램 (PHP,Python)

슬랙 이벤트에 따른 자동화 대응 워크플로우 구성으로 효율성 증대

by 날으는물고기 2024. 6. 10.

슬랙 이벤트에 따른 자동화 대응 워크플로우 구성으로 효율성 증대

Best n8n workflows for Sales teams - Forest Admin

슬랙의 특정 스레드 내용이나 이벤트를 수집하는 방법은 크게 두 가지로 나뉠 수 있습니다. n8n을 활용하는 방법과 슬랙 봇을 개발하는 방법입니다. 어느 쪽을 선택하느냐에 따라 구현의 복잡성, 유연성, 그리고 관리의 편의성이 달라질 수 있습니다. 각각의 방법에 대해 간단히 설명드리겠습니다.

n8n을 활용한 방법

n8n은 워크플로우 자동화 도구로, 코드를 작성하지 않고도 다양한 애플리케이션과 서비스를 연동할 수 있습니다. Slack과 같은 플랫폼과의 통합을 지원하기 때문에, 슬랙 스레드 내용을 수집하는 워크플로우를 구성할 수 있습니다.

  • 이모니콘 반응으로 스레드 수집: n8n에는 슬랙의 이벤트를 감지하여 트리거하는 기능이 있습니다. 예를 들어, 특정 이모지 반응이 스레드에 추가되었을 때, 이를 트리거로 설정하여 스레드의 내용을 수집하고, 이를 다른 시스템으로 전송하거나 저장하는 워크플로우를 구성할 수 있습니다.
  • 구성: 워크플로우를 구성하기 위해 n8n의 Slack 노드를 사용하며, 이를 통해 슬랙 API에 요청을 보내 스레드 메시지를 가져올 수 있습니다.
  • 장점: 코드를 작성할 필요 없이 시각적 인터페이스를 통해 워크플로우를 구성할 수 있으며, 다양한 서비스와의 연동이 용이합니다.

슬랙 봇을 개발하는 방법

슬랙 봇을 직접 개발하는 방식은 좀 더 유연한 솔루션이 될 수 있습니다. 슬랙의 API를 직접 사용하여 특정 이모니콘 반응이 달린 스레드의 내용을 수집하고, 필요한 처리를 할 수 있습니다.

  • 이벤트 구독: 슬랙 봇을 사용하여, reaction_added 이벤트에 구독하고, 해당 이벤트가 발생할 때마다 슬랙 API를 통해 스레드의 메시지를 가져올 수 있습니다. 이렇게 가져온 메시지는 데이터베이스에 저장하거나, 다른 시스템으로 전송하는 등의 처리를 할 수 있습니다.
  • 슬랙 API 사용: 스레드 내용을 수집하기 위해서는 conversations.replies API를 사용하여 특정 스레드의 모든 메시지를 가져올 수 있습니다. 또한, reactions.get API를 사용하여 특정 메시지에 달린 이모지 반응 정보를 가져올 수 있습니다.
  • 장점: 직접 슬랙 봇을 개발하면, n8n과 같은 제3의 도구에 의존하지 않고, 필요에 맞게 매우 세밀한 로직을 구현할 수 있습니다.

 

두 방법 중 어느 것을 선택하느냐는 프로젝트의 요구 사항, 기술적인 선호, 유지 관리의 용이성 등 여러 요인을 고려해야 합니다. n8n을 활용하면 빠르게 프로토타입을 만들어 볼 수 있으며, 슬랙 봇 개발은 좀 더 유연하고 세밀한 제어가 필요할 때 적합할 수 있습니다.

 

n8n을 사용하여 슬랙 이벤트를 감지하고 데이터를 수집할 때, 메인 스레드에 이모지 반응이 추가되면 해당 이벤트를 트리거로 사용하여 그 스레드와 관련된 모든 댓글(스레드의 후속 메시지)을 수집하는 것이 가능합니다. 이를 위해서는 몇 가지 단계를 거쳐야 합니다.

  1. 슬랙 이벤트 구독: 먼저, n8n의 슬랙 트리거를 사용하여 reaction_added 이벤트에 대해 구독합니다. 이렇게 하면 특정 이모지 반응이 메시지에 추가될 때마다 n8n 워크플로우가 실행됩니다.
  2. 메시지 및 스레드 정보 확인: 이벤트가 발생하면, 해당 이벤트 데이터에서 메시지 ID와 채널 ID를 확인할 수 있습니다. 이 정보를 사용하여 메인 스레드인지 확인하고, 메인 스레드에 대한 반응인 경우에만 후속 작업을 진행합니다.
  3. 스레드 댓글 수집: 메인 스레드에 대한 이모지 반응을 확인한 후, conversations.replies 슬랙 API를 호출하여 해당 스레드의 모든 댓글(후속 메시지)을 가져올 수 있습니다. n8n에서는 HTTP Request 노드를 사용하여 이 API를 호출하고 응답을 받을 수 있습니다.
  4. 데이터 처리 및 저장: 슬랙 API로부터 받은 응답에는 스레드의 모든 댓글 정보가 포함됩니다. 이 데이터를 필요에 따라 처리하고, 데이터베이스에 저장하거나 다른 시스템으로 전송할 수 있습니다.
  5. 자동화 및 조건 로직 구현: 워크플로우 내에서 조건 분기를 사용하여, 특정 이모지에만 반응하거나 특정 사용자의 반응을 필터링하는 등의 추가적인 로직을 구현할 수 있습니다.

이 과정을 통해, 메인 스레드에 대한 특정 이모지 반응을 감지하고, 해당 스레드의 모든 댓글을 수집하는 자동화된 워크플로우를 n8n을 사용하여 구성할 수 있습니다. 다만, 슬랙 API를 사용하기 위해서는 슬랙 앱에 적절한 권한을 설정해야 하며, n8n 워크플로우를 구성할 때 슬랙 API의 사용 제한 및 요청 한도를 고려해야 합니다.

 

실제로 n8n을 사용하여 슬랙에서 특정 이모지 반응을 한 메인 스레드의 모든 댓글을 수집하는 방법을 단계별로 설명하겠습니다. 이 과정은 슬랙 앱 생성 및 설정, n8n 워크플로우 구성, 슬랙 API 사용에 대한 기본적인 이해를 전제로 합니다.

1. 슬랙 앱 설정

  1. 슬랙 API에 액세스하기 위한 앱 생성
    • 슬랙 API 웹사이트에 로그인한 후, "Create New App"을 선택하여 새 앱을 생성합니다.
    • 앱 이름을 지정하고, 앱을 추가할 슬랙 워크스페이스를 선택합니다.
  2. 필요한 권한 설정
    • 앱 설정 페이지에서 "OAuth & Permissions" 탭으로 이동합니다.
    • "Bot Token Scopes" 섹션에서 필요한 권한을 추가합니다. 이 경우 reactions:read, channels:history, groups:history, im:history, mpim:history 그리고 chat:write 권한이 필요할 수 있습니다.
  3. 앱 설치 및 봇 토큰 얻기
    • "Install App to Workspace" 버튼을 클릭하여 앱을 워크스페이스에 설치합니다.
    • 설치 후 생성된 "Bot User OAuth Access Token"을 안전한 곳에 저장합니다. 이 토큰은 n8n에서 슬랙 API를 호출할 때 사용됩니다.

2. n8n 워크플로우 구성

  1. n8n 설정 및 실행
    • n8n은 로컬 머신, 서버 또는 n8n.cloud를 통해 실행할 수 있습니다. 설치 방법은 n8n의 공식 문서를 참고하시기 바랍니다.
    • n8n을 실행하고 웹 인터페이스를 통해 접근합니다.
  2. 슬랙 트리거 설정
    • n8n 워크플로우 에디터에서 "Slack Trigger" 노드를 추가합니다.
    • "Credentials" 설정에서 새로운 슬랙 연결을 추가하고, 앞서 얻은 "Bot User OAuth Access Token"을 사용하여 인증합니다.
    • "Trigger On" 옵션에서 "Reaction Added"를 선택합니다.
  3. HTTP Request 노드 설정
    • 슬랙 트리거 노드에서 출력된 데이터를 기반으로 conversations.replies API를 호출하기 위해 "HTTP Request" 노드를 추가합니다.
    • 메서드를 "POST"로 설정하고, URL을 https://slack.com/api/conversations.replies로 설정합니다.
    • "Headers"에 Authorization 키와 값으로 Bearer <Your Bot User OAuth Access Token>를 추가합니다.
    • "Body Parameters"에 필요한 파라미터를 추가합니다. 예를 들어, channel에는 슬랙 트리거 노드에서 받은 채널 ID를, ts에는 메시지의 타임스탬프를 입력합니다.
  4. 결과 처리
    • HTTP Request 노드의 출력을 다루기 위해 필요한 노드를 추가합니다. 예를 들어, "Function" 노드를 사용하여 받은 데이터를 파싱하고 필요한 정보만 추출할 수 있습니다.
    • 결과 데이터를 데이터베이스에 저장하거나, 이메일로 보내는 등의 추가 작업을 위해 "Insert into DB", "Send Email" 노드 등을 활용할 수 있습니다.
  5. 워크플로우 실행 및 테스트
    • 워크플로우를 저장하고 실행합니다. 슬랙에서 설정한 이모지로 메인 스레드에 반응하여 워크플로우가 올바르게 트리거되고 데이터가 수집되는지 확인합니다.

3. 고려 사항

  • 슬랙의 API 사용 제한 및 요청 한도를 확인하고, 워크플로우가 이를 초과하지 않도록 주의합니다.
  • 보안을 위해 슬랙 토큰과 같은 민감한 정보를 안전하게 관리합니다.
  • 슬랙 워크스페이스의 다른 사용자에게 영향을 주지 않도록 테스트는 개발용 워크스페이스나 채널에서 수행합니다.

 

이러한 단계를 통해 n8n을 사용하여 슬랙의 특정 이모지 반응을 한 메인 스레드의 댓글을 수집하는 자동화 워크플로우를 구성할 수 있습니다. 슬랙에서 특정 이모지 반응이 달린 메인 스레드의 댓글을 수집하고, 이를 구글 독스 문서에 추가하는 워크플로우를 구성하는 방법은 다음과 같습니다. 이 과정은 앞서 설명한 슬랙 앱 설정 및 n8n 워크플로우 구성을 기반으로 하며, 추가로 구글 독스와의 통합을 포함합니다.

1. 구글 독스 설정

  1. Google Cloud Platform (GCP) 프로젝트 설정
    • GCP 콘솔에서 새 프로젝트를 생성합니다.
    • "APIs & Services > Dashboard"로 이동하여 "ENABLE APIS AND SERVICES"를 클릭합니다.
    • "Google Docs API"를 검색하고, API를 활성화합니다.
  2. OAuth 2.0 클라이언트 ID 생성
    • "Credentials" 페이지로 이동하여 "Create credentials" > "OAuth client ID"를 선택합니다.
    • 애플리케이션 유형으로 "Web application"을 선택하고, 필요한 설정을 완료합니다.
    • 생성된 클라이언트 ID와 클라이언트 비밀을 안전하게 저장합니다.
  3. 구글 독스에 대한 액세스 권한 부여
    • n8n에서 Google Docs API를 사용하려면, 생성한 OAuth 클라이언트를 사용하여 구글 계정에 로그인하고 필요한 권한을 부여해야 합니다.

2. n8n 워크플로우 구성

앞서 설명한 슬랙 트리거와 HTTP Request 노드 설정 이후, 수집된 스레드 댓글을 구글 독스 문서에 추가하는 단계를 추가합니다.

  1. Google OAuth2 API 인증 설정
    • n8n 워크플로우 에디터에서 "Google Sheets" 또는 "Google Drive" 노드를 추가합니다(이 예제에서는 구글 독스 문서에 쓰기 때문에 "Google Sheets" 노드가 아니라 "HTTP Request" 노드를 사용하여 Google Docs API를 직접 호출할 수 있습니다).
    • "Credentials" 설정에서 "OAuth2" 타입을 선택하고, 앞서 GCP에서 생성한 클라이언트 ID와 클라이언트 비밀을 사용하여 새로운 인증을 추가합니다.
    • 구글 계정에 로그인하고 n8n에 대한 접근 권한을 부여합니다.
  2. HTTP Request 노드를 사용하여 Google Docs API 호출
    • 슬랙에서 수집된 데이터를 처리하여 구글 독스 문서에 추가하기 위한 "HTTP Request" 노드를 추가합니다.
    • 메서드는 "POST"로 설정하고, URL은 구글 독스 문서를 업데이트하는데 사용되는 Google Docs API의 엔드포인트로 설정합니다. 예를 들어, https://docs.googleapis.com/v1/documents/{documentId}:batchUpdate의 형식을 사용할 수 있습니다. {documentId}는 업데이트하려는 구글 독스 문서의 ID로 대체해야 합니다.
    • "Headers"에는 Authorization 키와 Bearer <Your OAuth2 Token> 값을 추가합니다.
    • "Body"에는 구글 독스 API 요청 명세에 따라 문서에 추가할 내용을 정의합니다.
  3. 워크플로우 실행 및 테스트
    • 모든 설정을 마친 후, 워크플로우를 저장하고 실행하여 슬랙의 스레드 댓글이 올바르게 구글 독스 문서에 추가되는지 확인합니다.

3. 고려 사항

  • Google Docs API를 사용할 때는 API 사용량과 관련된 제한 사항을 확인하고 준수해야 합니다.
  • 구글 독스 문서에 대한 쓰기 권한이 있는지 확인합니다.
  • 보안을 위해 OAuth2 토큰과 같은 인증 정보를 안전하게 관리합니다.
  • n8n 워크플로우에서 사용하는 모든 API 호출과 관련하여 에러 처리를 고려합니다.

 

구글 독스 문서가 업데이트될 때 이를 트리거로 사용하여 해당 문서의 내용을 GPT를 통해 재정리하고, 그 결과를 슬랙 채널에 기록하는 자동화 워크플로우를 n8n을 사용하여 구성하는 과정은 다음과 같습니다. 이 과정은 구글 독스의 변경 사항을 감지, 내용 추출 및 GPT를 통한 내용 재정리, 그리고 슬랙으로의 결과 전송을 포함합니다.

1. 구글 독스 변경 감지 설정

n8n은 직접적으로 구글 독스의 변경을 감지하는 트리거를 제공하지 않습니다. 대신, Google Drive의 "Changes: list" API를 활용하여 문서 변경을 감지할 수 있으나, 이를 위해서는 주기적으로 폴링하는 방식을 사용해야 합니다. 또는 Google Apps Script를 사용하여 문서 변경 시 외부 웹후크를 호출하는 방식으로 n8n 워크플로우를 트리거할 수 있습니다.

 

Google Apps Script 방식 예시

  1. 구글 독스 문서를 열고, "Extensions > Apps Script"를 선택합니다.
  2. 새 스크립트에 아래 코드를 추가하고, YOUR_WEBHOOK_URL 부분을 n8n 웹후크 URL로 대체합니다.
     function onEdit(e) {
       var url = 'YOUR_WEBHOOK_URL';
       var options = {
         'method': 'post',
         'contentType': 'application/json',
         'payload': JSON.stringify({"message": "Document Updated"})
       };
       UrlFetchApp.fetch(url, options);
     }
    
     function createTrigger() {
       ScriptApp.newTrigger('onEdit')
         .forSpreadsheet(SpreadsheetApp.getActive())
         .onEdit()
         .create();
     }
  3. createTrigger 함수를 실행하여, 문서 편집 시 onEdit 함수가 호출되도록 트리거를 생성합니다.

2. n8n 워크플로우 구성

  1. Webhook 노드 설정
    • n8n 워크플로우 에디터에서 "Webhook" 노드를 추가하고, 구성합니다. 이 웹후크 URL은 Google Apps Script에서 호출됩니다.
    • 웹후크가 트리거되면, 문서 ID를 사용하여 문서의 최신 내용을 가져오는 단계로 이동합니다.
  2. HTTP Request 노드로 구글 독스 내용 가져오기
    • "HTTP Request" 노드를 추가하여, 구글 독스 API를 사용해 문서 내용을 가져옵니다.
    • 구글 독스 API를 사용하기 위한 인증 정보와 문서 ID를 정확히 설정해야 합니다.
  3. GPT 노드로 내용 재정리
    • n8n 내에 직접적인 GPT 노드는 없으므로, "HTTP Request" 노드를 사용하여 GPT API를 호출할 수 있습니다. 예를 들어, OpenAI의 API를 사용할 경우, 이 단계에서 API 요청을 구성하여 문서 내용을 전송하고, 재정리된 결과를 받습니다.
  4. Slack 노드로 결과 전송
    • "Slack" 노드를 추가하여, GPT에 의해 재정리된 문서 내용을 슬랙 채널에 메시지로 전송합니다. 이를 위해 슬랙 앱의 설정과 n8n 내에서의 슬랙 인증 정보를 미리 구성해야 합니다.

3. 워크플로우 실행 및 테스트

  • 워크플로우를 저장하고 활성화합니다.
  • 구글 독스 문서를 수정하여 Google Apps Script에 의한 웹후크 트리거를 테스트합니다.
  • n8n 워크플로우가 올바르게 실행되어, 문서의 변경 내용이 GPT를 통해 재정리되고, 해당 내용이 슬랙 채널에 성공적으로 전송되는지 확인합니다.

4. 고려 사항

  • Google Apps Script를 사용할 때는 스크립트의 실행 권한과 트리거 조건을 주의 깊게 검토해야 합니다.
  • GPT API를 사용할 때는 요청 제한, 비용 등을 고려해야 합니다.
  • 슬랙과 구글 독스의 API를 사용하기 위한 인증 정보 및 권한 설정을 정확히 수행해야 합니다.
  • 보안을 위해 웹후크 URL은 안전하게 관리하고, 필요한 경우 n8n의 내장 기능을 사용하여 암호화합니다.

 

새로운 이슈가 접수될 때 구글 시트의 목록에서 유사 내용을 선정하고, 해당 주제의 구글 독스 내용을 기반으로 접수 내용에 대한 1차 피드백 초안을 GPT를 통해 작성하는 n8n 워크플로우를 구성하는 프로세스를 크게 네 부분으로 나누어 이슈 접수 감지, 유사 내용 검색, 구글 독스 내용 추출, 그리고 GPT를 사용한 피드백 초안 작성입니다.

전제 조건

  • Google Sheets에는 이슈 목록이 저장되어 있으며, 각 이슈는 관련된 Google Docs 문서의 ID를 포함하고 있습니다.
  • OpenAI의 GPT를 사용하여 피드백 초안을 생성하기 위해 OpenAI API 키가 필요합니다.
  • 이 예시에서는 웹폼을 통해 이슈가 접수된다고 가정하며, n8n의 "Webhook" 노드를 사용하여 이를 감지합니다.

단계 1: 이슈 접수 감지

웹폼 구성: 사용자가 이슈를 접수할 수 있는 웹폼을 구성합니다. 이 폼은 사용자로부터 이슈의 내용을 수집하여 n8n 웹후크로 전송해야 합니다.

n8n에서 Webhook 노드 설정

  • n8n을 실행하고, 새 워크플로우를 생성한 다음, "Webhook" 노드를 추가합니다.
  • Webhook 노드를 "HTTP Method"가 POST가 되도록 설정합니다. 이는 웹폼에서 수집된 데이터를 받기 위함입니다.

단계 2: 구글 시트에서 유사 이슈 검색

Google Sheets 노드 설정

  • "Google Sheets" 노드를 추가하고 OAuth2 인증을 설정합니다.
  • "Operation"을 "Read"로 설정하고, 이슈 목록이 저장된 시트의 ID와 범위를 지정합니다.
  • 이슈 내용을 포함하는 "Webhook" 노드의 출력을 사용하여 유사도를 판단하는 로직을 구현합니다. 이는 "Function" 노드를 사용하여 JavaScript 코드로 작성할 수 있습니다. 예를 들어, 간단한 키워드 일치 또는 더 고급 알고리즘을 사용할 수 있습니다.

단계 3: 구글 독스 내용 추출

Google Docs API를 사용하여 문서 내용 추출

  • "HTTP Request" 노드를 추가하여 구성합니다. 이 노드는 Google Docs API를 호출하여 선정된 이슈와 관련된 Google Docs 문서의 내용을 가져오는 데 사용됩니다.
  • URL을 https://docs.googleapis.com/v1/documents/{documentId}로 설정하고, documentId는 Google Sheets에서 얻은 문서 ID로 대체합니다.
  • 인증 방식으로 "OAuth2"를 선택하고, 필요한 권한을 설정합니다.

단계 4: GPT를 사용한 피드백 초안 생성

OpenAI API를 사용하여 피드백 생성

  • "HTTP Request" 노드를 추가하여 OpenAI의 GPT API를 호출합니다.
  • URL을 OpenAI의 API 엔드포인트로 설정하고, 메서드를 "POST"로 설정합니다.
  • Headers에는 'Authorization': 'Bearer YOUR_OPENAI_API_KEY'를 추가합니다.
  • Body에는 이전 단계에서 추출한 구글 독스 내용과 접수된 이슈 내용을 포함하는 JSON을 작성합니다. 이 때, "prompt" 키를 사용하여 GPT에 전달할 질문이나 명령을 정의합니다.

예시 코드 (GPT 호출 부분)

{
  "method": "POST",
  "url": "https://api.openai.com/v1/completions",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_OPENAI_API_KEY"
  },
  "body": {
    "model": "text-davinci-003",
    "prompt": "Here is a customer issue: 'CUSTOMER_ISSUE'. Based on the following document: 'GOOGLE_DOC_CONTENT', provide a draft response.",
    "temperature": 0.7,
    "max_tokens": 256
  },
  "json": true
}

여기서 'CUSTOMER_ISSUE''GOOGLE_DOC_CONTENT'는 실제 접수된 이슈 내용과 구글 독스의 내용으로 대체해야 합니다.

단계 5: 생성된 피드백을 처리하고 저장

  • "Function" 노드 또는 추가 "HTTP Request" 노드를 사용하여 생성된 피드백을 원하는 방식으로 처리하고 저장합니다. 예를 들어, 이메일로 전송하거나, 다시 구글 시트에 기록할 수 있습니다.

주의 사항

  • 구글 API와 OpenAI API를 사용하기 위한 인증 정보와 권한 설정에 주의를 기울여야 합니다.
  • API 호출 시 사용 제한 및 비용이 발생할 수 있으므로, 관련 정책을 미리 확인하고 계획을 세워야 합니다.
  • "Function" 노드에서 사용하는 JavaScript 코드는 예시와 프로젝트의 구체적인 요구 사항에 따라 달라질 수 있습니다.

 

슬랙에서 스레드의 키값(일반적으로 타임스탬프를 사용)을 입력받아 해당 스레드 내용을 수집하는 작업은 슬랙의 API를 사용하여 수행할 수 있습니다. 이를 위해 conversations.replies API를 활용합니다. 이 API는 채널 ID와 스레드의 시작 메시지 타임스탬프(커서 위치)를 필요로 합니다.

 

아래는 Python을 사용하여 슬랙 스레드 내용을 수집하는 방법을 단계별로 설명하고, 필요한 코드를 포함한 예시입니다. requests 라이브러리를 사용하여 슬랙 API에 요청을 보내고 스레드 내용을 수집합니다. 이를 실행하기 전에, requests 라이브러리가 설치되어 있어야 합니다. 설치가 필요한 경우, pip install requests를 통해 설치할 수 있습니다.

import requests

def fetch_slack_thread(channel_id, thread_ts, token):
    url = 'https://slack.com/api/conversations.replies'
    headers = {
        'Authorization': f'Bearer {token}',
        'Content-Type': 'application/json'
    }
    params = {
        'channel': channel_id,
        'ts': thread_ts
    }
    response = requests.get(url, headers=headers, params=params)
    if response.status_code == 200:
        data = response.json()
        if data['ok']:
            return data['messages']
        else:
            raise Exception(f"Error from Slack API: {data['error']}")
    else:
        response.raise_for_status()

# 사용 예시
channel_id = 'YOUR_CHANNEL_ID'  # 채널 ID
thread_ts = 'YOUR_THREAD_TS'    # 스레드 시작 메시지의 타임스탬프
token = 'YOUR_SLACK_TOKEN'      # OAuth Access Token

try:
    thread_messages = fetch_slack_thread(channel_id, thread_ts, token)
    for message in thread_messages:
        print(message['text'])  # 스레드 내 메시지 텍스트 출력
except Exception as e:
    print(e)
  • fetch_slack_thread 함수는 슬랙 채널 ID와 스레드 타임스탬프, 그리고 OAuth 토큰을 입력으로 받습니다.
  • requests.get을 사용하여 conversations.replies 엔드포인트에 HTTP GET 요청을 보냅니다. 요청에는 Authorization 헤더와 함께 channelts 파라미터가 포함됩니다.
  • 응답이 성공적이면 (response.status_code == 200), 응답 JSON에서 메시지 리스트를 반환합니다.
  • 오류 처리를 위해 Slack API의 오류 메시지 또는 HTTP 오류를 적절히 처리합니다.

 

이 코드는 주어진 스레드 ID에 해당하는 모든 메시지를 수집하여 출력하는 기본적인 예시입니다. 실제 응용 프로그램에서는 추가적인 로직을 구현하여 수집된 데이터를 처리하거나 저장할 수 있습니다.

 

n8n에서 슬랙의 스레드 키값(타임스탬프)를 사용하여 특정 스레드의 모든 메시지를 수집하는 워크플로우를 설정하는 과정은 다음과 같습니다. n8n은 비주얼 프로그래밍을 통해 API 호출 및 데이터 처리 작업을 쉽게 할 수 있도록 도와줍니다. 여기서는 슬랙 API를 사용하여 스레드 내 메시지를 가져오는 방법을 설명하겠습니다.

1. 슬랙 앱 설정 및 토큰 확보

  • 먼저 슬랙 웹사이트에서 앱을 생성하고, 필요한 권한(channels:history, groups:history, im:history, mpim:history)을 설정합니다.
  • 슬랙 앱을 워크스페이스에 설치하고, 생성된 OAuth Access Token을 얻습니다.

2. n8n 워크플로우 설정

Step 1: Webhook 노드 설정

  • n8n 워크플로우를 트리거하기 위해 Webhook 노드를 설정합니다. 이 Webhook은 외부에서 슬랙 채널 ID와 스레드 타임스탬프를 입력으로 받을 때 사용됩니다.

Step 2: HTTP Request 노드로 슬랙 API 호출

  • Slack API를 호출하여 스레드 내 메시지를 가져오기 위해 HTTP Request 노드를 설정합니다.
    • URL: https://slack.com/api/conversations.replies
    • Method: GET
    • Headers:
      • Authorization: Bearer {{Your_Slack_OAuth_Token}}
      • Content-Type: application/json
    • Query Parameters:
      • channel: {{$json["channel_id"]}} (Webhook 노드에서 받은 채널 ID)
      • ts: {{$json["thread_ts"]}} (Webhook 노드에서 받은 스레드 타임스탬프)

Step 3: 데이터 처리 및 출력

  • 슬랙 API의 응답을 받은 후, Function 노드를 사용하여 데이터를 파싱하고 필요한 정보만 추출할 수 있습니다.
  • 추출한 데이터를 원하는 방식으로 처리하거나 저장할 수 있습니다. 예를 들어, 다른 API에 전송하거나 데이터베이스에 저장할 수 있습니다.

3. 워크플로우 실행 및 테스트

  • Webhook URL을 통해 적절한 channel_idthread_ts 값을 전송하여 워크플로우를 트리거합니다.
  • n8n 워크플로우 에디터에서 실행 결과를 확인하여 슬랙 스레드의 메시지들이 올바르게 수집되었는지 검토합니다.

예시 n8n 워크플로우 JSON 구성

{
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "get-slack-thread",
        "responseMode": "onReceived",
        "options": {}
      },
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [250, 300]
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "requestMethod": "GET",
        "url": "https://slack.com/api/conversations.replies",
        "options": {},
        "headerParametersUi": {
          "parameter": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_SLACK_OAUTH_TOKEN"
            }
          ]
        },
        "queryParametersUi": {
          "parameter": [
            {
              "name": "channel",
              "value": "={{$node[\"Webhook\"].json[\"channel_id\"]}}"
            },
            {
              "name": "ts",
              "value": "={{$node[\"Webhook\"].json[\"thread_ts\"]}}"
            }
          ]
        }
      },
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [500, 300]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        {
          "node": "HTTP Request",
          "type": "main",
          "index": 0
        }
      ]
    }
  }
}

이 워크플로우를 통해 n8n에서 슬랙 스레드의 메시지를 수집하고 관리하는 방법을 구현할 수 있습니다. 이 워크플로우는 슬랙 스레드의 키값을 입력받아 관련 메시지를 수집하는 기본적인 예제로 활용할 수 있습니다.

728x90

댓글