졸업작품 경진대회(RPA With AI Speaker) 봅시­다

RPA With AI Speaker라는 작품명으로 졸업작품 경연대회에 출전하여 장려상 수상결과를 얻었다.사실 3학년 1학기 시작했을 때는 React Native를 사용하여 MatchDay(축구 매칭 시스템)애플리케이션을 개발하기로 했지만 2학기 시작 전 여러 이유로 갑자기 주제를 바꾸게 됐다.작품에 대한 전체적인 내용을 간단히 설명한 내용은 다음과 같다.RPA With AI Speaker는 직장인의 회사 업무 중 비효율적인 업무시간을 줄이고, 줄인 시간만큼 생산적인 활동을 할 수 있도록 도와주는 시스템이다. 직장인들이 소비하는 비효율적인 시간은 다양하겠지만 우리가 개발한 시스템에 비효율적인 업무는 단순 반복 업무에 특화되어 있다.반복해서 업무에 있는 간단하게 예를 들어서 설명을 하자면, 학과에서 특강을 수강하고자 하는 학생들의 신청서를. hwp나. docx파일로 신청서를 접수하면, 많은 학생들의 신청서를 얻을 수 있을 것입니다. 수많은 학생들의 신청서를 받고 엑셀 파일에 신청 학생들의 명단을 작성하면 많은 시간을 투자해야 한다. 이처럼 단순하고 반복적인 작업을 RPA에 적용하여 비효율적인 업무시간을 줄이는 것을 목표로 하였다. 그렇다면 RPA는 무엇인가. RPA는 Robotic Process Automation의 약어로, 사전에 정해진 Work Flow에 따라 자동적으로 업무를 수행하는 소프트웨어이다.​ 그렇다면 미리 정한 WorkFlow설정에 의한 자동 업무 수행 작업은 2개의 기술을 사용하여 사용자가 쉽게 이용할 수 있도록 했다. 2개의 기술 속에 한번 다시 기술은 AI방송 NaverClovaSpeaker이다. 사용자는 스피커를 통해 명령을 내리고, 스피커는 사용자로부터 입력된 명령을 처리해 사용자가 원하는 결과물을 보낸다. 2번째 기술은 카카오 i오픈 빌더와 카카오 채널 forBusiness를 활용했다. 이 기술을 통해 사용자는 평소 많은 시간을 사용하는 카카오톡에서 메시지를 전송하라는 명령을 내릴 수 있다. 이 두가지 기술을 동작시키기 위한 서버는 AWS EC2 Window10을 사용하여 AWS RDS도 사용하고 필요한 데이터를 DB에 저장하는 작업도 실현했다.카카오 톡을 활용한 RPA시스템 내가 담당하는 작업은 2번째 기술을 구현하고 유저가 카카오 톡에서 RPA서비스를 이용할 수 있도록 했다. 우선 사용자가 카카오 채널을 통해 명령을 내리기 때문에 카카오 채널을 통해 새로운 카카오톡 채널을 개설해야 한다. 채널을 개설한 뒤 카카오i 오픈빌더와 채널을 연결한 뒤 사용자의 명령을 입력하고 처리하는 과정에 대한 작업을 구축하면 된다.우선 첫 번째 작업으로 엔티티를 설정해주었다. 엔티티는 봇이 이해할 수 있는 용어를 체계적으로 정리한 데이터 사전이다. 나는 카카오 톡을 통해서 실행하는 RPA작업을 관리 카드 작성, 학교 전문 정보, 학교 소식시항, 총 3가지 작업을 실행하도록 했다. 그럼 제가 작성한 주체는 총 3개로 다음의 그림(주체)-1 같다.

>

주체는 작업, food, notice 3가지이고 작업 운영 주체에는 관리 카드는 대표 엔트리, food에는 학식이라는 대표 엔트리, notice에는 고지 사항이라는 대표 엔트리가 있다. 또 학식이라는 단어는 점심 메뉴 같은 동의어로 묶기로 하고 food의 학식 대표 엔트리에 동의어로 그림(주체)-2처럼 설정했다. 정리하자면,food사전에학식이라는단어가있고,학식이라는단어의동의어는오늘점심,오늘의학식,학식을가르쳐주고,점심,메뉴,오늘의메뉴가있습니다.

>

그 다음 작업은 블록 작업인데, 블록은 사용자 의도의 기본 단위로 인텐트(Intent)라고도 불린다. 1개의 블록( 인)투)는 1개의 의도를 표현하고 사용자 발화가 봇우로에 유입되면 블록 없이 사전에 등록된 발화 내용을 기반으로 사용자의 의도를 파악되고 1개의 블록이 최종적으로 추출된다. 우리는 테스트 인)투까지 모두 4개인 텐 투를 생성했다. 나머지 3개인 텐 투는 실행하는 RPA작업의 내용을 기반으로 인)투를 작성했기 때문에 work, food, notice라는인 텐 투가 있다. 인텐트 내부에는 인텐트를 실행시킬 수 있는 발화에 대해서 설정할 수 있지만, 발화는 유저가 예상되는 발화에 대해서 작성하는 것이다. 우리가 작성한 food 인)투의 발화 내용은 다음 그림( 인)투)-1처럼 설정했다.

