피자주문봇을 만들어 봅니다.
깃허브 수정요청

피자주문봇 만들기

지금까지 피자주문 받는 대화흐름을 단계별로 만들어 보았습니다. 하지만 현실세계에서는 더 복합적인 정보를 다루게 됩니다. 피자의 크기, 수량 등 여러가지 정보가 필요하고 선택한 메뉴와 수량에 따라 최종 계산되는 금액도 달라집니다. 조금 더 복합적인 기능 구현을 해야하는 경우, 연습삼아 살펴보기 좋은 예제입니다. 심화버전의 튜토리얼에서는 보다 다양한 예제가 준비되어 있습니다.

Sample Chatbot 가져오기 를 통해 피자주문봇 을 가져오면 챗봇을 확인할 수 있습니다. Sample Chatbot 가져오는 방법
기본적인 개념은 위 챕터에서 학습하셨다고 가정하고 진행하오니 생략이 있을 수 있습니다.

피자주문 Listen 노드 설정하기

대화의도 를 만들고 대화흐름 화면에 들어와 Listen 노드 를 설정합니다.
예문과 파라미터는 아래와 같이 설정합니다. 예문은 제시된 것 이외의 것을 입력해도 됩니다. 피자주문시 사용자들이 입력할 법한 예문을 추가해 보세요.

샘플 예문 :
포테이토 피자 라지 주문 해줘
페퍼로니 피자 1판 시켜줘
피자 주문할래
피자 먹고 싶어
피자주문하기

샘플 파라미터 :

파라미터명 Entity Type
주소 sys.any
피자_가격 sys.any
피자_선택 피자종류
피자_계산금액 sys.any
피자_선택수량 sys.number
피자_선택사이즈 사이즈
주문진행여부 sys.confirm

예문 추가 방법과 파라미터 추가 방법은 위에 챕터를 참고 하시기 바랍니다.
예문 추가 방법 파라미터 추가 방법 Entity Type 설명

피자메뉴 선택 Carausel 노드 설정하기

사용자가 원하는 메뉴를 선택할 수 있는 Carausel 노드 를 설정합니다. Slot 노드 로도 사용자가 선택한 값을 받을 수 있지만
피자 이미지를 보여주기 위해 Carausel 노드 를 Slot 노드 처럼 사용하겠습니다.
Carausel 노드 사용방법 및 Slot 노드 처럼 설정하는 방법은 위에 챕터 내용을 참고 하시기 바랍니다. Carausel 노드 사용하기
선택한 피자메뉴를 저장할 #{피자_선택} 변수는 사용자가 정의한 피자종류 라는 entity 입니다.
Sample Chatbot 을 가져 오셨으면 가져온 챗봇의 단어추출(entity) 메뉴에서 피자종류 entity 구성내용 확인하실 수 있습니다.
사용자정의 entity 에 대한 자세한 내용은 다음을 참고해 주세요. 사용자정의 Entity Type Entity 설정 튜토리얼

사이즈 확인/수량 확인 Slot 노드 설정하기

사용자가 원하는 사이즈를 선택하고 수량을 입력할 수 있는 Slot 노드 를 각각 설정합니다.
사이즈 확인 Slot 노드 에서 선택값을 저장할 #{피자_선택사이즈} 변수는 사용자가 정의한 사이즈 라는 entity 입니다.
Sample Chatbot 을 가져 오셨으면 가져온 챗봇의 단어추출(entity) 메뉴에서 사이즈 entity 구성내용 확인하실 수 있습니다.
수량 확인 Slot 노드 에서 사용자 선택값을 저장할 #{피자_선택수량} 변수는 시스템에서 제공하는 sys.number 라는 entity 입니다.
system entity 설명은 다음을 참고해 주세요. Entity Type 설명
Slot 노드 사용방법은 위에 챕터 내용을 참고 하시기 바랍니다. Slot 노드 사용하기

메뉴 가격 조회 Api 노드 설정하기

