Slack은 팀이 소통하고 협업할 수 있는 도구입니다. 주요 기능 중 하나는 슬래시 명령어 사용입니다. 이러한 명령은 플랫폼 내에서 특정 작업 또는 통합을 트리거합니다.

Slack은 몇 가지 기본 제공 슬래시 명령을 제공하지만, Slack의 API를 사용하여 사용자 지정 명령을 만들 수 있습니다. 그런 다음 사용자가 사용자 지정 명령을 트리거할 때 특정 작업을 수행하도록 사용자 지정 명령을 구성할 수 있습니다.

Slack에서 사용자 지정 슬래시 명령을 만드는 이유는 무엇인가요?

Slack의 기본 제공 슬래시 명령은 팀이나 조직의 특정 요구 사항을 충족하지 못할 수 있습니다. 사용자 지정 슬래시 명령을 만들면 팀을 위해 보다 개인화된 환경을 만들 수 있습니다. 이를 통해 팀의 참여도를 높일 수 있습니다.

Slack 앱 설정하기

다음 단계를 수행하려면 Slack의 기본 사용법에 익숙해야 합니다. 브라우저에서 Slack 계정에 로그인하고 새 워크스페이스를 만듭니다. 팀의 워크스페이스에서 앱을 사용하기 전에 이 워크스페이스를 사용하여 앱을 테스트할 수 있습니다.

다른 탭을 열고 Slack API 웹사이트로 이동합니다 .

앱 만들기 버튼을 클릭합니다. 다음 페이지가 표시되면 앱을 처음부터 만드는 옵션을 선택합니다.

앱의 이름을 지정하고 앱이 작동할 작업 공간을 선택합니다.

앱 만들기 버튼을 클릭합니다. 그러면 앱에 대한 기본 정보가 포함된 페이지로 리디렉션됩니다.

기능 섹션에서 OAuth 및 권한 기능으로 이동한 다음 아래로 스크롤하여 봇 토큰 범위로 이동합니다. 앱에 채팅:쓰기 범위를 추가합니다. 이 범위는 앱이 워크스페이스로 메시지를 보낼 수 있도록 허용합니다.

워크스페이스용 OAuth 토큰 섹션까지 스크롤한 다음 워크스페이스에 설치 버튼을 클릭합니다.

다음 페이지가 나타나면 허용 버튼을 클릭합니다. 그러면 워크스페이스에 앱이 설치됩니다.

Slack API를 사용하여 사용자 지정 슬래시 명령 만들기

Slack 앱을 설정한 후에는 수행하고자 하는 작업에 대한 사용자 지정 명령을 만들어야 합니다. 예를 들어 사용자에게 농담을 반환하는 슬래시 명령이 있습니다. 슬래시 명령 기능으로 이동합니다. 새 명령 만들기 버튼을 클릭합니다.

이 글도 확인해 보세요:  Reqwest로 Rust에서 HTTP 요청 만들기

만들려는 명령에 대한 명령, 요청 URL 및 간단한 설명을 입력합니다. 요청 URL은 사용자가 명령을 트리거할 때 Slack이 POST 요청을 보내는 엔드포인트입니다. 로컬 호스트 URL을 자리 표시자로 사용하며 나중에 이 URL을 전환할 수 있습니다.

저장을 클릭합니다. 저장하면 Slack에서 앱에 대한 명령 범위를 자동으로 추가합니다. 이 범위를 사용하면 앱에서 작업 공간에 있는 사람들이 사용할 수 있는 바로 가기 및 슬래시 명령을 추가할 수 있습니다. 범위를 변경하려면 앱을 다시 설치해야 합니다. 앱 재설치 버튼을 클릭하세요.

다음에 표시되는 페이지에서 작업 공간에 앱 재설치 허용을 클릭합니다.

슬래시 명령의 동작 구성하기

Python IDE를 실행합니다. 새 가상 환경을 만듭니다. 새 Python 파일과 새 .env 파일을 만듭니다. 터미널에서 다음 명령을 실행하여 필요한 라이브러리를 설치합니다.

 pip install python-dotenv requests Flask slack-bolt 

python-dotenv 라이브러리를 사용하면 .env 파일에 있는 환경 변수를 로드할 수 있습니다. 요청 라이브러리를 사용하면 HTTP 요청을 할 수 있고 Flask는 들어오는 HTTP 요청을 처리하고 응답을 반환합니다. Slack-bolt는 들어오는 Slack 요청을 처리합니다.

.env 파일을 열고 두 개의 환경 변수를 생성합니다. 각각 BOT_TOKEN과 SIGNING_SECRET으로 이름을 지정합니다. Slack API 웹사이트로 이동합니다. 앱의 기본 정보에서 서명 비밀을 복사하고 이를 사용하여 BOT_TOKEN 변수를 초기화합니다. OAuth & 권한 기능으로 이동하여 봇 사용자 OAuth 토큰을 복사합니다. 이 토큰을 사용하여 서명 비밀 변수를 초기화합니다.

