Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

사고쳤어요

Slack 봇 만들기 - ① 봇 워크스페이스에 추가하기 본문

기타

Slack 봇 만들기 - ① 봇 워크스페이스에 추가하기

kevinmj12 2025. 4. 22. 18:02

업무의 자동성, 효율성을 위해 슬랙 봇을 개발해보자.

Slack 사전 설정

먼저 슬랙 봇을 만들 채널을 하나 생성해준다.

 

https://api.slack.com/

 

AI 업무 관리 및 생산성 도구

업무가 이루어지는 새로운 세상, Slack 전 세계에서 가장 사랑받는 업무용 운영 체제에 인력, 프로젝트, 도구, AI를 한데 모아보세요

slack.com

다음으로 채널에 권한을 설정해줄 것이다.

위 링크에 들어간 뒤 우측 상단의 Your apps를 클릭한다.

 

앱 이름과 채널을 입력한 후 Create App을 누른다.

 

Create App을 누른 뒤 나오는 페이지에서 OAuth&Permissions를 클릭한다.

이곳에서 슬랙 봇에게 권한을 부여할 것인데, 화면을 아래로 스크롤하여 Scopes에서 "Add on OAuth Scope"를 누른다.

 

chat:write와 channels:read 권한을 검색하여 부여해준다.

이제 슬랙 봇은 워크스페이스에 글을 쓰고 채널을 읽을 수 있게 되었다.

 

이어서 슬래쉬 명령어를 추가해보자.

좌측 메뉴에서 Slash Commands - Create New Command를 클릭한다.

 

원하는 명령어와 설명을 간략히 입력해준다.

 

slack api의 좌측 메뉴에서 Socket mode - Connect using Socket mode - Enable Socket Mode를 클릭한다.

 

토큰을 발급받고 Socket Mode를 활성화한다.

좌측 메뉴의 Event Subscriptions - Enable Events를 활성화한다.

 

Subscribe to bot events - Add Bot User Event를 클릭한 뒤 chat:write:bot을 추가한다.

 

모든 사전 설정이 완료되었다.

상단의 메뉴 바에서 Install App에 들어간 뒤 Install to Minje(워크스페이스 이름)을 누른다.

 

다시 슬랙 워크스페이스로 돌아와 앱-관리-앱 찾아보기를 누른다.

방금 추가한 Sutdy Bot이 추가된 것을 확인할 수 있다!

 

Node.js 코드

코드 작성에 앞서, 슬랙 봇을 사용하기 위해선 SLACK_SIGNING_SECRET / SLACK_BOT_TOKEN / SLACK_APP_TOKEN이 필요하다.

따라서 위 3가지 토큰들을 복사하여 .env파일에 넣어줄 것이다.

 

1. SLACK_SIGNING_SECRET

Basic Information - Signing Secret - Show를 통해 확인 가능하다.

 

2. SLACK_BOT_TOKEN

OAuth & Permissions - Bot User OAuth Token에서 확인 가능하다.



3. SLACK_APP_TOKEN

Basic Information - App-Levels Tokens - test token(토큰명) 클릭으로 확인 가능하다.

 

dotenv, @slack/bolt를 설치하고 다음과 같이 코드를 작성하여 실행해준다.

require("dotenv").config();
const { App } = require("@slack/bolt");

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  socketMode: true,
  appToken: process.env.SLACK_APP_TOKEN,
  port: process.env.PORT || 3000,
});

app.command("/안녕", async ({ ack, say }) => {
  await ack();
  await say("안녕하세요!");
});

(async () => {
  await app.start();
  console.log("⚡️ Slack 봇이 실행 중입니다!");
})();

 

이제 명령어로 만들었던 /안녕을 입력하면?

 

명령어가 성공적으로 처리되는 것을 확인할 수 있다.