목차
Slack 이란?
슬랙이란 스마트 기기(Smart Device) 를 사용해서 웹에 접속해서 메세지를 작성하고 보내기가 받기가 가능한 웹 서버(Web Server) 입니다. 간단하게 카카오톡(Kakao Talk, 카톡), 스카이프(Skype)와 같은 메세지 웹 서버라고 생가하시면 됩니다.
이번 포스터에서는 파이썬(Python)을 작성해서 Slack이 제공하는 API에 접속 해서 해당 웹서버를 사용합니다. API에 대한 기초적인 내용은 링크를 참조 하시면 됩니다. (https://scribblinganything.tistory.com/530)
Slack 가입 및 API 주소 받기
1. https://slack.com/intl/ko-kr/ 에 접속하여 가입을 진행합니다.
2. 워크스페이스(Workspace)를 생성 합니다.
3. 아래와 같이 단계별 질문에 답변을 채웁니다. (1~4단계)
4. 설정이 완료 되면 아래와 같이 앞서 작성한 회사 이름(코딩 테스트)을 확인할 수 있습니다.
5. 가입 완료 후 구글(Google)에서 slack api로 검색을 해서 https://api.slack.com/ 에 접속합니다. 그리고 아래와 같이 "Create an app"을 클릭 합니다.
6. "From scratch"를 선택 하면 아래와 같은 그림이 나오는데 App Name 과 앞서 만든 workspace를 선택 합니다. 그리고 "Create App"을 클릭 합니다.
7. "Incoming Webhooks"를 활성화(on) 시키고 하단에 "Add New Webhook to Workspace"를 클릭 합니다.
8. 앱을 게시할 채널을 앞서 생성한 "#코딩테스트"에 만듭니다.
9. 아래와 같이 생성된 Webhook URL을 Copy 해서 API 주소를 가져 옵니다.
파이썬(Python)으로 Slack 서버에 접속 확인 하기
파이썬을 사용해서 Slack 서버에서 제공하는 API가 정상적으로 동작하는 지 Post 명령을 전달 하고 응답으로 200이 들어오는지 확인해보겠습니다.
간단하게 동작에 대해 설명 드리면 Post 는 웹서버에 클라이언트(Client)가 Form 과 같은 형태의 정보를 보낼 때 사용하는 명령입니다. 회원가입과 같은 정보를 전달할 때 Post 를 사용 합니다. 응답 코드(Response Code)는 웹서버가 응답하는 숫자 입니다. 정상 동작을 하였을 경우 200이라는 값을 돌려 줍니다.
예제 코드>>
import requests
import json
api_url = "Slack에서 받은 API 주소를 입력하시오"
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36",
"Content-type": "application/json"
}
msg = {"text" : "Hello World"}
res = requests.post(api_url, headers=headers, data=json.dumps(msg))
res.raise_for_status()
if res.status_code == 200:
print("Post Recieved")
else:
print("Failed to Recieve")
4번 라인: 저는 제가 받은 주소값을 입력 하였습니다.
6~8번 라인: user-agent는 간혹 서버에서 봇(Bot)을 차단할 때 User-agent를 확인하는 경우가 있어 헤더에 포함 시켰습니다. Content-type은 데이터를 json 형태로 보내기 위해 설정 합니다.
11번 라인: 메세지를 딕션너리(Dictionary) 형태로 보내야 json에서 처리 해줍니다.
13번 라인: post 명령으로 메세지를 전달 합니다.
14번 라인: 응답으로 200이 오지 않을 경우 예외 처리 합니다.
결과>>
Post Recieved
정상적으로 서버가 열렸고 메세지를 받았음을 알 수 있습니다.
다음 포스터에서는 구체적인 예제를 통해 스마트폰과 파이썬 사이 통신하는 방법에 대해 알아보겠습니다.
'파이썬(Python) > 웹서버' 카테고리의 다른 글
파이썬(Python)으로 스마트폰/웹서버에 메세지 보내기 받기(Slack, Application, Smart phone message)#2 (0) | 2022.06.17 |
---|---|
아두이노에서 온도값 주면 db에서 저장한 값을 webGUI에서 그래프로 출력하기 (0) | 2020.12.29 |
serial 통신으로 받은 값 DB에 저장하기 (8) | 2020.12.18 |
mongodb 두개의 프로그램으로 쓰면서 읽기 (0) | 2020.12.17 |
flask, pyserial 동시에 사용하기 (2) | 2020.12.17 |