카테고리 없음

Django + Slack

r잡초처럼 2023. 2. 18. 13:38

Web에서 일어나는 이벤트(회원 가입, 문의 등)를 Slack에서 이벤트로 받아보고 싶을 수 있다. (그래야만 한다. 안 궁금하면 어쩔 수 없고...) 한번 해보자

Slack

Slack Webhook 생성하기

1. 우선 App을 생성하자

2. 해당 화면에서 From scrath를 선택하자

 From an app manifest는 Slack 공식 문서에선 다음과 같이 설명한다.

매니페스트는 Slack 앱용 YAML 또는 JSON 형식의 구성 번들입니다. 매니페스트를 사용하면 UI 또는 API를 사용하여 사전 정의된 구성으로 앱을 만들거나 기존 앱의 구성을 조정할 수 있습니다.
매니페스트를 공유하고 재사용할 수 있으므로 프로덕션 앱의 개발 복제본을 만드는 간단한 방법이 제공됩니다.

다음에 자세히 살펴보자(우선 넘어가자)

3. 여기서 App Name workspace를 설정하자.

4.그리고 Webhooks를 선택하자. 내가 하려는 건 웹에서 일어나는 이벤트를 알려는 거니까

우측 상단에 On으로 토글을 표시하고 Add New Webhook to Workspace 가 나오는데 알림을 받고자 하는 채널을 설정하고 Sample Url을 보내면 해당 채널로 메시지가 온다

sample url
안뇽~

잘 보내진 것을 확인했다. 그러면 Webhook Url(Sample 말고)을 Copy 해놓고 장고에 붙여보자

Django

Django 세팅

기본적으로 장고에 대한 이해가 있다고 가정한다.

Django 프로젝트 생성한 뒤의 모습이다.

Django와 Slack 연동하기

간단하게 유저 정보를 저장하는 로직을 짜고 여기서 정보가 저장되면 Slack으로 메시지가 오도록 만들었다

from slack_sdk.webhook import WebhookClient

slack_url = '...'
webhook = WebhookClient(slack_url)


def post(request):
    if request.method == 'POST':
        ...
         response = webhook.send(
            text='유저가 가입했습니다.',
        )
        ...

그리고 POST를 날리면 슬랙에 알림이 오는 걸 확인할 수 있다.


참고

https://slack.dev/python-slack-sdk/webhook/index.html

 

Webhook Client — Python Slack SDK

RetryHandler With the default settings, only ConnectionErrorRetryHandler with its default configuration (=only one retry in the manner of exponential backoff and jitter) is enabled. The retry handler retries if an API client encounters a connectivity-relat

slack.dev

https://somjang.tistory.com/entry/Python-Slack-WebHooks-%EC%9D%84-%ED%86%B5%ED%95%B4-%EC%9E%91%EC%97%85-%EC%A7%84%ED%96%89%EC%83%81%ED%99%A9-%EC%95%8C%EB%A6%BC-%EB%B0%9B%EC%95%84%EB%B3%B4%EA%B8%B0-feat-Incoming-WebHooks