전체 소스
샘플 소스는 아래 링크에 올려놓았으니 샘플 이용해서 구축하면 된다.
Slack Bot 생성
1. api.slack 접속
Step1: https://api.slack.com/ 에 접속
Step2: “Your apps”을 클릭
2. APP 생성
Step1: "Create New APP" 을 클릭
Step2: From scratch을 선택
Step3: "APP Name" 을 설정하고 "workspace"를 <workspace>를 선택
3. Bot 생성
Bot은 APP의 하위 단계의 유닛으로 생각하면 된다.
즉, Bot은 App의 일부분으로, App이 Bot을 포함하고 있습니다.
App은 더 많은 기능을 제공하기 위해 Bot을 사용할 수 있으며, Bot은 App에서 사용되는 작은 기능을 담당할 수 있습니다.
예를 들어, App은 파일 공유, 프로젝트 관리, 팀 업무 관리 등의 기능을 제공할 수 있고, Bot은 메시지 자동응답, 일정 확인, 알림 전송 등의 작은 기능을 처리할 수 있습니다.
Step1: 메뉴에서 "APP Home" 을 클릭하고 아래 보이는 "Edit" 버튼을 클릭
Step2: "Display Name" 과 "Default username" 을 설정
Step3: "Message Tab"을 활성화하고 체크 박스를 클릭
앱에서 사용자와 직접 대화할 수 있도록 설정하는 기능이다.
4. Scope 권한 설정
Step1: "OAuth & Permissions" 메뉴를 클릭
Step2: 아래와 같이 Scope 권한을 추가
5. App-Level 토큰 생성
Socket 통신을 하기 위하여 App-Level 토큰을 생성해야한다.
Step1: "Basic Information" 메뉴를 클릭
Step2: "Generate Token and Scope" 를 클릭
Step3: 아래와 같이 Scope 권한을 추가하여주고 "Generate" 를 클릭
6. Socket Mode 켜기
양방향 통신을 하기 위하여 Socke Mode을 활성화 해야한다.
Step1: "Socket Mode" 메뉴를 클릭
7. Event 설정
Step1: "Event Subscriptions" 메뉴를 클릭
Step2: "Enable Events" 활성화
Step3: 아래와 같이 Event을 추가
8. APP 승인 요청
자 이제 설정이 다 완료되었다. 이제 해당 workspace에 앱을 설치하기 위하여 관리자에게 승인을 받아야 한다.
Step1: "Basic Information" 메뉴를 클릭
Step2: "Request to install" 버튼을 클릭
9. APP 설치
앱 승인이 완료되었으면 해당 workspace에 설치해야한다.
Step1: "Basic Information" 메뉴를 클릭
Step2: "Install to Workspace" 버튼을 클릭
Python 코드
1. 토큰 준비
3가지 토큰이 필요하다. SLACK_SIGNING_SECRET, SLACK_BOT_TOKEN, SLACK_APP_TOKEN
SLACK_SIGNING_SECRET
메뉴 "Basic Information" > App Credentials > Sigining Secret
SLACK_BOT_TOKEN
메뉴 "Basic Information" > APP Level Tokens > Tokens
SLACK_APP_TOKEN
메뉴 "Basic Information" > OAuth & Permissions > OAuth Tokens for Your Workspace
2. 패키지 설치
$ pip install slack_bolt
3. 예제 소스
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
# 토큰 설정
SLACK_SIGNING_SECRET = "<YOUR_SLACK_SIGNING_SECRET>"
SLACK_BOT_TOKEN = "<YOUR_SLACK_BOT_TOKEN>"
SLACK_APP_TOKEN = "<YOUR_SLACK_APP_TOKEN>"
app = App(
token=SLACK_BOT_TOKEN,
signing_secret=SLACK_SIGNING_SECRET
)
# 각종 이벤트를 annotation 안에 설정하면 된다.
@app.event("message")
@app.event("app_mention")
def message_handler(message, say):
say(f"Hello <@{message['user']}>")
if __name__ == "__main__":
# ※ 주의 : APP 토큰이다.
SocketModeHandler(app, SLACK_APP_TOKEN).start()
Slack Bot 실행
Slack Bot에게 mention이 날리던 채널창에 초대를 하건 대화를 해보자.
다음처럼 대답이 잘 오는 것을 확인할 수 있다.