Python 으로 파이썬 슬랙 봇 만들기 (Slack bot)

슬랙 (Slack) 은 국내외 많은 IT 기업이 사내 협업용 메신저로 사용하고 있는 클라우드 기반의 팀 협업용 툴 입니다. 슬랙은 다양한 기능을 지원하고 있어, 업무 효율을 높일 수 있다는 장점이 있습니다.

이번 글에서는 파이썬 (Python) 으로 파이썬 슬랙 봇 만들기 방법에 대해 소개하도록 하겠습니다.


슬랙 봇 (Slack Bot) 이란?

슬랙 봇 (Slack Bot) 은 슬랙 메신저 플랫폼에서 사용되는 자동화 도구입니다. 슬랙 봇은 워크 스페이스 내 채널 혹은 다이렉트 메시지 (DM) 에서 자동화된 작업 (스크립트) 을 수행해, 일상적인 작업을 자동화하고, 팀 간 협업을 강화하는 데 도움을 줄 수 있습니다.
*봇 (Bot) 의 정의는 자동화된 작업 (스크립트) 를 실행하는 응용 소프트웨어 입니다.

슬랙 봇 역할

슬랙에서 제공하는 슬랙 봇 역할은 다음과 같습니다.

  • 채널 및 다이렉트 메시지 (DM) 에서 일정에 대한 리마인더를 전달합니다. (/remind 를 통해 설정할 수 있습니다.)
  • 채널에 없는 누군가를 @slack_id 로 멘션하면 해당 사람에게 알림을 전달합니다.
  • 특정 채널이 보관되면 이를 채널 멤버에게 알립니다.
  • 워크스페이스에 있는 사람들에게 자동 응답을 보냅니다.

우리는 슬랙에서 제공하는 봇 이외에도 원하는 기능을 수행하는 커스텀 슬랙 봇을 만들 수 있습니다.

 

커스텀 슬랙 봇 적용 예시

슬랙에서 기본적으로 제공하는 기능 이외에도 다음과 같은 slack bot 만들기 예시가 있습니다.

  1. 근태 관리 봇: 팀원들의 출퇴근, 휴가 등의 근태 일정 알림을 보내고, 관리할 수 있습니다.
  2. 설문조사 봇: 슬랙 봇을 통해 설문조사를 진행하고 결과를 취합할 수 있습니다.
  3. 알림 봇: 시스템 또는 외부 서비스의 이벤트를 감지하여, 해당 이벤트에 대한 알림을 슬랙에 전달할 수 있습니다.

위와 같이 사용자의 특정 요구에 맞게 커스텀 슬랙 봇을 개발하려면, 슬랙 앱을 생성하고 슬랙 API를 사용한 스크립트를 작성해야 합니다.


커스텀 슬랙 봇 만들기

슬랙 봇을 만드는 방법은 다음과 같습니다.

1. Slack App 생성 및 설치

슬랙 봇 만들기 위해서는 슬랙 앱 (Slack App) 을 만드는 작업이 선행되어야 합니다.

