반응형

Python과 Slack API를 이용하면 슬랙의 특정 채널에 글을 올리거나 응답을 할 수 있는 Bot을 만들 수 있습니다.그러기 위해서는 먼저, Slack API 페이지에서 App을 생성하고, App 관련 권한 설정 작업을 진행합니다.

궁극적인 목표는 내가 원하는 응답을 할 수 있는 Bot을 만드는 것이지만 이번 포스트에서는 Slack App을 생성하고 Python으로 특정 채널에 메세지를 보내는 예제까지 설명하도록 하겠습니다.


Slack App 생성

1. Slack api 사이트로 이동하여 [Create an App] 버튼을 클릭합니다.

2. 활성화 된 팝업창에서 [From scratch]를 클릭합니다.

3. 앱 이름을 작성하고, 슬랙 작업 환경을 선택한 후에 [Create App]을 클릭합니다.

4. [Bots] 를 클릭합니다.

앱 관련 권한(Scope) 설정하기

1. [Review Scopes to Add]를 클릭합니다.

Install App to Workspace는 생성한 App을 Slack 작업 환경에 설치 하는 버튼입니다. 현재 버튼이 비활성화되어 있는데, 권한(Scope) 설정을 마친 후에 활성화됩니다.

2. 스크롤을 내리면 Scopes를 설정하는 부분이 나타납니다. Bot Token Scopes 부분에 있는 [Add an OAuth Scope] 버튼을 클릭하여 관련 권한을 설정하면 됩니다.

3. [Add an OAuth Scope] 버튼을 클릭하여 위 메소드들을 이용하기 위해 필요한 Scope들을 모두 등록합니다. 

아래 간단한 예제를 수행하기 위해 메시지를 등록하는 chat.postMessage 메소드를 등록 하겠습니다.

메소드명 기능 필요권한 (Scopes)
chat.postMessage 메시지 등록 chat:write

Slack API Methods 사이트에서 각 메소드의 필요권한을 확인할 수 있습니다.

4. Scopes 설정이 완료되면 [Install App to Workspace]를 클릭합니다.

5. Slack에 생성한 App을 게시합니다. 게시 할 채널을 선택하고 [허용]을 클릭합니다.

Token 문자열을 복사해둡니다. Python으로 Slack API 호출 시 해당 Token 정보가 필요합니다. (! Token이 인터넷에 공개적으로 게시되면 해당 Token은 보안을 위해 영구적으로 비활성화 됩니다. Github에 올리거나 하실 때 유의하시기 바랍니다.)

bot 앱을 채널에 추가하기

슬랙 워크스페이스의 좌측 앱에서 bot을 누르고 채널 상단의 bot을 클릭합니다. 팝업이 뜨면 ‘이 앱을 채널에 추가’를 눌러 원하는 채널을 선택하여 추가합니다.

정상적으로 추가되었습니다.

간단히 Python을 이용하여 Slack Channel로 메세지를 보내는 예제를 수행 해보록 하겠습니다.


Python으로 Slack API 호출하기

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

pip install slack_sdk

메세지를 보낼 channel의 id 확인합니다.

아래 코드를 수행하여 "Hello wolrd" 라는 메세지를 채널로 보내도록 하겠습니다.

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

# ID of the channel you want to send the message to
channel_id = "<< Channel ID >>"

try:
    # Call the chat.postMessage method using the WebClient
    result = client.chat_postMessage(
        channel=channel_id,
        text="Hello world"
    )

except SlackApiError as e:
    print(f"Error posting message: {e}")


다음에는 응답이 가능하게 구현하도록 하겠습니다. Slack App(Bot)과 통신할 수 있는 서버가 필요하기때문에 Flask와 ngrok을 이용 하도록 하겠습니다.

Python으로 Slack App(Bot) 만들기 (2) - 서버 구축 (ngrok, Flask)

반응형