슬래시 명령어 생성
1) Slack API 사이트에서 Slash Commands - Create New Command를 클릭합니다.
2) 만들고 싶은 명령어의 이름, 요청 URL 및 간단한 설명을 입력합니다.
여기서 요청 URL은 사용자가 명령을 트리거할 때 Slack이 POST 요청을 보내는 엔드포인트입니다.
3) 모든 입력이 끝나고 저장을 클릭하면 슬래시 명령어가 추가됩니다.
해당 내용을 적용하기 위해 앱 재설치 버튼을 클릭합니다.
슬래시 명령어 동작 구성
1) 터미널에 다음 명령을 실행하여 필요한 라이브러리를 설치합니다.
pip install flask slack-bolt
2) slash_secrets.py 파일을 만들어 SIGNING_SECRET과 BOT_TOKEN을 각각 저장합니다.
3) 구현할 기능에 필요한 라이브러리 및 모듈을 가져옵니다.
from flask import Flask, request, jsonify
from slack_bolt import App
from slack_bolt.adapter.flask import SlackRequestHandler
from slash_secrets import SLACK_SIGNING_SECRET, SLACK_BOT_TOKEN
4) Flask 애플리케이션의 새 인스턴스를 만듭니다.
app = Flask(__name__)
5) slack_bolt 라이브러리의 App 클래스를 사용하여 Slack 앱의 새 인스턴스를 만듭니다.
slack_app = App(
token=SLACK_BOT_TOKEN,
signing_secret=SLACK_SIGNING_SECRET
)
6) Slack에서 들어오는 요청을 처리할 SlackRequestHandler 객체의 새 인스턴스를 만듭니다.
handler = SlackRequestHandler(slack_app)
7) /slack/commands 엔드포인트로 들어오는 요청을 처리하는 라우트 핸들러 함수를 만듭니다.
POST 요청을 받으면 요청 본문의 데이터를 파싱하여 명령어를 올바르게 사용하였는지 확인합니다.
올바르게 사용하였다면 인사가 담긴 JSON 응답을 Slack에 반환합니다.
@app.route('/slack/commands', methods=["POST"])
def command():
data = request.form
if data['command'] == "/hello":
message = f"안녕 <@{data['user_id']}>!"
else:
message = f"Invalid command: {data['command']}"
return jsonify({"text": message})
8) 스크립트가 직접 실행되고 있는지 확인합니다.
올바르게 실행 중이라면 포트 번호 5000에서 Flask 애플리케이션을 실행합니다.
if __name__ == "__main__":
app.run(port=5000, debug=True)
ngrok 사용하기
프로그램이 Slack과 통신하려면 인터넷을 통해 액세스할 수 있는 URL이 필요합니다.
ngrok를 사용하면 컴퓨터에서 실행 중인 웹 서버로 트래픽을 터널링하는 안전한 공개 URL을 만들 수 있습니다.
1) ngrok를 설치하고 다음 명령을 실행합니다.
ngrok http 5000
2) 아래 이미지처럼 화면이 표시되는데 Forwarding에 해당하는 ngrok의 공개 URL을 사용합니다.
3) 이전에 만들어 놓은 명령어를 편집하여 요청 URL 칸에 ngrok로부터 얻은 공개 URL을 입력합니다.
이때, 해당 URL 끝에 엔드포인트를 가리키도록 /slack/commands를 추가합니다.
4) 모든 과정을 마쳤다면, 다음과 같이 정상적으로 슬래시 명령어가 작동합니다.
'기타 > Slack Bot' 카테고리의 다른 글
[Slack Bot] Slack Bot 커스텀 명령어 만들기 (0) | 2023.09.24 |
---|---|
[Slack Bot] Slack Bot과 Google Sheets 연결하기 (0) | 2023.08.16 |
[Slack Bot] Slack Bot 구현하기 (0) | 2023.08.14 |