봇 토큰은 API를 호출할 때 Slack의 API로 앱을 인증하는 고유 식별자입니다. 서명 비밀은 앱으로 들어오는 요청이 Slack에서 온 것임을 확인합니다.

전체 소스 코드는 GitHub 리포지토리에서 사용할 수 있습니다.

필요한 라이브러리 및 모듈을 가져옵니다.

 import os
from pathlib import Path
from dotenv import load_dotenv
import requests
from flask import Flask, request, jsonify
from slack_bolt import App
from slack_bolt.adapter.flask import SlackRequestHandler

Flask 애플리케이션의 새 인스턴스를 만듭니다.

 app = Flask(__name__) 

load_dotenv() 함수를 사용하여 .env 파일에서 환경 변수를 로드합니다.

 env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)

slack_bolt 라이브러리에서 App 클래스를 사용하여 Slack 앱의 새 인스턴스를 만듭니다.

 slack_app = App(
    token=os.environ['BOT_TOKEN'],
    signing_secret=os.environ['SIGNING_SECRET']
)

/slack/command 엔드포인트로 들어오는 요청을 처리하는 라우트 핸들러 함수를 만듭니다. 엔드포인트가 POST 요청을 받으면 요청 본문 데이터를 파싱합니다. 그런 다음 명령이 /joke인지 확인합니다. 그렇다면 get_joke() 함수를 호출하고 명령의 결과가 포함된 JSON 응답을 Slack에 반환합니다.

 @app.route("/slack/command", methods=["POST"])
def command():
    # Parse request body data
    data = request.form

    # Call the appropriate function based on the slash command
    if data["command"] == "/joke":
        message = get_joke()
    else:
        message = f"Invalid command: {data['command']}"

    # Return response to Slack
    return jsonify({"text": message})

임의의 농담을 JSON 형식으로 검색하기 위해 icanhazdadjoke API에 GET 요청을 전송하는 함수를 만듭니다. 그런 다음 농담을 문자열로 반환합니다.

 def get_joke():
    url = "https://icanhazdadjoke.com/"
    headers = {"Accept": "application/json"}
    response = requests.get(url, headers=headers, timeout=5)
    joke = response.json()["joke"]
    return joke

Slack에서 들어오는 요청을 처리할 SlackRequestHandler 객체의 새 인스턴스를 만듭니다.

 handler = SlackRequestHandler(slack_app) 

스크립트가 직접 실행되고 있는지 확인하고, 실행 중이라면 포트 5000에서 Flask 애플리케이션을 시작합니다.

 if __name__ == "__main__":
    # Start the Flask app on port 5000
    app.run(port=5000, debug=True)

프로그램을 실행하여 로컬 호스트에서 실행 중인 서버를 시작합니다.

이 글도 확인해 보세요:  자바스크립트에서 Intl API를 사용하는 방법

프로그램이 Slack과 통신하려면 인터넷을 통해 액세스할 수 있는 URL이 필요합니다. ngrok 을 다운로드하여 실행합니다. ngrok 소프트웨어를 사용하면 컴퓨터에서 실행 중인 웹 서버로 트래픽을 터널링하는 안전한 공용 URL을 만들 수 있습니다.

다음 명령을 실행하여 공개 URL을 가져옵니다:

 ngrok http 5000 

아래 이미지는 흰색으로 강조 표시된 ngrok의 공개 URL을 보여줍니다.

URL을 복사하고 Slack API 웹사이트로 이동합니다. 슬래시 명령 기능을 클릭합니다. joke 명령을 편집하고 요청 URL 자리 표시자를 공개 URL로 바꿉니다. URL 끝에 엔드포인트를 가리키도록 /slack/events를 추가합니다.

워크스페이스로 이동한 다음 /joke 명령을 입력하여 보냅니다. 응답으로 농담이 표시되어야 합니다:

다른 Slack 기능 숙지하기

Slack에는 슬래시 명령 외에도 많은 기능이 있습니다. 이러한 기능에 익숙해지면 작동 방식을 이해할 수 있습니다.

그런 다음 워크스페이스의 요구 사항에 맞게 사용자 지정할 수 있는 방법을 찾을 수 있습니다. 이렇게 하면 팀의 생산성이 향상됩니다.

By 최은지

윈도우(Windows)와 웹 서비스에 대한 전문 지식을 갖춘 노련한 UX 디자이너인 최은지님은 효율적이고 매력적인 디지털 경험을 개발하는 데 탁월한 능력을 발휘합니다. 사용자의 입장에서 생각하며 누구나 쉽게 접근하고 즐길 수 있는 콘텐츠를 개발하는 데 주력하고 있습니다. 사용자 경험을 향상시키기 위해 연구를 거듭하는 은지님은 All Things N 팀의 핵심 구성원으로 활약하고 있습니다.