-
카카오톡 학식봇 만들기(DynamoDB, 파라미터 검증 API) - 12App 2021. 7. 21. 17:01
menu_save를 완성했다.
지난번부터 계속해서 고민했던것은,
오늘 국밥 먹었어, 오늘 라면 먹었어, 오늘 중식 먹었어 와 같이 여러 종류의 메뉴들중 모호하게 사용자가 발화했을 때 봇이 대처하지 못하는 상황이다.
이 상황은 카카오 오픈빌더의 파라미터 검증 API를 사용해서 해결했다.
카카오 i 오픈빌더 도움말에는 이 파라미터 검증 API에대해서 간략하게 설명이 되어있는데,
오픈빌더 링크
위의 사진이, 검증 API로 넘어오는 request의 형태이다.
위 도움말을 보고, request에서 value["resolved"]로 넘어오는 파라미터를 감지한 다음 검증 API에서 처리해줘야겠다고 생각하고, 구현을 시작했다.
검증 API는 lambda 함수 foodname_validation를 추가하는것으로 구현했다.
foodname_validation
import json def lambda_handler(event, context): # TODO implement body = json.loads(event["body"]) isinslotfilling = body["isInSlotFilling"] utterance = body["utterance"] value = body["value"] user = body["user"] r_value = value["resolved"] print("슬롯필링 : {},\n 발화 : {}\n, 밸류 : {}\n, 유저 : {}".format(isinslotfilling,utterance,value,user)) if r_value == "국밥" or r_value == "라면" or r_value == "중식": response = { "status":"FAIL", "message":"{}의 종류를 정확히 써주세요.".format(r_value) } else: response = { "status":"SUCCESS" } return { 'statusCode': 200, 'body': json.dumps(response) }
resolved가 잘못된 파라미터일 경우 message를 출력하는것으로 대처하도록 했다.
중간에 있는 print는, 검증 API로 넘어오는 request의 제대로된 형태를 보기위해 임시로 써두었다. 테스트 후 삭제함.
이후에, menu_save lambda 함수를 조금 수정해서, 완성시켰다.
이후, 잘못된 발화가 아닌 정상적인 발화를 입력했을 경우 DB로 데이터가 잘 넘어오는것도 확인했다.
이제 사소한 버그 몇개를 고치고, 머신러닝으로 넘어갈것 같다.
'App' 카테고리의 다른 글
CaffeineManage (0) 2021.08.14 안드로이드 스튜디오 빌드타임 (0) 2021.07.31 카카오톡 학식봇 만들기(AWS Lambda, Kakao Skill) - 11 (0) 2021.07.19 카카오톡 학식봇 만들기(AWS Dynamo DB with lambda) - 10 (0) 2021.07.17 카카오톡 학식봇 만들기(AWS Dynamo DB) - 9 (0) 2021.07.16