Hangouts Chat 비공개 봇을 폭속으로 만들기

@murs313 님의 Slack의 비 알림bot을 폭속으로 만든다 【멧●●】
빨리 같은 것을 만들려고 생각했지만, 우리는 Slack을 사용할 수 없었습니다.

그래서 Hangouts Chat 버전 비 통지 bot를 만들어 보았습니다.
GAS라면 너무 흉내내서 만들고 지루하지 않기 때문에 Python과 cron으로 구현해 보았습니다.

※Hangouts Chat은 G Suite에서만 사용할 수 있으며 개인 Google 계정에서는 현재 사용할 수 없습니다.

만든 것



테스트로 송신해 본 것이 이쪽.
실제로 시간을 맞추고 17:00에 보내도록 설정하고 있습니다.

Hangouts Chat은 Markdown 같은 기법을 사용할 수 있는 것이 좋네요.
(이미지에서는 강조표시가 잘 되지 않았지만……)

사용한 것



  • CentOS 8
    cron으로 정기 실행합니다.

  • 파이썬 3.6.8
  • Hangouts Chat 의 incoming webhook
  • livedoor 날씨 API

  • Hangouts Chat에 POST



    Hangouts Chat은 incoming webhook에서 사용할 수 있습니다.
    @itenkida7 님의 [슈퍼 간단]Hangouts Chat의 incoming webhooks를 사용하여 API에서 메시지를 쉽게 게시 를 참고하겠습니다.

    파이썬 소스 코드



    weather.py
    import requests
    
    weather_url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010' # Tokyo
    resp = requests.get(weather_url)
    data = resp.json()
    
    # 一部ぼかしていますがコピペでおk
    webhook_url = "https://chat.googleapis.com/v1/spaces/HOGEHOGE/messages?key={YOUR_KEY}&token={YOUR_TOKEN}" 
    
    tomorrow_weather = data['forecasts'][1]
    telop = tomorrow_weather['telop']
    max_temp = tomorrow_weather['temperature']['max']
    min_temp = tomorrow_weather['temperature']['min']
    image = tomorrow_weather['image']['url']
    
    text = ''
    text += '明日の天気は'
    text += '*' + telop + '*'
    text += 'です。\n'
    # なぜかmaxとminが時々取得できない
    if max_temp is not None:
        text += '最高気温'
        text += max_temp.get('celsius')
        text += '℃'
    if min_temp is not None:
        text += '/最低気温'
        text += min_temp.get('celsius')
        text += '℃\n'
    text += image
    
    content = {"text": text}
    response = requests.post(webhook_url, json=content)
    

    cron 설정



    cron의 설정은 여기 가 참고가 된다고 생각합니다.

    cron을 설정하려면 crontab -e를 치십시오.
    $ crontab -e
    

    그러면 Vim에서 설정 파일이 열리므로 실행할 시간과 실행할 명령을 입력합시다.
    이번에는 홈 디렉토리 바로 아래에 놓았다는 설정입니다.
    0 17 * * * python3 ~/weather.py
    

    파일을 저장하고 Vim을 닫았을 때 crontab: installing new crontab 라고 표시되면 설정 완료입니다.

    작동을 확인하려면 crontab -e를 다시 열고
    */1 * * * * python3 ~/weather.py
    

    와 같이 기술하면 1분 간격으로 명령이 실행되게 됩니다.

    감상



    참고로 했던 링크들이 알기 쉬웠으므로 특히 막히지 않고 설정할 수 있었습니다.
    이제 비오는 날 전날 PC를 가지고 돌아가는 것을 잊지 마세요.

    … … 아무튼 폐사는 요전날 리모트 금지의 접촉이 나 버렸습니다만.

    좋은 웹페이지 즐겨찾기