Slack API (bolt)를 활용한 Bot 만들기

2023. 8. 28. 19:07· 자바스크립트/Node JS
목차
  1. 슬랙 API 를 이용하여, 슬랙 Bot 만들기
  2. 배경
  3. 요구사항
  4. Slack API 설정

슬랙 API 를 이용하여, 슬랙 Bot 만들기

배경

회사에서 슬랙봇을 만들어야하는 상황이 발생했다. 

요구사항은 간단하다.

구현해놓은 봇에게 특정 명령어를 입력하면 굳이 관리자페이지까지 접속할 필요없이 바로바로 즉각적으로 정보를 확인하는 기능만 있으면 됐다. 

실제로 구현하면서 특정 IP 대에서만 가능하게 처리를 진행하고 봇 내부에 데이터베이스도 붙이면서 다양한 작업을 진행했지만 아무래도 회사에서 쓰려고 만든거기 떄문에 해당 코드를 공개할 순 없으므로 간단한 말따라하는 봇을 만들어볼까한다.

이정도 예제라면 충분히 이후에도 응용하여 다양한 봇들을 생산하는데 큰 이슈는 없을것으로 보인다.

파이썬으로도 구현해봤지만, 라이브러리 안정성은 Node js 쪽이 더 좋은 것 같아, Node JS 용으로만 작성을 진행했다.

요구사항

  1. /따라해 {문자열} 이라고 입력하면 {문자열}을 그대로 출력해준다. 

 

Slack API 설정

  • https://api.slack.com/ 에 접속하여 Your Apps에서 [Create New App]를 눌러준다. 

오른쪽 상단 Your Apps, Create New App 클릭

  • From scratch 클릭

From scratch

 

  • App Name과 사용할 슬랙 workspace 를 지정해준다

 

  • Bots 클릭

Bots 클릭

  • Review Scopes to Add 클릭

 

  • 아래 살짝 내려가면 Scopes 추가 부분이 있다.
    Add an OAuth Scope 를 클릭하여 사진과 같이 im:history와 chat:write 정도만 추가해주자.

  • Socket Mode 를 활성화 해준다. 인트라넷과 같이 내부망 사용하는 경우에 사용하는거라고 적혀있던것 같다 .

 

  • Socket 모드를 활성화하면 토큰 이름을 적으라하는데 중요한건 아니니 대충 아무거나 짓자.

 

  • 생성이 완료되면 App 토큰이 발행되는데, App 토큰이 있구나 정도만 기억하면 된다. 나중에 쓰인다는것만 알고 있자.

 

  • 사이드 메뉴에 Event Subscriptions 를 클릭하여 Enable Events를 켜주자. 
    추가적으로 Subscribe to bot Events 라해서 봇에게 이벤트를 구독해주어야하는데 사진과 같이 message.im, mpim 정도만 넣자.

Save Changes 를 잊지말고 클릭하자.

  • 특정 명령어를 만들기 위해 Slash Commands 를 만들자.

 

본인이 원하는 커스텀 명령어를 만들자.

 

슬래시 커맨드가 추가된 화면

 

  • 사이드 메뉴 App Home 내에 App Display Name을 수정해준다. 
    내 경우에는 신규 앱 생성시 종종 이름이 들어가지 않아 install 이 안된적이 있어서 이후에는 항상 한번 수정해주고 있다. 

혹시 모르니 Save를 한번씩 해주자.

  • Messages Tab 도 활성화해주고 아래 Allow Users to send Slash Commands and Message from the messages tab 을 활성화해주면 메세지를 보낼 수 있는 환경으로 설정된다.

  •  Install App 메뉴 내 Install to Workspace 버튼을 눌러 슬랙 워크스페이스에 설치해준다. 

 

허용을 누룬다.

 

설치가 끝나면 Bot Token이 발행된다. 잊지말고 잘 챙겨놓자.

  • 슬랙을 켜서 앱을 눌러 본인이 만든 커스텀 봇을 찾아본다.

TestBot을 누루면 앱에 추가된다.

 

TestBot 사진을 안넣어서 사람모양으로 나오고 있다.

 

DM도 잘 보낼수 있도록 되어있다.

  • 확인이 끝났다면, 다시 설정페이지로 돌아와서 Basic Information 내에 Signing Secret 코드를 복사해둔다.

Show를 누루면 마스킹된 키값이 보이기 시작한다.

  • 아까 확인했던 Bot Token도 복사해둔다.

 

  • App Token도 다시 확인하여 복사해둔다.

 

  • 토큰 및 키값을 다 어디에다가 복사해두었다면, 이번엔 특정 폴더를 하나 만들고 그 폴더을 터미널 (혹은 cmd)로 들어간 후 
    아래의 명령어를 통해 Node.js 환경을 잡아준다.