>

만약 사용자가 카카오톡에서 그림과 같은 패턴으로 발화하면 food intent가 동작하는 것이다. 그리고 사용자의 발화 내용은 엔티티의 food 사전의 대표 엔트리와 동의어 기준으로 작성해야 한다. 그리고 마지막으로 패턴 발화의 내용과 엔티티를 연결하면 된다. 서로 연결시키고 준 다음 아래에 파라미터 설정을 보면 그림( 인)투)-2처럼 자동적으로 파라미터가 연결되어 있음을 확인할 수 있다.​

>

다음으로 해야 할 작업은 스킬 생성을 행할 필요가 있는데, 스킬이란 봇 시스템으로부터 스킬 요청을 받아 거기에 담긴 정보를 분석하고 적절한 응답을 만드는 역할을 한다. 각각의 요청은 https­post를 통해 전달되며 요청, 응답 모두 json으로 구성된 body를 이용한다. 지금까지 food intent에 대한 설명을 실시했기 때문에, 학식에 대한 정보 요청, 답변을 받는 스킬에 대해 설명하기로 한다. 스킬이라는 메뉴에 들어가서 스킬을 생성할 수 있는데 우리는 학식호출이라는 스킬을 생성했다. 생성한 스킬 내부에 들어가면 기본적인 정보에 대해 설정해야 하는데 설명과 url을 충족시켜야 한다. 설명은 간단하게 학식 메뉴를 부르고 오면 작성하고 url은 우리가 aws ec2서버를 사용했기 때문에 aws ec2에 대한 url을 풀어 주었다.

>

그리고 서버와 스킬이 서로 통신이 원활한지 테스트하고 통신이 원활하면 인텐트의 파라미터로 학식호출 스킬을 연결한다.

>

연결이 완료되면 인텐트 맨 아래에 있는 봇 응답을 스킬 데이터 응답으로 설정해 준다.

>

​ 다음은 카카오 i오픈 빌더의 학식 호출 기술과 AWS EC2가 서로에 요청 응답을 하기 위한 작업이다.​ 우선 학식 호출 url에 대해서 살펴보면://[AWS EC2링크]:80/food처럼 되어 있다. aws ec2링크에 서버 포트는 80에서 실행하고/food로 연결된다. 만약 사용자가 글 정보를 알고 싶은 학식에 대한 발화를 하려면 스킬을 통해서://[AWS EC2링크]:80/food에 요청이 넘어가게 된다.

>

://[AWS EC2링크]:80/food를 통해서 요청이 있으면@app.route(‘/food’, methods=[‘POST’])를 통해서 def food():함수가 실행된다.함수가 실행되면 food_data=select_foodData()를 통해 학식정보를 받아오는데, 이 부분이 AWSRDS를 통해 데이터를 받아오는 부분이다.데이터를 Python Selenium에 바로 받지 않는 이유는 데이터를 받아오는 시간이 길고 그 사이에 통신이 두절되는 경우가 발생했기 때문에 서버를 실행시킴과 동시에 데이터를 미리 가져와 AWSRDS에 저장하기로 했다.AWS RDS를 통해 데이터를 취득하면 받을 음식 정보를 분류해 json 형식으로 응답하지만 응답 포맷은 리스트카드 형태로 응답해 사용자에게 보여주기로 했다.결론은 사실 지금 작성한 내용은 단순히 경시대회에 출품하기 위한 작품을 만드는 것이었지만 실제로는 남의 홈페이지에서 취업정보 데이터를 불러와 쓸 수 있도록 만들기로 했다. 그러나 잡코리아의 경우 python selenium의 사용을 막고 있으며 사람인 api를 사용하려 했으나 시간관계상 열리지 않았기 때문에 콩쿠르인 만큼 학생들이 쉽게 이해하고 우리가 항상 쓰던 학교에서 정보를 얻으려고 학교 홈페이지에서 데이터를 가져오게 되었다.업무의 생산성 향상을 위해 비효율적인 업무 중 단순 반복 업무에 대해 RPA를 적용시키려고 시도하여 개발하고 적용시킨 기술은 카카오 チャット봇 기능, 그리고 RPA 명령 작업을 처리하는 서버를 구현했다. 이를 통해 사용자가 RPA 작업에 쉽게 접근할 수 있는 환경과 기존의 업무에 비해 상당한 차이의 시간을 절약할 수 있게 되었다. 이번 졸업작품 개발을 통해 Python 라이브러리의 장점에 대해 알게 되었다. 라이브러리를 활용함으로써 개발 과정이 간편하고 개발 소요 시간적인 부분에서도 큰 이점을 얻을 수 있었다. 또 카카오i 오픈빌더를 통해 チャット봇 시스템의 구성과 활용방법, 활용방법에 대해 배우게 됐다. 향후에는 실제 사용자에게 RPA가 적용되고 싶은 업무에 대해 요구를 파악하고, 그 개발을 통해서 실제의 여러 업무에서 생산성 향상에 도움이 될 계획이다.​는 개발 코드(GitHub):s://github.com/jaehwan0917/RPA_With_AI_Speaker