[Slack] Bolt for Python 기본 코드 테스트




Bolt for Python을 이용한 소켓 기반의 대화형 봇 생성 및 코드 테스트 내용을 정리합니다.


테스트 내용

  • 앱 만들기
  • 소켓 모드 설정
  • 토큰 및 앱 설치
  • 이벤트 설정
  • 코드 테스트


앱 만들기

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

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

Create an App 을 클릭 합니다.

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

From Scratch를 선택 합니다.

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

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

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

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


소켓 모드 설정

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

토큰 및 앱 설치

권한 설정 및 토큰 생성

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

  • SLACK_BOT_TOKEN : xpxb- 로 시작하는 토큰
  • SLACK_APP_TOKEN : xapp- 로 시작하는 토큰

Bot 토큰 생성

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

Review Scopes to Add 를 선택 합니다.

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

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

Bot Token Scopes를 설정 합니다.

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

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

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

https://api.slack.com/methods

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

앱 설치

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

이미지에 대체텍스트 속성이 없습니다; 파일명은 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 입니다.

App 토큰 생성

이미지에 대체텍스트 속성이 없습니다; 파일명은 image-15.png 입니다.
이미지에 대체텍스트 속성이 없습니다; 파일명은 image-16.png 입니다.
이미지에 대체텍스트 속성이 없습니다; 파일명은 image-17.png 입니다.
이미지에 대체텍스트 속성이 없습니다; 파일명은 image-18-1024x747.png 입니다.

이벤트 설정

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

save changes 후, 앱 재설치 필요


코드테스트

설치

pip install slack_bolt

코드

from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

SLACK_BOT_TOKEN = ""
SLACK_APP_TOKEN = ""

# Initializes your app with your bot token and socket mode handler
app = App(token=SLACK_BOT_TOKEN)

@app.message("hello")
def message_hello(message, say):
    say(f"Hey there <@{message['user']}>!")

# Start your app
if __name__ == "__main__":
    SocketModeHandler(app, SLACK_APP_TOKEN).start()

실행 결과

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



Leave a Comment