우연히 글을 하나보고 만들고 싶어서 해당 기능을 구현하였다. 그리고 이에 대해 알게된 점을 간략하게 서술하고자 한다.
워크스페이스 만들기
💡 https://slack.com/intl/ko-kr
위의 사이트에 접속하면 상단 오른쪽에 새 워크스페이스 개설이 있다. 이를 클릭한다. 나는 워크스페이스명을 slack bot test로 지정하여 만들어주었다.
앱 만들기
💡 https://api.slack.com/apps?new_app=1
위의 사이트에 접속하면 모달창이 뜨게 된다.
그러면 From scratch를 눌러 앱 이름을 지정하고, 위에서 만들어둔 워크스페이스를 클릭해준다.
그리고 나서 Create App을 누르면 앱이 생성된다.
권한 설정 및 토큰 발급
1) 사이트 이동
앱을 생성하고 난 다음에 왼쪽에 사이드바를 보면 본인이 지정한 앱이름으로 메뉴가 되어 있는 것을 확인할 수 있다. 만약에 사이트를 잘못 눌러 찾을 수 없다면
💡 https://api.slack.com/apps
위의 사이트에서 상단 오른쪽에 보면 아래와 같은 Your Apps이라는 버튼을 확인할 수 있다. 이를 클릭한다.
그러면 위와 같이 내가 생성한 앱을 확인할 수 있다. 이 앱을 클릭하여 토큰을 발급하러 가면 된다.
2) 권한 설정
사이드바에 OAuth & Permissions을 클릭하여 들어간다. Scopes탭에 들어가서
위와 같이 권한을 추가해준다.
3) 토큰 발급
그리고 사이트의 맨 상단으로 가게 되면, OAuth Tokens for Your Workspace을 찾는다. Install to Workspace 버튼이 있다. 이를 클릭한다.
위와 같은 화면이 나왔을 때 허용 버튼을 클릭하여 토큰을 발급해준다.
채널 생성
slack에 들어가 생성버튼을 클릭하면 간단하게 생성할 수 있다. 임의로 채널이름을 넣어 생성해준다.
위와 같이 생성되게 된다. 그리고 나서 앱을 추가해줘 채널과 앱을 연결시켜줘야 한다. 채널 이름을 클릭시 아래와 같은 사진이 나오게 된다.
통합 탭을 눌르면 앱이라는 영역이 보인다. 상단 오른쪽에 앱 추가를 누른다. 위에서 내가 만들어준 앱을 클릭하여 연결해준다.
서버에서 API 연결
나는 이전에 만든 프로젝트에서 메시지를 보내면 slack에 메시지를 보내줄려고 한다. 파일을 만들어 express에 대한 기본 셋팅해준다.
# 폴더 생성 및 열기
mkdir slack-bot
cd slack-bot
# package.json 생성
npm init -y
# 모듈 설치
npm install http express @slack/web-api
# env 설치
npm i --save dotenv
위의 명령어를 쳐서 필요한 모듈들을 설치해준다. 여기서 @slack/web-api는 slack의 api를 호출할 수 있도록 하는 라이브러리이다.
const { WebClient } = require("@slack/web-api");
require('dotenv').config();
// 생성한 token
const API_TOKEN = process.env.API_TOKEN;
const web = new WebClient(API_TOKEN);
const conversationId = process.env.CONVERSATIONID;
(async () => {
const result = await web.chat.postMessage({
text: 'Hello world!',
channel: conversationId,
});
console.log(`Successfully send message ${result} in conversation ${conversationId}`);
})();
위와 같이 코드를 짜면, 아래와 같이 slack에서 메시지를 보내준다.
👇🏻 참고
https://surprisecomputer.tistory.com/49
https://velog.io/@blacksooooo/Node.js-슬랙-봇을-만들어-메세지-자동화-하기