【 Slack Bot 】 채널이 작성되면 통지하자!

Slack App을 사용하여 서버리스로 추가 구현했습니다! 이번에 사용하는 것은 Python, AWS Lambda, API Gateway입니다.



API Gateway와 Lambda 설정



AWS의 Lambda, API Gateway에 대해서는 과거의 htps : // m / ymktmk_t / ms / 7, d4, 63, 62795, b2418b에 세세한 것을 쓰고 있으므로 동일하게 설정해 보세요.

  에서 시작! !

Slack App 만들기



htps : // 아피. scck. 코m/ 로 이동하여 Create a custom app 를 누른 다음 Create New App 을 누릅니다. 그러면 아래 이미지와 같은 화면으로 전환할까 생각합니다.



"App Name"과 "Development Slack Workspace"를 입력하고 "Create App"을 클릭하면 응용 프로그램이 생성됩니다.

Slack App 설정 ① - "Event Subscriptions"



Lambda 함수의 lambda_fanction.py에 일단 아래와 같이 기술해 주세요. Slack App과의 협력 확인이 필요하기 때문입니다.

lambda_fanction.py
import json

def lambda_handler(event, context):
    return json.loads(event['body'])['challenge']


그리고 Slack API 메뉴에서 "Event Subscriptions"를 선택



Request URL 에 API Gateway 및 Lambda 설정에서 만든 API Gateway의 끝점을 입력합니다. 잠시 후 "Verified"가되면 OK입니다!

조금 아래로 스크롤하여 Subscribe to Bot Events 에 channel_created 이벤트를 추가합니다.



Slack App 설정 ② - "권한 부여"



OAuth & Permissions를 클릭하여 Scopes에서이 세 가지를 추가하십시오.



Bot의 토큰이 필요하기 때문에 메모해 둡니다. Slack API 메뉴에서 OAuth & Permissions 를 선택하여 Bot User OAuth Access Token 에 작성된 token을 복사합니다.



Slack App 설정 ③ - "Install App"



Slack API 메뉴에서 Install App을 선택합니다.



"Install to Workspace"를 클릭!

응용 프로그램 설치 확인 화면이 표시되므로 문제가 없으면 "Allow"를 클릭하십시오.



설치되면 Slack 화면에서 응용 프로그램이 실행 중인지 확인할 수 있습니다.

글쎄, 드디어 Lambda 함수에 코드를 써 봅시다!

lambda_fanction.py
import logging

import os
import json
import urllib.request

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):

    logger.info(event)

    channelName = json.loads(event['body'])['event']['channel']['name']
    channelId = json.loads(event['body'])['event']['channel']['id']

    url = "https://slack.com/api/chat.postMessage"

    headers = {
        "Content-type" : "application/json",
        "Authorization" : "Bearer "+ os.environ['TOKEN']

    }

    data  = {
        'channel': '通知したいチャンネルID(このAppが存在する)',
        'text': '新しいチャンネル: ' + '#' + channelName,
        'link_names' : 1,
    }

    req = urllib.request.Request(url=url, data=json.dumps(data).encode('utf-8'), method='POST', headers=headers)

    with urllib.request.urlopen(req) as res:

        logger.info(res.read().decode("utf-8"))


  시도해 보자.



알림을 받고 싶은 채널에 만든 애플리케이션을 추가하세요.



할 수 있었습니다! slack API 문서를 보면 더욱 다양한 기능을 붙일 수 있습니다. 만약 에러가 나와 버려도 문서에 해결 방법이 실려 있어요!

 참고 기사

좋은 웹페이지 즐겨찾기