2021-03-09, 102일차

2021. 3. 11. 21:15카테고리 없음

  • 한 일

    • 스프링 부트 수강
      • 122강까지[O]
    • 뷰 수강[O]
      • 39강까지[O]
  • 할 일

    • 스프링 부트 수강
      • 123강부터
    • 카카오 챗봇 알아보기[..]
  • 노트

    • 파일 업로드 때 뒤에 붙는 regDate는 뭘 위한 걸까?.. id같은 거겠지

    • 카카오 챗봇 반려

      • 채널 홈에 사용 성격을 뚜렷히 명시할 것
      • ex) 맛집을 찾아주는 맛집봇, 특정 인물의 Q&A를 알려주는 인물봇
      • 홈페이지를 보유한 경우 홈페이지 주소 기재
      • 카카오톡 채널명, 프로필 이미지, 카테고리 등을 정확히 입력하고 공개 설정을 On으로
    • 이렇게 보완해서 다시 해야할 것 같음

    • 근데 장례식 앱의 챗봇이 대략적으로 어떤 역할을 맡게될지는 물어봐야할 거 같다

    • 카카오 챗봇 기본 개념

      • 엔티티

        • 단어 단위
        • 챗봇의 데이터 사전
        • 동의어, 유의어 등을 등록할 수 있다
        • 사용자의 발화를 이해하기 위한 첫 단계
        • 일반적, 공통적 개념들은 카카오에서 시스템 엔티티로 제공하고 있다
          • 날짜, 시간 등의 유의어와 동의어
          • ex) 엔티티 명 : @sys.date 엔티티 예시 : 오늘, 내일, 2018년 1월15일, 수요일
      • 챗봇의 서비스 단위

        • 기본 시나리오
          • 웰컴 블록(welcome)
            • 챗봇과 사용자가 처음 만난 경우
          • 폴백 블록(fall-back)
            • 사용자의 발화를 챗봇이 이해할 수 없을 경우
          • 탈출 블록(exit)
            • 봇이 발화를 이해하지 못해 폴백으로 들어갔거나,
            • 사용자가 대화를 초기화하고 싶을 경우 사용자의 명령어 정의
        • 커스텀 시나리오
          • 사용자가 만드는 시나리오
        • 시나리오 설정
          • 모든 시나리오에서 공통적으로 적용되는 설정
          • 되묻기 질문(fall-back)
            • 최대 되묻는 횟수와 되묻기 대기 시간 설정 가능
            • 최대 횟수, 시간 초과 시의 메시지 설정 가능
          • 제네릭 메뉴
            • 사용자가 인터페이스를 추가할 수 있음
            • 관리자와의 1:1 채팅, 상담 톡 등을 버튼으로 생성 가능하게 설정할 수 있다
      • 블록(block)

        • 사용자 의도의 기본 단위, 인텐드(Intend)라고도 함
        • 하나의 블록은 하나의 의도를 표현
        • ex) 아이유 노래 틀어줘
          • intend : playmusic (노래 틀어줘)
          • artist : 아이유 (아이유)
        • 주요 기능
          • 사용자 발화 패턴 설정, 파라미터, 봇의 응답 형식, 스킬, 컨텍스트
        • 종류
          • 웰컴 블록
            • 사용자와 첫 대면 시 챗봇의 반응
            • On/Off 가능
          • 폴백 블록
            • 사용자의 발화와 매칭되는 시나리오가 없을 때 챗봇의 반응
            • ex) 챗봇 : 이해하기 어려워요. or 무슨 말인지 모르겠어요.
          • 탈출 블록
            • 챗봇이 폴백 블록에 진입했을 시 대화를 초기화하는 사용자의 명령어 설정
      • 발화 패턴

        • 사용자의 발화를 예측해서 등록
        • ex) 사용자 : 장례식장 위치가 어디야?
        • 등록한 발화 중 의미 있는 부분을 엔티티로 태깅
        • 챗봇은 엔티티(등록한 동의어, 유의어 포함)를 기준으로 발화를 이해
      • 파라미터 설정

        • 파라미터는 챗봇이 사용자의 의도를 파악하기 위한 데이터를 의미
        • 사용자와 챗봇의 대화는 대부분 파라미터를 채우는 과정
        • ex) 사용자 : 노래 틀어줘
        • ex) 챗봇 : 어떤 노래를 틀어드릴까요?
        • ex) 부족한 파라미터 : 가수, 분위기, 장르 등
        • 구성요소
          • 파라미터 명
            • 각 파라미터의 이름
          • 엔티티
            • 사용자의 발화에 포함된 엔티티(설정해둔 단어)를 파라미터로 연결할 수 있음
            • 유효한 엔티티가 존재할 경우 추천되고, 선택하여 태깅(연결)할 수 있음
              • 사용자 기준인지 챗봇 작업자 기준인지 명확하지 않음
            • 챗봇이 동작 영역에 들어갈 경우 부족한 파라미터 '값'을 채울 수 있음
            • 엔티티 값
              • $로 시작하는 이름의 값
              • 주로 파라미터 이름과 동일함
            • 특정 값
              • #로 시작하는 이름의 값
              • current를 사용해 현재 대화 내용(사용자의 발화)에 접근 가능
            • 고정된 값
              • $나 # 없이 사용되는 값
              • 값 자체가 파라미터의 값이 됌
            • 기본값
              • 값에 별다른 설정이 없을 경우 사용되는 말 그대로 기본값
      • 파라미터 검증 API

        • '스킬'을 사용하기 전 챗봇이 습득한 파라미터의 값을 검증/변환하는 API
          • '스킬'은 '특정한 데이터가 필요한 블록'을 의미함
          • ex) 아이유 '신곡' 틀어줘
          • 발화 시점을 기준으로 기존 '아이유 노래' 항목에 없는 신곡 여부를 파악해야 함
        • 검증용 url과 검증 실패시의 에러 메시지 등록
        • 등록한 url에서 정해진 형태의 결과값을 리턴해야 정상 작동함
          • 리턴값이 정해진 형태를 벗어난다면 오류로 처리 되고, 다시 슬롯 필링(값 채우기)으로 돌아감
      • 그룹 파라미터

        • 기본적으로 1파라미터 = 1엔티티로 매칭
        • 그룹 파라미터는 동작할 때 그룹 내 하나만 있어도 문제 없을 때 사용함
        • 그룹 파라미터 '음악' ( 사람 이름 파라미터, 노래 제목 파라미터 )
        • ex) 아이유 노래 틀어줘 or 좋은 날 틀어줘
        • 파라미터가 그룹 파라미터로 구성되는 순간 '필수 파라미터'가 됨
      • 슬롯 필링

        • '필수 파라미터'의 값이 채워지지 않았을 때, 이를 채우기 위해 챗봇이 되묻는 과정
        • 슬롯 필링 진행 중에는 기존 대화 내용이 계속 유지 됨
        • '시나리오 설정'이나 '되묻기 질문'에서 슬롯 필링 시도 횟수 설정 가능
      • 파라미터에 연결된 스킬의 실행 과정

        • Request payload의 구성
          • 스킬 실행은 HTTP request Method POST로 이루어짐
          • request, response 값의 형태는 JSON
          • 고유 id로 X-Request-Id 형태인 footprint id 값을 전달
        • payload란?
          • HTTP 요청을 보낼 때 포함되는 데이터
          • JSON 형태
          • 구성
            • Key = 파라미터 이름, Value = 값
            • user request의 일부 항목과 컨텍스트
      • 응답

        • 사용자의 발화가 블록에 매칭될 경우 출력되는 답변
        • 블록 당 3개의 연속된 응답 가능
        • 사용자 기기에 따라 응답 형태 설정 가능
        • 종류
          • 카카오톡
            • 텍스트형, 이미지형, 카드형, 커머스형, 리스트형
            • 기본형, 랜덤형, 케로셀형
          • 카카오 미니
            • 텍스트형
            • 랜덤형
      • 컨텍스트

        • 이야기의 문맥을 설정 가능
        • 블록 간 연결고리를 만들 때 사용
        • 서로 다른 의도의 블록을 컨텍스트로 묶어 쓸 수 있음
        • ex) 음료 주문 후 음료 취소
          • 주문과 취소라는 별개의 블록을 컨텍스트로 묶어 사용
          • 주문 상황(Odering)을 확정하는 블록, 취소하는 블록, 추가하는 블록 등
        • 전달 가능한 상황 : 현재 블록의 파라미터
        • 전달 불가능한 상황 : 사용자의 발화 정보
        • ex) 사용자 : 오늘은 날이 쌀쌀하니까 아이스 아메리카노
          • '아이스 아메리카노'는 파라미터로 받을 수 있음
          • '오늘은 날이 쌀쌀하니까'라는 발화는 받을 수 없음
          • 단, 스킬을 활용할 경우 발화 정보도 받을 수 있음
        • 블록 설정 -> 컨텍스트 설정에서 설정 가능
        • 구성값
          • 인풋 컨텍스트
          • 아웃풋 컨텍스트
          • 컨텍스트 수명(Lifespan)과 유효시간(TTL)
          • ex) 사용자 : 아이스 아메리카노 1잔(주문 상황 시작, 1잔 주문을 output)
          • ex) 사용자 : 취소할래 (1잔 주문 상황을 input, 취소 상황을 output)
      • 플러그인

        • 특정한 질문 or 답변을 위한 기능
        • 파라미터 설정의 플러그인, 봇 응답형식의 플러그인으로 구성
        • 파라미터 설정의 플러그인
          • 특정한 형식을 설정 가능
          • ex) input type="text" "number" "password"
          • 파라미터 만들기 -> 우측 상단의 플러그인
          • 바코드(QR), 날짜/시간, 이미지 보안전송, 현위치 전송 플러그인 등

        • 봇 응답형식의 플러그인
          • 카카오톡 채널과 관련된 컨텐츠 연결을 보조
          • 채널과 채널의 쿠폰을 함께 노출하고 싶은 경우 설정 가능
            • 챗봇을 운영하는 카카오톡 채널을 말하는 건가?
        • 공유하기 플러그인
          • 카카오톡 친구에게 해당 말풍선을 공유할 수 있음
        • 카카오톡 채널 포스트 플러그인
          • 채널에 등록된 포스트로 이동할 수 있음
        • 상담직원 연결
          • 채널의 상담직원과 연결할 수 있음
      • 스킬

        • 블록과 유사하지만 추가적인 정보가 필요한 경우
        • 하나하나 대답하는 것보다 한 번에 몰아서 대답하는 게 나은 경우
        • ex) 많은 양의 상품을 장바구니에 담아 주문하는 경우
        • 블록 : 1번 상품을 장바구니에 담았습니다, 2번 상품을...
        • 스킬 : 1,2,3,4,5,6 번 상품의 주문이 완료되었습니다.
        • 중간중간 주문을 추천하거나 사용자 정보를 토대로 경고할 수 있음
        • 데이터
          • 데이터 사용 시
          • 블록 응답 일부를 스킬 서버의 데이터로 치환 가능
          • ex) hh시 mm분 현재 환율은 xxx원입니다
            • 시, 분, 환율만 스킬 서버에서 가져와서 응답할 수 있음
        • 사용법
          • 스킬 서버 생성 -> 스킬 서버의 엔드포인트 등록
          • ex) localhost가 스킬 서버 주소인 경우
          • ex) localhost://usr/article/list 에서 응답이 가능
          • ex) => 이 경우 localhost://usr/article/list가 엔드포인트
          • 스킬이 활성화될 경우, 스킬에 등록된 엔드포인트에 요청이 전송
          • 스킬 서버의 응답을 챗봇이 변환해서 카카오톡에 출력