-
라즈베리파이와 챗봇으로 날씨 예보를 해보자 #2삽질기/라즈베리파이 2020. 2. 1. 16:31
기상청에서 메일이 하나 왔다. 공공데이터포털에서 내가 사용한 날씨 예보 api가 폐기된다는 내용이었다. 새로운 api로 개편되어 이전 포스팅에서 사용한 api는 폐지된다는 것이었다. 따라서 본 포스팅을 참고하여 프로젝트를 하려는 분들은 기상청 날씨 예보 사이트로 이동하여 새로 개편된 api를 살펴보기 바란다. 개편 전과 개편 후의 사용법은 대부분이 유사해 보이지만 일부 변경점이 있을 수 있으므로 api 페이지의 활용가이드를 잘 확인하기 바란다. 참고로 이메일에 따르면, 기존의 api는 2020년 4월 28일에 완전 폐기된다고 한다.
기존 api 코드값 정보(좌측)와 개편된 api 코드값 정보(우측) 비교. 맥 사용자로써 활용 가이드가 워드파일로 바뀐 것부터 맘에 든다.
본론으로 돌아와 지난 번 포스팅에 이은 프로젝트 설명을 계속하겠다. 이번 포스팅의 주된 내용은 텔레그램 챗봇을 생성하는 것이다. 먼저 텔레그램에 로그인하여 접속해 BotFather를 찾는다. 다음으로 /newbot을 전송하고, 생성할 bot의 이름, 생성할 bot의 Username을 지정해준다.
마지막 메시지가 잘렸는데, 스크롤을 내려보면 생성한 챗봇의 토큰이 있다. 완료됐다면 챗봇의 토큰을 주는데, 우리는 이를 통해 챗봇에 인증하고 메시지를 보낼 수 있다. Phthon에서 이를 하려면 관련 패키지를 설치해야한다. 이전 포스팅에서 생성한 아나콘다 가상환경이 3.0 이상이라면 다음 명령어를 통해 손쉽게 다운로드 할 수 있다.
pip install telepot
설치 후 pip list로 해당 패키지가 잘 설치되었는지 볼 수 있다. 이제 간단한 코드를 통해 챗봇 테스트를 해보도록 하자. 다음 예제는 메시지로 '날씨'라고 전송하면 '맑았으면 좋겠습니다'라고 대답하며, 다른 메시지에 대해서는 모르겠다는 메시지를 전송한다.
#-*- coding: utf-8 -*- import telepot, sys from telepot.loop import MessageLoop import Private #API 토큰과 공공데이터포털 API 등을 별도의 py파일로 만들어 두었다. def handle(msg): content_type, chat_type, chat_id = telepot.glance(msg) if content_type == 'text': if msg['text'] == '날씨': #날씨라는 메시지가 도착했을 때 대답 bot.sendMessage(chat_id, '맑았으면 좋겠습니다') else: #그 외에 다른 메시지가 도착했을 때 대답 bot.sendMessage(chat_id, '무슨 말인지 모르겠군요') TOKEN = Private.TOKEN #Bot API 토큰 bot = telepot.Bot(TOKEN) MessageLoop(bot, handle).run_as_thread() print ('Listening ...') # 프로그램을 계속 돌림 while True: input()
본인이 하고 싶은 메시지를 지정해줘도 좋다. 이것저것 실험을 해보자.
이제 텔레그램 봇을 생성했으며 사용할 준비까지 되었다. 다음 포스팅부터는 가장 중요한 날씨 데이터를 받아서 메시지로 변환해 볼 것이다. 지금까지는 별 어려움 없었는데... 데이터를 변환하는 것에서 공식 가이드를 참고해야하는 일이 많아 나름 삽질한 부분이다. 다음 포스팅에서 본격적인 Python 코딩을 통해 결과물을 만들어보도록 하겠다.
'삽질기 > 라즈베리파이' 카테고리의 다른 글
라즈베리파이로 NUGU 스피커 프로젝트 해 본 이야기 #1 (0) 2020.03.15 라즈베리파이와 챗봇으로 날씨 예보를 해보자 #3 (0) 2020.02.17 라즈베리파이와 챗봇으로 날씨 예보를 해보자 #1 (1) 2019.09.17 라즈베리파이를 다시 세팅해보자 #2 (0) 2019.08.24 라즈베리파이를 다시 세팅해보자 #1 (0) 2019.08.24