-
AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 5편 | 텍스트로 반응하는 API (1)Serverless 2018. 11. 7. 20:35
자동 응답 API 스펙
이번에는 사용자가 버튼을 눌렀을 때 적절히 반응하도록 해봅시다!
사용자가 선택한 명령어를 파트너사 서버로 전달하는 API입니다. 자동응답 명령어에 대한 답변은 응답 메시지(Message)와 응답 메시지에 따른 키보드 영역의 답변 방식(Keyboard)의 조합으로 이루어집니다. 답변 방식은 주관식(text)과 객관식(buttons) 중 선택할 수 있습니다.
이번에는 GET방식이 아니라 POST 방식이 요청이 들어오고 body는 json 형태입니다.
응답은 message와 keyboard 2가지 컬럼이 있네요.테스트이벤트 구성
이번에도 테스트 이벤트를 구성해봅시다.저번과 비슷한데요이번에는 POST 방식으로 하고,/message 라는 path로 구성하면 됩니다.body도 카카오 플러스친구 스펙에 맞게 구성합니다."body": "{\"user_key\": \"testUserKey\", \"type\": \"text\", \"content\": \"아재 개그1\"}",
POST /message
이제 코드를 작성해봅시다.
// router/post.js exports.postHandler = ({path, body}) => { const {type, content} = JSON.parse(body); if (path === '/message') { if (type === 'text' && content === '아재 개그1') { return ({ message: {text: '둘리가 다니는 학교는? 빙하타고~'}, keyboard: { type : 'buttons', buttons : ['아재 개그1', '아재 개그2'], } }); } } return ({ message: {text: '뭔데??'} }); };
event.body를 전달하기 위해 router 코드를 약간씩 수정해봅시다// router/get.js exports.getHandler = ({path}) => { ... }
// index.js ... exports.handler = async (event) => { switch (event.httpMethod) { case 'GET': return buildResponse(getHandler(event)); case 'POST': return buildResponse(postHandler(event)); default: return buildError(`Unsupported method "${event.httpMethod}"`); } };
getHandler와 postHandler에 event를 통째를 넘기는 방식으로 변경했습니다.일단 람다에서 테스트는 성공입니다.
API Test
API Gateway쪽에서도 잘 되는지 봐야 하는데요,이번에는 POST 방식이라 브라우저에서 테스트 할 수가 없습니다.REST Client를 이용해서 테스트해봅시다다행히 잘 되네요
이제 카카오 플러스친구도 기본적인 동작을 하겠죠??
Next
키보드 메뉴가 동적으로 바뀌도록 만들어봅시다
'Serverless' 카테고리의 다른 글
CloudWatch 활용하기 1편 | 클라우드워치에서 Lambda 로그 확인하기 (0) 2018.11.14 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 6편 | 텍스트로 반응하는 API (2) (0) 2018.11.08 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 4편 | 키보드 API 만들기 (0) 2018.11.07 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 3편 | 리펙토링 (0) 2018.11.06 AWS Lambda Node8 Tip 1편 | callback 없애기 (0) 2018.11.06 댓글