npm init 
# 이후 엔터 계속 막 누루면 package.json 파일이 생성된다. 
npm install --save @slack/bolt
  • main.js 파일을 하나 생성 후 아래 소스코드를 복사 붙여넣기 진행한다. 
    소스코드 내 token/appToken/signingSecret 코드가 비어져있는 이 부분에 아까 복사해둔 코드들을 넣어준다.
const { App } = require("@slack/bolt");

const app = new App({
  token: "####SLACK_BOT_TOKEN 삽입 부분####", //SLACK_BOT_TOKEN,
  socketMode: true,
  appToken: "####SLACK_APP_TOKEN 삽입 부분####", //SLACK_APP_TOKEN,
  signingSecret: "####SIGNING_SECRET 삽입 부분####", // 슬랙 앱 설정에서 확인 가능
});

app.command("/따라해", async ({ command, ack, say }) => {
  try {
    // 커맨드 요청 확인 응답
    await ack();
    const { user_name, text } = command;
    await say(text);
  } catch (error) {
    console.error("에러 발생:", error);
  }
});



(async () => {
  // 봇 실행
  await app.start(process.env.PORT || 3000);
  console.log("봇이 실행되었습니다!");
})();
  • 아래 명령어를 통해 Node.js 파일을 실행해본다.
    봇이 실행되었다고 Now connected to Slack 이라고 뜬다면 이상없이 슬랙 봇이 실행된 것이다.
node main.js


=====================================================================================
god-logger Slack_Node % node test.js
[INFO]  socket-mode:SocketModeClient:0 Going to establish a new connection to Slack ...
봇이 실행되었습니다!
[INFO]  socket-mode:SocketModeClient:0 Now connected to Slack
  • 슬랙 앱을 키고 TestBot에 DM으로 아래와 같이 입력해보자.

잘 따라서 답변한것을 확인할 수 있다.

 

  • 만약 굳이 슬래시 명령어가 아니라 DM 을 보낼때 똑같이 따라하는걸 하고 싶다면 아래와 같은 코드를 추가하면 된다. 
    21~22번째 줄 쯤에 넣자.
// 또는 다이렉트 메시지 이벤트 핸들링
app.message(async ({ message, say }) => {
  // 다이렉트 메시지인지 확인
  const { text, channel_type } = message;
  if (channel_type === "im") {
    try {
      // 메시지 확인
      await say(text);
    } catch (error) {
      console.error("메시지 전송 에러:", error);
    }
  }
});

 

  • 테스트 해보자. 그냥 /따라해 를 하지 않고 입력해보자

이젠 내가 입력한 글도 보인다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'자바스크립트 > Node JS' 카테고리의 다른 글

NPM 프로젝트 라이브러리 자동 최신버전 반영 방법  (0) 2023.05.05
sharp 설치 실패 해결 방안  (0) 2023.05.04
n을 활용한 다양한 Node.js 버전 관리  (0) 2023.04.26
  1. 슬랙 API 를 이용하여, 슬랙 Bot 만들기
  2. 배경
  3. 요구사항
  4. Slack API 설정
'자바스크립트/Node JS' 카테고리의 다른 글
  • NPM 프로젝트 라이브러리 자동 최신버전 반영 방법
  • sharp 설치 실패 해결 방안
  • n을 활용한 다양한 Node.js 버전 관리
신·기록
신·기록
개발 관련 이슈 해결방안, 활용 방법, 제품 리뷰 등을 기록하는 개인 블로그
신·기록
문제해결집
신·기록
전체
오늘
어제
  • 분류 전체보기 (175)
    • 뉴스 (9)
    • 제품 리뷰 (19)
    • 운영체제 및 서버 (53)
      • Linux (27)
      • Mac OS (8)
      • Proxmox (6)
      • Nginx (2)
      • Raspberry Pi (3)
      • Odroid M2 (4)
    • AI 인공지능 (7)
    • 모바일 (4)
      • Flutter (1)
      • 안드로이드 (1)
    • 데이터베이스 (11)
      • Mysql (9)
    • 자바 (11)
      • Spring Framework (9)
    • 자바스크립트 (19)
      • Node JS (4)
      • Electron Framework (10)
      • React & Next.js (4)
    • 클라우드 플랫폼 (4)
    • 학습 (4)
    • 이슈 (21)
    • 비디오게임 에뮬레이터 (2)
    • CPU 성능 순위 (1)
    • 그래픽카드 성능 순위 (1)
    • 기타 (7)

블로그 메뉴

  • 이용 원칙
  • 태그
  • 방명록

인기 글

최근 글

05-30 16:30
관련 문의는 방명록에 부탁드립니다.
본 블로그의 스킨 출처는 아래와 같습니다.
hELLO · Designed By 정상우.v4.2.2
신·기록
Slack API (bolt)를 활용한 Bot 만들기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.