어푸푸

코레일 자동 예약 매크로 제작기 #2 본문

잡동사니/자동화

코레일 자동 예약 매크로 제작기 #2

예수님부처 2018. 3. 25. 12:46

파이썬을 이용하여 PC에서 돌아가는 원격 코레일 매크로를 만들기로 결정한 뒤 문제가 하나 생겼습니다. 핸드폰으로 컴퓨터에서 실행되고있는 매크로 프로그램에 입력을 하고 싶은데 어떻게 해야할지 전혀 모르는 상황이었기 때문입니다. 무엇이 어떻게 가능한지 모르는 상황이었기 때문에 처음에는 다소 복잡한 방법을 구상했습니다. 요즘은 PC 버전 카카오톡이 있기 때문에 카카오톡 창을 띄워놓고 나에게 톡을 핸드폰으로 보내고 그걸 이용해서 입력을 할 수 있을 것 같았습니다. 카카오톡 대화창에 대해서 이미지 스캔을 계속 수행하다가 카카오톡 대화창이 업데이트가 된 것을 감지하면 마우스 및 키보드 조작 함수를 이용하여 받은 메세지를 클립보드에 저장한 후, 클립 보드에 저장된 내용을 실행되고 있는 파이썬 프로그램에서 활용하는 방법이었습니다. 저는 혹시 파이썬으로 카톡 메세지를 파싱하고, 보내는 모듈이나 방법이 없을지 구글링을 하기 시작했습니다. 만약 그러한 방법이 있다면 굳이 키보드와 마우스를 조작하지 않아도 될 것이 분명했습니다.

그렇게 파이썬으로 카톡을 보내는 방법을 찾던 중 저에게 딱 맞는 것을 발견했습니다. 그건 바로 카카오톡 옐로 아이디였습니다. 혹시 아래 사진과 같은 카카오톡 플러스 친구를 보신 적이 있나요? 저런 카카오톡 계정을 '옐로 아이디'라고 부르는데 자동화가 되어있는 일종의 챗 봇 (chat bot) 입니다. 카카오톡에서는 기업이나 개인에게 옐로 아이디를 발급해주고 이를 잘 사용할 수 있도록 API도 제공해줍니다. 옐로 아이디는 기업뿐만 아니라 개인들도 활발하게 사용하고 있는데요, 옐로 아이디를 이용해서 학생식당 메뉴를 보여주거나, 웹 사이트를 크롤링 해서 새로운 글이 등록되면 알려주는 등 다양한 용도의 챗 봇이 개발되고 활용되고 있습니다.

<카카오톡 옐로 아이디중 하나인 아시아나항공>

하지만 카카오톡 옐로 아이디는 저에게 치명적인 단점을 가지고 있었습니다. 자동 응답 API를 이용하려면 사용 가능한 서버를 가지고 있어야 하고, 그럴리야 없겠지만 한 달에 메세지 발송 건수가 10,000건을 넘어가게 되면 유료로 톡을 보내야 한다는 것이었습니다. 돈도 없고 (노느라) 시간도 없는 대학원생에게는 별로 좋은 소식이 아니었습니다. 무료로 서버를 구축하는 방법이야 어떻게든 찾아볼 수 있겠다지만 너무나도 귀찮은 일이었던 것입니다. 하지만 좋은 소식도 있었습니다. 바로 '챗 봇'이라는 키워드를 발견한 것이었죠. 챗 봇 키워드로 구글링을 해보니 텔레그램에서 무료로 챗 봇을 지원해준다는 것을 알게 되었습니다. 더 좋았던 것은 텔레그램에서 파이썬 API를 직접적으로 제공해주고 있었고, 개인적인 용도로 쓸 경우에는 굳이 서버가 필요하지 않다는 것이었습니다.

<텔레그램 사에서는 챗 봇 기능을 무료로 지원해준다>

이제 코레일 자동 예약 매크로를 만드는 방향이 완전히 정해졌습니다. 텔레그램에서 챗 봇을 생성한 뒤, 저는 핸드폰으로 챗 봇을 향해 메세지를 전송합니다. 그렇게 전송된 메세지는 파이썬 프로그램에서 텔레그램 API를 통해 직접적으로 입력이 되고, 입력된 사항을 토대로 원하는 KTX 표를 예약하게 됩니다. 이후 예약이 성공적으로 완료되면 텔레그램 봇이 저에게 예약이 완료되었다는 메세지를 전달해주게 됩니다.

텔레그램에서 챗 봇을 생성하는 것은 아주 간단합니다. 텔레그램 어플리케이션에서 챗 봇을 통합적으로 관리하는 봇인 @BotFather 봇을 이용해서 챗 봇을 아주 간단하게 생성할 수 있습니다. @BotFather을 텔레그램의 연락처 탭에서 검색하고 클릭하면 아래 그림과 같이 '시작' 버튼을 누를 수 있는 채팅창이 열립니다. 시작을 누르면 아래와 같이 간단한 매뉴얼이 나오게 됩니다. 이 챗 봇과의 채팅에서 '/newbot'을 입력하게 되면 새로운 챗 봇을 생성할 수가 있습니다. 새로운 챗 봇을 생성할 때는 봇을 부를 이름과 봇의 유저 ID를 설정하게 되는데요, 봇을 부를 이름은 아무렇게나 설정할 수 있지만 봇의 유저 ID는 이름이 반드시 bot으로 끝나야 합니다. 아마도 대소문자는 관계가 없는 것 같습니다. 그렇게 챗 봇의 유저 ID까지 설정해주면 토큰이 발급되는데요, 이는 프로그램에서 챗 봇에게 접속하기 위해서 필요하니 반드시 저장해놓으셔야 합니다. 제가 실제로 사용하는 봇이다보니 봇 이름과 토큰 등은 모자이크 처리하였습니다.

<BotFater 챗 봇을 통해 새로운 챗 봇을 생성할 수 있다>

이렇게 하면 기본적인 텔레그램 챗 봇의 생성이 완료되게 됩니다. 이제 프로그램만 코딩한다면 바로 챗 봇에 접근할 수 있습니다.

코레일 자동 예약 매크로 제작기 #3에서 계속...