Hangouts Chat 비공개 봇을 폭속으로 만들기
7261 단어 HangoutsChat파이썬cronWebhook
빨리 같은 것을 만들려고 생각했지만, 우리는 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에 POST
Hangouts Chat은 incoming webhook에서 사용할 수 있습니다.
@itenkida7 님의 [슈퍼 간단]Hangouts Chat의 incoming webhooks를 사용하여 API에서 메시지를 쉽게 게시 를 참고하겠습니다.
파이썬 소스 코드
weather.pyimport 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를 가지고 돌아가는 것을 잊지 마세요.
… … 아무튼 폐사는 요전날 리모트 금지의 접촉이 나 버렸습니다만.
Reference
이 문제에 관하여(Hangouts Chat 비공개 봇을 폭속으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tesstesstex/items/4778e77274afae8f2d3a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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를 가지고 돌아가는 것을 잊지 마세요.
… … 아무튼 폐사는 요전날 리모트 금지의 접촉이 나 버렸습니다만.
Reference
이 문제에 관하여(Hangouts Chat 비공개 봇을 폭속으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tesstesstex/items/4778e77274afae8f2d3a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ crontab -e
0 17 * * * python3 ~/weather.py
*/1 * * * * python3 ~/weather.py
참고로 했던 링크들이 알기 쉬웠으므로 특히 막히지 않고 설정할 수 있었습니다.
이제 비오는 날 전날 PC를 가지고 돌아가는 것을 잊지 마세요.
… … 아무튼 폐사는 요전날 리모트 금지의 접촉이 나 버렸습니다만.
Reference
이 문제에 관하여(Hangouts Chat 비공개 봇을 폭속으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tesstesstex/items/4778e77274afae8f2d3a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)