1. 학습
  2. /
  3. 강의
  4. /
  5. Python으로 챗봇 만들기

Connected

연습 문제

거절 처리하기

사용자에게 제안을 했는데 마음에 들지 않으면 어떻게 될까요? 같은 제안을 바로 다시 하면 봇이 어색해 보이겠죠.

여기서는 respond() 함수를 수정해 4개의 인자를 받도록 하고, 4가지를 반환하도록 하겠습니다:

  • 사용자 메시지를 인자로 받고, 봇의 응답을 첫 번째 반환값으로 돌려줍니다.
  • 사용자가 지정한 엔터티를 담는 딕셔너리 params.
  • prev_suggestions 리스트. respond()에 전달될 때는 이전 봇 메시지에서 제안했던 항목이 들어 있고, 반환될 때는 현재 제안이 들어 있어야 합니다.
  • 사용자가 명시적으로 거절한 모든 결과를 담는 excluded 리스트.

함수는 "deny" 인텐트를 받으면 이전 제안을 제외 목록에 추가해야 합니다. 또한 응답에서는 제외 목록에 있는 제안을 걸러내야 합니다.

지침

100 XP
  • message, params, prev_suggestions, excluded의 4개 인자를 갖는 respond() 함수를 정의하세요.
  • message를 해석하고 결과를 parse_data에 저장하세요.
  • parse_data의 "intent" 키 값은 자체적으로 키-값 쌍을 가진 딕셔너리입니다. parse_data["intent"]["name"]를 intent에, parse_data["entities"]를 entities에 할당하세요.
  • intent가 "deny"이면, excluded 리스트의 .extend() 메서드를 사용해 그 안에 prev_suggestions를 추가하세요.
  • 빈 params 딕셔너리와 빈 suggestions, excluded 리스트를 초기화한 다음, 'Submit Answer'를 눌러 메시지를 봇에게 보내세요.