Step 1: Slack api 홈페이지에서 “Create New App” 을 클릭합니다.(https://api.slack.com/apps)

슬랙 앱 만들기

 

Step 2: “From scratch”을 선택합니다.

슬랙 앱 만들기 옵션 선택


*만약, app manifest 파일이 있다면, “From an app manifest” 를 선택합니다.

Step 3:  “App Name” 을 설정하고 “workspace” 를 선택한 뒤 “Create App” 를 클릭합니다.

슬랙 앱 이름, 워크스페이스 입력

 

2. App 권한 설정 및 토큰 발급

슬랙 앱 (Slack App) 은 Slack API 를 호출해서 슬랙 봇 (Slack Bot) 을 통해 메세지를 보내기 때문에 토큰이 필요합니다. 이 때, 발급받을 토큰의 권한 설정을 우선적으로 해주고, 토큰을 발급 받아야 합니다.

Step 1:  좌측의 카테고리 메뉴에서 “OAuth & Permissions” 를 클릭합니다.

slack bot scope

 

Step 2: 스크롤을 내려 Scopes 를 설정하는 곳을 찾습니다.

slack bot scope


아직 권한 (Scope) 설정이 마무리되지 않아, “Install to Workspace” 버튼이 비활성화되어 있습니다.

슬랙 앱을 추가하기 위해서는 권한부터 설정이 선행되어야 합니다. 이를 위해서 스크롤을 내리 Scopes 설정하는 곳을 찾으면 됩니다.

Step 3:Add an OAuth Scope” 버튼을 클릭한 뒤, 메소드를 이용하기 위해 필요한 권한 (Scope) 을 등록합니다.

add slack bot scope


메시지를 전송하는 슬랙 봇 (Slack bot) 을 만들 예정이라면, chat.postMessage 의 권한은 필수로 추가해야 합니다.

추가로 필요한 메소드와 권한을 확인하고 싶다면 Web API methods 홈페이지를 참고하는 것을 추천합니다.

Step 4: 필요한 권한을 추가했다면, 스크롤을 올려 “Install to Workspace” 버튼을 클릭합니다.

슬랙 봇 추가하기


권한 설정을 마쳤다면, 워크스페이스에 추가하는 버튼을 클릭합니다.

Step 5: Slack에 생성한 App 을 추가할 채널을 선택한 뒤, “허용” 버튼을 클릭합니다.

oauth-app

 

Step 6: “Bot User-OAuth Token” 문자열을 복사합니다.

슬랙 앱 oauth


토큰 (Token) 문자열을 복사합니다. 4단계에서 파이썬 (Python) 으로 Slack API 를 호출할 때, 이 토큰 정보가 필요합니다.

단, 이 토큰이 github 이나 블로그와 같은 인터넷에 공개되면, 해당 토큰은 보안을 위해서 영구적으로 비활성화 됩니다. github 이나 블로그에 코드를 아카이빙한다면, 이를 주의하시기를 바랍니다.

3. Slack App 을 채널에 추가하기

Step 1: 왼쪽 사이드 메뉴를 내려서 방금 추가한 앱을 선택합니다.

Slack App 추가하기
(만약 앱 목록에 방금 추가한 앱이 보이지 않는다면, “[+] 앱 추가” 버튼을 클릭한 뒤, 앱 목록에서 추가했던 앱을 선택합니다.)


Step 1-1:
“[+] 앱 추가” 버튼을 클릭합니다.

Step 1-2: 앱 목록에서 추가했던 앱을 선택합니다.


Step 2:
상단의 앱 이름을 클릭해, 앱 설정 창을 띄웁니다.

 

Step 3: “이 앱을 채널에 추가” 버튼을 클릭합니다.

 

Step 4: 원하는 채널을 선택한 뒤, “추가” 버튼을 클릭합니다.

슬랙 앱 추가하기

 

Step 5: 원하는 채널에 정상적으로 추가 되었는지 확인합니다.

Slack App 추가하기

 

Python 파이썬으로 Slack API 호출하기

봇은 기본적으로 스크립트를 실행하는 응용 소프트웨어이기 때문에, 슬랙 봇 만들기 위해서는 스크립트를 작성해야 합니다. 이번 글은 파이썬 (Python) 을 기반으로 스크립트를 작성했습니다.

Step 1: pip 를 이용하여 Slack Python SDK를 설치합니다.

pip install slack_sdk

 

Step 2: 메세지를 보낼 채널 id (channel id) 를 복사합니다.

채널 id (channel id) 확인하는 방법

Step 2-1: 원하는 채널을 선택한 뒤, 상단의 채널명을 선택합니다.

슬랙 채널 아이디 찾기

Step 2-2: 상세 정보 창의 최하단에 위치한 채널 id 를 확인합니다.

슬랙 채널 아이디 찾는 방법

 

Step 3: 파이썬 스크립트를 작성합니다.

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
 
# 토큰 설정
SLACK_SIGNING_SECRET = "<YOUR_SLACK_SIGNING_SECRET>"
SLACK_BOT_TOKEN = "<YOUR_SLACK_BOT_TOKEN>"
SLACK_APP_TOKEN = "<YOUR_SLACK_APP_TOKEN>"
CHANNEL_ID = "<YOUR_CHANNEL_ID>"
 
try:
  { 
  # 수행할 비즈니스 로직 입력
  ~~~~~~~~
  ~~~~~~~~
  ~~~~~~~~
  
  # chat.postMessage 메소드를 통해 메시지를 모냅니다. (WebClient를 사용합니다)
  message = client.chat_postMessage(
    channel=channel_id,
    text="Hello Slack" # 메시지 내용
  )
 
except SlackApiError as e:
  print(f"Error posting message: {e}")


위 코드를 수행하여 “Hello Slack” 라는 메세지를 채널로 보낼 수 있습니다.


마치며

슬랙 봇 (Slack Bot) 은 일상적인 작업을 자동화하여 업무 효율성을 높이고, 팀 간 협업을 강화하는 데 도움을 줄 수 있는 강력한 도구입니다. 이번 글의 파이썬 슬랙 봇 만들기 방법을 활용하여 슬랙 봇을 만드시기를 바랍니다.

다음에는 슬랙 봇을 활용하여, 업무 수행을 자동화한 예시를 소개해보도록 하겠습니다.

 

 

함께 읽으면 좋은 글

 

Reference

Leave a Comment