PM 혹은 서비스기획자로 살아보자

카카오 챗봇 개념 공부 (2) : 시나리오, 블록, 파라미터 설정

유니 Uni 2022. 8. 16. 12:34
반응형

이제 남은 개념들 중 내게 필요한 것만 간단하게 정리하고자 한다.

 

https://i.kakao.com/docs/key-concepts-scenario#%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4%EC%9D%98-%EC%A2%85%EB%A5%98

 

챗봇 관리자센터 개요 · 도움말 - 챗봇 관리자센터

<h2><a class="anchor" aria-hidden="true" id="챗봇-관리자센터-소개"></a><a href="#챗봇-관리자센터-소개" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width

i.kakao.com

마찬가지로 공식문서를 읽고 정리하는 것. 공식문서 짱!

 

시나리오 / 블록

- 시나리오(Scenario) : 봇 안에서 사용자가 경험할 수 있는 서비스 단위

- 블록(Block) : 사용자의 의도(Intent)를 응대하는 가장 작은 단위, 하나의 시나리오는 여러개의 블록으로 구성

 

대략 이렇지 않나

기본 시나리오

출처 : 공식문서

커스텀 시나리오

관리자센터

관리자에서 이런 식으로 시나리오를 추가/제거 할 수 있다.

 

시나리오 공통 설정

- 되묻기 질문 : 봇이 필수 파라미터를 얻을 때까지 다시 물어보는 질문

- 봇 제네릭 메뉴 : 챗봇 안에서 하단에 슬라이드 메뉴 형태로 존재하는 사용자 인터페이스

이런 식으로 메뉴를 추가할 수 있다

(나는 필요없지만) 상업적으로 사용하는 경우, 상담직원 연결하기 기능을 추가할 수 있다. 상담톡에서 자주보는 기능!

 

 

파라미터 설정

우리 챗봇에서 굉장히 중요한 부분이다.

왜냐하면 핵심 기능 세가지 모두 사용자가 '롤 닉네임'을 직접 입력해주어야 하기 때문이다.

 

필수 파라미터!

파라미터는 이렇게 세 가지로 구성된다.

- 파라미터명 : 구분 명

- 엔티티 : 발화에 매핑된 엔티티를 파라미터에 연결하는 역할

- 값 : 엔티티 값 / 특정 값 / 고정 값

어렵다

 

- 엔티티 값 : ‘$’로 시작하는 이름으로 구성된 값

사용자 명령에서 추출해서 대표 엔트리로 변환하여 Skill에 전달하는 것이다.

 

예를 들어, 커피 이름을 입력하면 가격을 반환하는 스킬이 있다고 하자~ (사실 이건 스킬 필요업슴)

값에 엔티티 값(ex. $coffee_name)을 넣어주면, 아메리카노 (=ㅇㅏ메리카노=아매리카노,americano,....)라는 걸 알기 때문에,

사용자가 오타를 내서 'ㅇㅏ메리카노'라고 입력해도 찰떡같이 아메리카노의 가격을 리턴할 수 있는 것이다.

 

 

- 특정 값 : 값 위치에 ‘#’으로 시작하는 이름으로 구성된 값 / 'current'를 통해 현재 대화의 발화 내용에 접근 가능 / ‘request payload’의 특정 path 값 

 

특정 값 예시 (1) : current
#[current|contextName].[path].[to]
특정 값 예시 (2) : request payload의 path
아래 코드블락이 request payload의 구조일 때, 운세를 가져오고 싶다면? (thx to 킹갓개발자 isaac)
#[action].[params].[entity_zodiacName]
{
    "userRequest": {
        "makerId": "june.kay",
        "user": {
            "id": "1",
            "type": "accountId"
        },
        "chatId": "chatchat",
        "utterance": "오늘 용띠 운세 좀",
        "device": null,
        "params": null
    },
    "bot": {
        "id": "f6a2a947-7b55-4bdb-b36e d9eac9fe9aca",
        "name": "노래봇"
    },
    "intent": {
        "id": "af5fb347-ce65-483e-ae2d-dedeb5f97a68",
        "name": "띠찾아"
    },
    "action": {
        "id": "88254013-1581-44bc-a4b2-ccfb69327ca9",
        "name": "fortune.desc",
        "params": {
            "entity_toTime": "2017-06-01T12:00:21+0900",
            "entity_zodiacName": "용띠",
            "entity_fromTime": "2017-06-01T12:00:21+0900",
            "intent": "informZodiacFortune"
        },
        "detailParams": {
            "entity_toTime": {
                "origin": "오늘",
                "value": "2017-06-01T12:00:21+0900"
            },
            "entity_zodiacName": {
                "origin": "용띠",
                "value": "용띠"
            },
            "entity_fromTime": {
                "origin": "오늘",
                "value": "2017-06-01T12:00:21+0900"
            },
            "intent": {
                "origin": "informZodiacFortune",
                "value": "informZodiacFortune"
            }
        }
    }
}

 

- 고정된 값 : ‘$’ 이나 ‘#’ 으로 시작하지 않는 값 /값 자체가 실제 파라미터의 값으로 사용 / 걍 넣는 것임

 

 

하지만 필수 파라미터가 채워지지 않을 경우?

- 슬롯필링 : 파라미터가 ‘필수’임에도 값이 채워지지 않았을 때, 해당 ‘파라미터 값’을 채우기 위해서 ‘되묻기 질문’을 사용하여 사용자와 대화를 시도하는 과정

 

 

 

 

다음에는... 스킬...

그리고 응답 모양...설정

많관부

 

 

이전글

2022.08.16 - [PM 혹은 서비스기획자로 살아보자] - 카카오 챗봇 개념 공부 : (1) 엔티티 정의와 등록 방법 (feat. 사이드프로젝트 롤 챗봇)

 

카카오 챗봇 개념 공부 : (1) 엔티티 정의와 등록 방법 (feat. 사이드프로젝트 롤 챗봇)

서론 사이드로 기존에 만들었던 챗봇을 심폐소생하려고 하는데 개념을 다 까먹어버렸다. 만들었던 당시보다 가이드가 많이 발전되어 있어서 챗봇의 기본 개념부터 익혀보고자 한다. https://i.kaka

kingged-uni.tistory.com

 

반응형