1 분 소요

 안녕하세요 마개입니다.
 개인 또는 회사에서 개발을 진행하면서 슬랙을 통해 메시지를 받고자할 때가 있습니다. 배치 프로세스가 있다면 해당 프로세스의 결과 (성공 또는 실패)를 받는다던지 특정 메트릭이 임계치를 넘을 경우 알람을 받는 등의 형태로 이용할 수 있는데 API를 이용해서 메시지를 받아보도록 합니다. 이미 Slack에 계정이 있고 Workspace가 있다는 전제하에 진행합니다.


slack

Token 발급하기

 Slack API를 사용하기 위해서는 Token을 발급 받아야 합니다. 이 작업을 진행해봅니다.

image  Slack API 사이트로 이동하면 위와 같은 모습이 보입니다.


image  여기서 우측 상단의 [Your apps] - [Create your first app]를 선택합니다. 기존에 다른 app이 있으셨던 분은 저와 다르게 보일 수 있습니다.


image  그러면 위와 같이 나오는데 여기서 From scratch를 선택합니다.


image  그러면 이름과 원하는 Workspace를 지정하고 하단의 Create App을 선택합니다.


image  위와 같이 신규 App으로 넘어오면 왼쪽 메뉴에 OAuth & Permissions 메뉴를 선택합니다.


image  해당 메뉴에서 Scopes 부분을 찾아서 Add an OAuth Scope를 선택하고 원하는 권한을 추가합니다. 이중에서 필수로 해야하는 권한은 chat:write이고 이외에는 필요한 권한들을 추가합니다. 추가하면 자동으로 저장되기 때문에 따로 저장할 필요는 없습니다.


image  다시 상단으로 올라와서 OAuth Token for Your Workspace에 있는 Install to Workspace 버튼을 선택합니다.


image  위와 같이 다시 확인하는 절차를 거치는데 Allow를 선택하고 넘어갑니다. 그러면 OAuth Token for Your WorkspaceBot User OAuth Token 값이 생성되어 있는 것을 보실 수 있습니다. 이 값은 API 사용할 때 필요하기 때문에 복사해놓습니다. (중요한 정보이기 때문에 외부에 노출되지 않도록 합니다.)



Slack 채널에 App 설정

 이렇게 App을 설정 완료했다면 Slack에 해당 App을 추가합니다.


image  앱을 추가하고자 하는 채널로 돌아와서 채널명을 클릭합니다.


image  상단의 메뉴들 중에 Integrations를 선택하고 Apps - Add an App 을 선택합니다.


image  그러면 나오는 App 목록 중에 우리가 처음에 만들었던 App도 있는 것을 확인하실 수 있습니다. 그것을 골라서 Add합니다.



Channel ID 값 얻기

 파이썬과 같은 프로그래밍 언어에서 Slack API를 사용하여 메시지 보낼 때 필요한 정보 중 하나인 Channel ID 값을 얻어봅니다. 이것은 해당 링크에서 얻을 수 있습니다.


image  링크로 접속하면 위와 같은 모습을 볼 수 있는데 여기서 빨간 박스 안에 우리가 발급 받았던 Token (xoxb- 로 시작하는)을 입력하고 스크롤을 조금 내리면 Test method 버튼을 클릭합니다.


image  그러면 우측에 API response에 위와 같이 나오는데 여기서 볼 것은 id 값과 name 값입니다. id는 채널의 ID이고 name은 채널명입니다. 두 값을 다른 곳에 복사해놓습니다.



프로그래밍

 이렇게 준비가 완료되었으면 이제 프로그래밍을 합니다. 여기서는 파이썬을 이용해서 진행해봅니다. 파이썬에서 사용하기 위해 패키지를 먼저 설치합니다.

1
$ pip install slack_sdk


1
2
3
4
from slack_sdk import WebClient

slack_client = WebClient("[TOKEN]")
slack_client.chat_postMessage(channel="[Channel ID]", text="슬랙 테스트")

 간단하게 코드는 위와 같이 할 수 있습니다. Token과 Channel ID를 넣은 뒤에 실행합니다.


image Slack에서 메시지를 제대로 도착했는지 확인합니다.

태그: ,

카테고리:

업데이트: