반응형
작성일: 2024년 4월 18일

 

 

 

카카오 API 보다 Slack API를 사용하게 된 이유

 

개인적으로 자동으로 스마트폰 메신저에 Notification 메시지를 보낼 일이 있어서, Python으로 카카오톡 메시지 전송 Rest API를 사용했다. Python + 카카오 API 조합으로 구현하니까 참고할 예제가 많아서 큰 문제없이 개발을 할 수 있었다.

그런데 ...

AccessToken의 만료 시간이 4시간 밖에 안 되니까, Refresh Token을 이용해서 다시 AccessToken을 재발급해야 하는 귀찮은 일이 생겼다. 그냥 한번 코드를 작성하고 몇년 동안 잊고 살았으면 좋겠는데 말이다.

그래서 귀찮은 작업을 안 하려고 Slack API의 Webhooks를 이용하게 되었다.

 

 

 

Slack API의 Incoming Webhooks

Slack API를 이용해서 Slack Messenger에 메시지를 전달하기 위한 절차를 보면,

  • 당연히 Slack에 계정을 만들고, slack.com에 로그인해야 한다.
  • https://app.slack.com 접속해서 App을 추가한다. 
       + 나는 [Incoming Webhooks]라는 App을 추가했다.
       + 이때, 기존 channel을 사용해도 되고, 아래 화면처럼 새롭게 channel을 만들어도 된다.

 

Slack Incoming WebHooks App  생성하기

 

  +  위 화면처럼 channel을 선택하고 나면, 아래 화면이 보일 것이고 [Add Incoming WebHoos integration] 버튼을 누른다.

 

Add Incoming WebHooks integration

 

 

아래와 같이 App이 생성된 결과 및 설정 화면이 나온다.

그리고 Example 명령을 복사해서 Terminal에서 실행하면, 바로 Slack 메신저에 curl로 보낸 메시지가 보여진다.

 

 

 

아래와 같이 slack 메신저에 테스트로 보낸 메시지가 보여지면, Incoming-Webhook App은 정상 동작한 것이다.

 

 

 

Python의 requests package를 import해서 requests.post(url, headers, body)를 이용해도 curl과 동일한 효과를 낼 수 있다.

 

 

 

Python Code 작성

 

##
## FILENAME: my_webhook_test.py
##

import requests, json

## NOTE
##  MY_WEBHOOK_KEY는 "T7RURUGSK/.............................. 22i"
##  이런 형태의 문자열이다.

api_url = "https://hooks.slack.com/services/{MY_WEBHOOK_KEY}"
headers = {
    "Content-type": "application/json"
}
data = json.dumps({
    "text": "파이썬으로 테스트 메시지를 보내다 :) \n 룰루랄라 !!!"
})

response = requests.post(api_url, headers=headers, data=data)
print(response)

 

위와 같이 Python code를 작성하고, 아래와 같이 명령을 수행한다.

 

$ python3 my_webhook_test.py
<Response [200]>
$

 

위 Python 앱이 아래와 같이 메신저에 "파이썬으로 테스트 메시지를 보내다... 룰루랄라!!!"를 출력할 것이다.

 

Python App에서 보낸 메시지가 Slack 메신저 화면에 출력됨

 

 


 

 

그리고 아래 화면처럼 Slack API 매뉴얼이 잘 되어 있어서, 읽고 따라하면 잘 동작한다.

결국, AccessToken을 발급하지 않아도 이 Webhooks처럼 쉽게 메신저에 메시지를 보내는 것이 가능한다.

 

 

 

 

 

꼭 알아야 할 정보

 

내가 만든 Slack App에 관한 전체 목록을 열람하고, 설정 정보를 관리하고 싶다면 아래 주소를 사용한다.

- 내 App 목록을 확인할 수 있다.

- 각 App의 설정 정보,  REST API URL 등 정보를 직접 확인하고 제시해주는 예제 명령어를 통해 테스트할 수 있다.

 

https://api.slack.com/apps

 

Slack API: Applications | Slack

Your Apps Don't see an app you're looking for? Sign in to another workspace.

api.slack.com

 

+ Recent posts