슬랙 Web API 를 이용해보자 (1)

최세인·2023년 5월 28일
0

Slack

목록 보기
1/1

회사나 해커톤 등에서 팀원간 소통시 슬랙을 이용하면서 슬랙 앱을 통해 원하는 채널에 자유자재로 메시지를 전송할 수 있다는 것을 알게 되었습니다.

보통은 슬랙 Web API 를 통해 메시지 전송에 사용하는 것 같은데, 찾아보니까 멤버 정보의 목록을 불러오고 멤버의 상태 이모지 및 메시지도 변경이 가능해 보였습니다.

이번 글에서 테스트용 앱을 만들어서 간단하게 Web API 를 다뤄보는 방법을 설명하고자 합니다.

글은 1, 2편으로 나눠서 1편에서는 앱을 만들어보고, 채널에 메시지를 전송해보는 것으로 마무리를 하겠습니다.

슬랙 워크스페이스 생성 과정은 이미 되어있다는 가정하에 생략하도록 하겠습니다.

1. 슬랙 앱 생성하기

https://api.slack.com/apps

  1. 위의 링크를 접속하여 Create New App 을 클릭 후 뜨는 모달에서 From Scratch 를 선택합니다.

  2. 앱 이름을 입력하고 워크스페이스를 선택 후 Create App 버튼을 클릭합니다.
    앱 이름과 워크스페이스 선택하기

  3. 앱 권한을 설정합니다. 좌측 메뉴의 Features > OAuth & Permissions 를 클릭합니다. 앱 기능에 따라 필요한 권한이 달라지는데, 특정 채널에 메시지 보내는 기능을 위해서 incoming-webhook, chat:write 권한이 필요합니다.

    만일 비공개 채널에 메시지를 보내려면 groups:write 가 추가로 필요합니다.

    아래 Scopes > Bot Token Scopes 에서 Add an OAuth Scope 를 클릭 후 나오는 검색 창에 위의 권한 이름들로 검색하여 추가해줍니다.
    권한 설정하기

    전체 메소드 별 필요한 앱 권한은 아래 링크에서 확인하실 수 있습니다.

    https://api.slack.com/methods

  4. 슬랙의 봇 기능 사용을 위해 좌측 메뉴의 Settings > Basic Information > Add features and functionality 클릭 후 Bots 항목을 선택합니다.
    Bots 선택하기

  5. Bots 선택 후 나오는 페이지에서 App Display Name 항목 옆에 Edit 버튼이 있는데, 이를 클릭하고 다음과 같이 이름을 등록해줍니다. 이 과정은 앱이 슬랙에 메시지를 보낼때 봇이 보내는 것이므로 그 봇에 대한 표시 이름과 봇 자체 이름을 등록하는 과정이라고 보시면 될 것 같습니다.
    Bot 이름 등록하기

  6. 다시 좌측 메뉴의 Features > OAuth & Permissions 로 돌아와서 Install to Workspace 버튼을 클릭해서 워크스페이스에 앱을 연동해줍니다. 권한 요청 확인 페이지가 뜬다면 정상적으로 앱이 준비된 것이고, 게시할 채널 선택 후 허용 버튼을 클릭하면 앱이 설치됩니다.
    앱 설치하기

  7. 다시 앱 구성 페이지로 돌아오면 다음과 같이 봇 유저 토큰이 발급되어 있는 것을 확인하실 수 있습니다. 이 토큰은 슬랙 web-api 연동 시 사용할 토큰입니다.
    앱 토큰 발급 상태 확인하기

  8. 마지막으로 채널에 메시지를 보내려면 앱이 채널에 초대되어야 합니다. 아래와 같이 채널로 이동해서 앱 이름 클릭 후 채널에 추가해줍니다.
    채널에 앱 초대하기

2. Node.js 에서 Slack Web API 모듈 사용해보기

기본 세팅하기

@slack/web-api 모듈을 설치합니다.

$ npm i @slack/web-api

자바스크립트 파일을 하나 만들고 다음과 같이 작성해줍니다.

const { WebClient } = require('@slack/web-api');

const botClient = new WebClient('위에서 발급 받은 봇 유저 토큰');
const channelId = '전송할 채널 아이디';

코드에 대해 설명드리면, 발급 받은 토큰으로 웹 클라이언트를 초기화 해 주고 메시지를 전송할 채널 아이디를 세팅해둡니다.

채널 아이디는 슬랙 채널 목록 우클릭 > 채널 세부정보 보기 선택 후 나오는 창 하단에서 확인 및 복사가 가능합니다.
채널 아이디 확인하기

이렇게 하면 정말 간단하게 모든 세팅이 끝났습니다 :)

채널에 메시지 전송하는 방법

채널에 메시지를 전송할 땐 chat.postMessage 메소드를 이용합니다.

https://api.slack.com/methods/chat.postMessage

위의 자바스크립트 코드에서 아래와 같이 추가해줍니다.

const { WebClient } = require('@slack/web-api');

const botClient = new WebClient('위에서 발급 받은 봇 유저 토큰');
const channelId = '전송할 채널 아이디';

botClient.chat
	.postMessage({
		channel: channelId,
		text: '<@슬랙 멤버 아이디> 채널에 메시지를 보내는 예시입니다.',
	})
	.then(() => {
		console.log('메시지 전송 완료');
	})
	.catch((error) => {
		console.log('오류가 발생했습니다.');
		console.error(error);
	});

channel 에는 위에서 세팅한 메시지를 보낼 채널 아이디를, 텍스트에는 전송할 텍스트를 넣으면 끝입니다. 메시지 중간에 <@슬랙 멤버 아이디> 를 넣어서 특정 사용자를 멘션 할 수도 있습니다.

코드 작성이 완료되었다면 실행해봅시다.

$ node slackTest

아래와 같이 메시지가 잘 온다면 성공입니다.
메시지 정상 전송 확인하기


이어지는 2편에서는 좀 더 나아가서, 멤버의 프로필 정보를 조회하고 상태 메시지와 이모지를 변경하는 방법에 대해 알아보겠습니다.

감사합니다 :)

profile
웹 개발하는 사람입니다 :)

0개의 댓글