[Slack] Python Slack SDK 기본 코드 테스트




Python Slack SDK을 이용한 Slack API 테스트 내용을 정리합니다.


API 종류

FeatureWhat its forPackage
Web API 200개 이상의 방법을 사용하여 Slack으로 데이터를 보내거나 Slack에서 데이터를 쿼리합니다. slack_sdk.web
slack_sdk.web.async_client
Webhooks / response_url 수신 Webhook 또는 response_url을 사용하여 메시지 보내기 slack_sdk.webhook
slack_sdk.webhook.async_client
Socket Mode 소켓 모드 연결을 통해 메시지를 주고 받습니다. slack_sdk.socket_mode
OAuth V2 OAuth, OpenID Connect for Slack 앱을 사용하여 인증 흐름을 설정합니다. slack_sdk.oauth
Audit Logs API 감사 로그 API 데이터를 수신합니다. slack_sdk.audit_logs
SCIM API 사용자 계정 및 그룹을 프로비저닝하고 관리하기 위해 SCIM API를 활용합니다. slack_sdk.scim
RTM API
WebSocket을 사용하여 들어오는 메시지와 Slack에서 발생하는 제한된 이벤트 집합을 수신합니다.
slack_sdk.rtm_v2
Request Signature Verification
Slack API 서버에서 들어오는 요청을 확인합니다.
slack_sdk.signature
UI Builders 사용하기 쉬운 빌더를 사용하여 UI 구성요소를 구성합니다. slack_sdk.models

테스트 내용

  • 앱 만들기
  • 토큰 및 앱 설치
  • 코드 테스트

앱 만들기

App 생성을 위해서 Slack API 사이트 접속 합니다.

Create an App 을 클릭 합니다.

From Scratch를 선택 합니다.

App 이름과 workspace를 선택하고 App을 생성 합니다.

제일 하단의 Bots를 클릭 합니다.


토큰 및 앱 설치

권한 설정 및 토큰 생성

Python Slack SDK 사용을 위해서는 SLACK_BOT_TOKEN 이 필요합니다.

SLACK_BOT_TOKEN 은 xpxb- 로 시작하는 토큰 입니다.

Review Scopes to Add 를 선택 합니다.

왼쪽 메뉴중 OAtu & Permissions 에서도 권한 설정 및 앱 설치가 가능합니다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 image-6.png 입니다.

Bot Token Scopes를 설정 합니다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 image-7.png 입니다.

필요한 권한을 추가 합니다.

Web API 별 필요한 권한은 아래 사이트에서 확인이 가능합니다.

https://api.slack.com/methods

앱 설치

권한 설정이 완료되면 앱 설치 버튼이 활성화가 됩니다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 image-8.png 입니다.

Install to Workspace를 선택 합니다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 image-9.png 입니다.
이미지에 대체텍스트 속성이 없습니다; 파일명은 image-10-1024x723.png 입니다.

xoxb- 로 시작하는 토큰은 API 사용 시, 필요합니다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 image-11.png 입니다.

앱이 Workspace에 설치 됩니다.

Bot 을 마우스 오른쪽 버튼 클릭하여 ‘앱 세부정보 보기’를 선택 합니다.

그리고 채널에 App을 추가 합니다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 image-12.png 입니다.
이미지에 대체텍스트 속성이 없습니다; 파일명은 image-13.png 입니다.
이미지에 대체텍스트 속성이 없습니다; 파일명은 image-14.png 입니다.

코드 테스트

설치

pip install slack_sdk

코드

from slack_sdk import WebClient

class SlackBolt_API:
    def __init__(self):
        token = "SLACK_BOT_TOKEN"
        self.client = WebClient(token)
        
    def get_channel_id(self, channel_name):
        result = self.client.conversations_list()
        channels = result.data['channels']
        channel = list(filter(lambda c: c["name"] == channel_name, channels))[0]
        channel_id = channel["id"]

        return channel_id

    def post_message(self, channel_id, text):
        result = self.client.chat_postMessage(
            channel=channel_id,
            text = text,
        )
        return result


api_con = SlackBolt_API()
print(api_con.get_channel_id('main'))
api_con.post_message('C04ENAX5DK2', 'Bot Test!!')

실행 결과

// 채널ID
C04ENAX5DK2



Leave a Comment