파이썬(Python)/웹서버

파이썬(Python)으로 스마트폰/웹서버에 메세지 보내기 받기(Slack, Application, Smart phone message)#1

끄적끄적아무거나 2022. 6. 14. 18:23
반응형

 

목차

     

     

     

     

    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

     

    정상적으로 서버가 열렸고 메세지를 받았음을 알 수 있습니다.

     

    다음 포스터에서는 구체적인 예제를 통해 스마트폰과 파이썬 사이 통신하는 방법에 대해 알아보겠습니다.

    반응형