사용자가 선택한 메뉴와 사이즈를 가지고 피자 가격을 외부시스템에서 가져오는 Api 노드 를 설정합니다.
Sample Chatbot 을 가져오셨더라도 Api 노드 에 설정할 Api 는 가져오지 않습니다.
Api 설정 방법 및 Api 노드 설정 방법은 위에 챕터 내용 참고해 주세요. Api 설정 방법 Api 노드 설정 방법
아래 내용을 Api 설정창에서 입력하시고 저장 후 Api 노드 에서 불러와 설정하시기 바랍니다.

  • Api 명: 메뉴별_사이즈별_피자가격_가져오기
  • API 설명: 메뉴별_사이즈별_피자가격_가져오기
  • API 메서드: GET
  • Requerst URL: https://channel.danbee.ai:3000/pizzaTutorial/getSizePrice
  • Content Type: JSON
  • 요청 파라미터: q, s
  • Response API Tree: size, price, name

최종 가격 계산 Function 노드 설정하기

사용자가 선택한 메뉴, 사이즈, 주문수량 그리고 외부시스템에서 가져온 피자 가격까지 대화흐름에 가져왔습니다.
Function 노드 를 활용하여 주문수량과 주문한 피자의 가격을 곱해 사용자가 내야하는 금액을 계산하고
사용자가 금액을 보기 쉽도록 천단위에 쉼표를 넣어 봅시다.
Function 노드 사용방법은 위에 챕터 내용을 참고 하시기 바랍니다. Function 노드 사용하기
Function 노드 안에 들어갈 내용은 아래와 같습니다.

/* 천단위 쉼표 처리 */
피자_계산금액 = 피자_계산금액.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
피자_가격 = 피자_가격.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
피자_선택수량 = 피자_선택수량.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
최종 가격 계산 Function 노드 상세화면

주문확인 Slot 노드 설정하기

사용자에게 정말 주문을 원하는지를 물어보고 사용자의 답변을 받는 Slot 노드 를 설정합니다.
Slot 노드 에서 선택값을 저장할 #{주문진행여부} 변수는 시스템에서 제공하는 sys.confirm 이라는 entity 입니다.
system entity 설명은 다음을 참고해 주세요. Entity Type 설명
Slot 노드 사용방법은 위에 챕터 내용을 참고 하시기 바랍니다. Slot 노드 사용하기

주문진행여부 분기 Split 노드 설정하기

사용자가 선택한 주문진행여부에 따라 다른 답변을 하도록 Split 노드 를 설정합니다.
Split 노드 사용방법은 위에 챕터 내용을 참고 하시기 바랍니다. Split 노드 사용하기

주소입력 Slot 노드 설정하기

주문을 원하는 사용자에게 주소를 받는 Slot 노드 를 설정합니다.
Slot 노드 에서 선택값을 저장할 #{주소} 변수는 시스템에서 제공하는 sys.any 이라는 entity 입니다.
system entity 설명은 다음을 참고해 주세요. Entity Type 설명
Slot 노드 사용방법은 위에 챕터 내용을 참고 하시기 바랍니다. Slot 노드 사용하기

주문취소/주문접수완료 Speak 노드 설정하기

주문진행을 원하지 않는 사용자에게는 주문취소 메세지를 원하는 사용자에게는 주문 완료 메세지를 보여주는 Speak 노드 를 설정합니다.
Speak 노드 사용방법은 위에 챕터 내용을 참고 하시기 바랍니다. Speak 노드 사용하기

마무리

지금까지 피자주문봇을 만드시느라 수고 많았습니다. 더 많은 챗봇 샘플이 준비되어 있습니다. 하나씩 열어보고 챗봇으로 어떤 것을 할 수 있을지 생각해보세요!


함께해요! 챗봇시대:)

모든 사물, 디지털 매체와 말이 통하는 시대! 단비Ai와 함께 반드시 오게될 챗봇시대를 열어갔으면 좋겠습니다.
지금 여러분만의 챗봇을 🌱싹틔우세요!

부족한 부분을 알려주세요!

꼼꼼히 빠짐없이 정리하기위해 늘 노력하고 있습니다. 아래와 같이 의견을 주시면 적극적으로 개선하겠습니다.

  1. 메뉴얼 하단에 댓글 또는 contact@danbee.ai에 이메일 보내기
  2. 단비Ai 플랫폼 내에 일하고 있는 [단비Ai 직원, 파브르]에게 문의사항 접수
  3. 깃허브를 써보신 경험이 있다면! 제목 아래 [깃허브 수정요청] 버튼을 클릭!