분류 전체보기
-
카카오톡 학식봇 만들기(AWS Lambda, Kakao Skill) - 11App 2021. 7. 19. 20:58
오늘은 menu_save에대한 구체적인 구현을 진행했다. 기본적인 DB 저장 기능은 잘 구현됐지만, 특수적인 상황에 대처할 수 있도록 봇의 필수 파라미터를 지정해주고, 검증해주는 부분이 가장 힘들었다. 검증 API를 추가해서 파라미터를 검증하기위해 검증 API를 추가했다. 검증 API를 사용한 이유는, 사용자의 예상 발화가 "나 국밥 먹었어."와 같은 경우에, 국밥의 종류(얼큰, 수육 ..)를 알 수 없기 때문에 해당 API를 사용하기로 했다. 위의 경우는 국밥, 중식(일품, 백반), 라면(신라면, 진라면 ....) 과 같은 경우에 공통적으로 발생하는 예외사항이였다. 하지만 도움말을 봤지만, 도움말에서 정해진 형태의 결과값을 반환해주어야 정상적으로 동작한다는 부분에서 문제가 발생했다. "정해진 형태"가 ..
-
카카오톡 학식봇 만들기(AWS Dynamo DB with lambda) - 10App 2021. 7. 17. 19:33
import json import boto3 import crawling_INUmenu as im def lambda_handler(event, context): body = json.loads(event["body"]) typemenu_list = ["중식(백반)","중식(일품)","석식"] food_name = body["action"]["params"]["food_list"] user_id = body["userRequest"]["user"]["id"] # Date and index date_obj = json.loads(body["action"]["params"]["sys_date"]) date = date_obj["date"] date_tmp = int(date[5:].replace('-',''..
-
카카오톡 학식봇 만들기(AWS Dynamo DB) - 9App 2021. 7. 16. 17:29
마지막으로 구현 할 기능은 menu_save, menu_show, menu_recommend 이다. menu_save : 입력한 메뉴가 csv 메뉴 목록에 있다면, History에 추가합니다. ex ) 나 오늘 불낙덮밥 먹었어. # date = 오늘 , 메뉴 = 불낙덮밥 이렇게 들어온 데이터들을 DB에 카카오 봇으로부터 넘어온 id를 파티션키로하여 저장해줌. mesnu_show : History에 저장된 메뉴 목록들을 출력합니다. ex ) 먹었던 메뉴 보여줘. DB에서 id를 키로해서 검색한 후, 저장된 History를 출력해줌. menu_recommend : 저장된 History가 10개 이상일 경우, 실행 가능한 서비스. 10개의 메뉴들을 형태소 단위로 쪼갬 ex) 불낙 덮밥 -> 불낙, 덮밥 // ..
-
AWS Lambda 실시간 로그 사용하기(Cloud watch)App 2021. 7. 15. 20:33
https://github.com/jorgebastida/awslogs jorgebastida/awslogs AWS CloudWatch logs for Humans™. Contribute to jorgebastida/awslogs development by creating an account on GitHub. github.com 그동안 request를 보낸 후 정상적으로 출력이 되지 않으면 일일이 Cloud watch에 들어가서 로그그룹을 누르고.. 수동으로 확인하고 있었는데, 위의 링크에서 배포하고 있는 프로그램이 실시간 로그 출력을 가능하게 한다는것을 알게 되었다. 다만 사용법이 친절하게 다 쓰여있지 않아서, 사용하는 방법을 알게되기까지 많은 시간이 걸렸다. 1. 먼저 Log 뷰어용 IAM 계정을 ..
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda) - 8App 2021. 7. 12. 21:05
import json from bs4 import BeautifulSoup import crawling_INUmenu as im def lambda_handler(event, context): menu_type_list = ["중식","중식","석식","라면","국밥"] request_body = json.loads(event["body"], encoding="utf-8") action = request_body["action"] # 날짜 출력 date_obj = json.loads(action["params"]["date"]) date = date_obj["date"] date = int(date[5:].replace('-','')) diff_index = im.today_index + date - i..
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda, layer) - 7App 2021. 7. 9. 15:02
그저께에도 프로젝트는 계속해서 작업했지만, 포스팅을 하지 않았어서 그저께 진행한 진행사항을 묶어서 포스팅하게 됐다. 진행중인 학식봇에는 여러가지 기능을 구현할 계획이다. 현재 구현된 기능 : 날짜별 메뉴출력(daymenu_show) 앞으로 구현할 기능 : 특정 날짜, 특정 시간 메뉴 출력(typemenu_show) // ex) 7월 10일 중식 알려줘 먹었던 메뉴 저장(menu_save) - 히스토리 관리 기능 // ex) 오늘 중식 먹었어. -> 해당 날짜의 중식을 히스토리에 저장 현재 사용하고있는 AWS lambda를 통해 봇을 개발하려면, 각각의 기능마다 다른 lambda 함수를 사용해야한다. 그래서 crawling_INUmenu.py를 라이브러리처럼 여러 함수에서 참조해서 사용해야 하는데, 각각의..
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda) - 6App 2021. 7. 6. 19:15
추가적인 배열 정리 (not_today_menu_list와 같이 따로 나눈것이 아닌, today_menu_list와 all_menu_list로 나눔) 및 배열 인덱싱, 슬라이싱을 모두 완료하였다. 추가적으로 AWS lambda 코딩도 완료했다. 추가적으로 bs4 라이브러리를 사용하기위해서, lambda에 zip파일을 업로드하는 형식으로 라이브러리를 적용시켰다. 코드들도 모두 대대적인 개선사항이 생겼다. crawling_INUmenu.py from bs4 import BeautifulSoup # 크롤링을 위해 bs4 라이브러리 사용 from urllib.request import urlopen today_menu_list = [[[], [], [], [], []]] all_menu_list = [] men..
-
카카오톡 인천대학교 학식봇 만들기(AWS Lambda) - 5App 2021. 7. 5. 20:02
Lambda 코딩에 애를 많이 먹었던 날이다. 위의 사진과 같이 챗봇 스킬 테스팅으로 Lambda로 request를 보내고, 어떻게 넘어오는지 먼저 조사를 했다. 몇 시간 만에 response를 84번이나 찍어내며.. 수많은 오류들과 부딫혔다. 넘어오는 request들에서 내용을 뽑아내는 부분에서 많은 오류들이 발생했다. 기본적으로 챗봇에서 넘어오는 request들의 내용은 json 형식으로 인코딩된 상태로 넘어오기 때문에, 적절하게 json decoder(json.load)를 사용해서 잘 뽑아내줘야 했고, 한글은 UNICODE 형식으로 디코드되는 바람에 엄청난 오류를 뿜어냈다. json 기본 형식인 UTF-8 형식으로 넘겨줘야 오류가 나지 않는다는것을 몇 시간이 지난후에 알아냈다. dictionary ..