본문 바로가기
Web/Kakao developers

[2021.04.07~13] 인턴 +37 카카오 챗봇 개념 정리

by injekim97 2021. 4. 7.
반응형

[2021.04.07~13] 인턴 +37  카카오 챗봇 개념 정리

 

 

i.kakao.com/docs/key-concepts-entity

-> Kakao Chatbot docuemnt를 보고 정리할 것이다.

 

 

 

카카오톡 채널 챗봇이란?
-> 카카오톡 채널을 통해 제공되는 대화형 인터페이스의 챗봇(Chatbot)을 의미

 

 

챗봇 구조(카카오 i 오픈 빌더)

 

 

 

카카오톡 챗봇(카카오 i 오픈 빌더)을 사용하기 위해서는?
1. 카카오 계정을 준비
2. 카카오 비즈니스를 가입
3. OBT신청(OBT 신청 결과는 카카오 계정의 이메일로 고지됩니다.)
-> OBT 신청이 승인이 되어야, 카카오톡 챗봇 만들기가 가능함.

 

 

 

 

 

카카오톡 챗봇(카카오 i 오픈 빌더) - 개념들

 

엔티티

-> 봇이 이해할 수 있는 용어를 체계적으로 정리한 데이터 사전

-> 엔티티가 정의되어 있다면, 봇은 사용자 발화로부터 사용자의 의도에 맞는 동작 수행을 위한 주요 데이터를 추출 O

 

 

* 엔티티 - 사용자 발화란?
-> 사용자가 봇과 커뮤니케이션하기 위해 텍스트(말) 등을 의미

-> 챗봇의 경우에는 입력하는 텍스트 데이터

-> 사용자 발화는 블록 내 [사용자 발화 패턴 설정] 영역을 통해 입력 가능

 

 

 

 

* 엔티티의 구조

 


-> 구조를 미리 설계한 후, 발화 등록 작업을 진행하면 제작 과정이 훨씬 수월하다.

* '나의 엔티티' 구조 : 사용자가 정의할 수 있는 엔티티는 [엔티티명], [대표 엔트리], [동의어] 총 세 가지 요소로 구성

 

* 엔티티의 종류
->엔티티는 작업자가 직접 정의하는 '나의 엔티티'와 자주 사용하는 엔티티를 미리 정의해놓은 '시스템 엔티티'로 나뉨

 

'나의 엔티티' (작업자가 직접 정의하는 나의 엔티티)

-> 봇이 알아 들어야 하는 주요 용어들을 대표 엔트리로 설정할 수 있으며, 동의어를 추가할 수도 있습니다.
* 봇을 생성한 직후에는 '시스템 엔티티'만 설정되어 있기 때문에 알아들을 수 있는 용어가 제한적
* '나의 엔티티'를 잘 정의하여 많은 용어를 이해할 수 있도록 해야 함

 

 

 

* 나의 엔티티

-> 작업자가 직접 설정한 엔티티

 

-> 작업자에 의해 등록된 엔티티 리스트가 보임 

-> 엔티티는 대표 엔트리를 입력한 후 '동의어'를 입력하는 방식으로 데이터를 완성

-> 동의어를 추가로 등록할 경우 사용자 입력 발화에서 봇이 인식하는 엔티티의 범위를 넓힐 수 있음

* 동의어로 엔티티가 인식될 경우, 해당 대표 엔트리가 최종 값으로 인식되어, 발화 입력 화면에서 출력

 

 

 

-> 엔티티는 '대표 엔트리(왼쪽)'와 '동의어(오른쪽)'로 구성

* CSV 파일 형식으로 대량의 엔트리를 손쉽게 등록 가능

엔티티(example).csv
0.00MB

* CSV 파일은 CSV - utf-8로 저장해줘야 함.(파일 열어서 다른 이름으로 저장)

 

 

* 시스템 엔티티
-> 오픈 빌더에서는 날짜, 시간, 지명과 같이 일반적, 공통적으로 통용되는 개념들에 대해서는 작업자가 일일이 입력할 필요가 없도록 미리 정의해 둔 엔티티들을 제공함 -> 이것을 ‘시스템 엔티티’ 라 말함.

 

-> '시스템 엔티티'는 엔티티명 앞에 sys.라는 단어로 시작합니다

 

 

 


시스템 엔티티 예시

엔티티명 설명 예시 발화 예시
@sys.date '날짜'에 해당하는 엔티티를 태깅합니다. 오늘, 내일, 어제, 2018년 1월15일, 1월 1일, 수요일 오늘 뉴스 들려줘
1월 1일은 무슨 요일이야
@sys.date.period 날짜 중에서 '기간 범위'에 해당하는 엔티티를 태깅합니다. 이번주, 올해, 주말, 2019년, 1월, 1일부터 10일까지 이번주 사수자리 운세 알려줘
올해 무슨 해야
@sys.date.lunar 날짜 중에서 '음력'에 해당하는 엔티티를 태깅합니다. 음력 1월1일, 음력 2019년 5월 5일, 올해 음력 5월 16일, 음력 설날 음력 1월 1일이 언제야
음력 2019년 5월 5일 양력으로 며칠이야
@sys.date.period.lunar 날짜 중에서 '음력 기간'에 해당하는 엔티티를 태깅합니다. 음력 1월, 음력 6월, 음력 8월 정월은 음력 1월을 말합니다
음력 8월은 음력에서 여덟 번째 달이다
@sys.time '시간'에 해당하는 엔티티를 태깅합니다.
※시간흐름에 따른 date 정보 속성값도 포함됨
30분, 7시, 10분 뒤, 오전 6시, 30초, 정오 7시 알람 맞춰줘
알람 정오 지워줘
@sys.time.period 시간 중에서 '시간대'에 해당하는 엔티티를 태깅합니다.
※시간흐름에 따른 date 정보 속성값도 포함됨
오전, 아침, 새벽, 저녁, 1시부터 2시까지 오전 알람 삭제해줘
아침 뉴스 틀어줘
@sys.date.time 날짜 중에서 '날짜와 시간' 조합에 해당하는 엔티티를 태깅합니다. 내일 7시, 현재, 모레 오후 11시, 내일 오전 7시, 오늘 1시, 1월1일 오후 2시 내일 7시 알람 맞춰줘
현재 상영작 알려줘
@sys.date.time.period 날짜 중에서 '기간 범위와 시간' 조합에 해당하는 엔티티를 태깅합니다. 오늘 낮, 내일 오전, 모레 오후, 어젯밤, 월요일 오후, 오늘 1시부터 2시까지, 1월1일 9시부터 10시 오늘 낮 날씨 어때
내일 오전 알람 꺼
@sys.number '숫자'에 해당하는 엔티티를 태깅합니다. 1, 삼, 다섯, 열명, 30개 삼 더하기 삼
볼륨 다섯 키 낮춰 줘
@sys.number.times 숫자 중에서 '회차'에 해당하는 엔티티를 태깅합니다. 11회차, 40회, 1화, 2부, 1편, 3차, 834회 미우새 1부 틀어줘
로또 당첨 번호 제 834회 알려줘
@sys.number.percent 숫자 중에서 '퍼센트'에 해당하는 엔티티를 태깅합니다. 20퍼센트, 30프로, 백퍼센트, 50% 블라인드 20퍼센트 정도 열어줘
블라인드 30프로만 내려줘
@sys.number.ordinal 숫자 중에서 '순서'에 해당하는 엔티티를 태깅합니다. 1번, 첫 번째, 열 번째, 백 번째 플레이리스트 1번 틀어줘
네 번째 playlist 재생
@sys.number.age 숫자 중에서 '나이'에 해당하는 엔티티를 태깅합니다. 1살, 18세, 스무살, 20세 내 아이는 1살입니다
스무살에 대학에 입학했어요
@sys.number.birthyear 숫자 중에서 '출생년도'에 해당하는 엔티티를 태깅합니다. 1995년생, 85년생, 72년도생 1996년생 운세 알려줘
87년생 운세 알려줘
@sys.number.decade 숫자 중에서 '년대(~년대)'에 해당하는 엔티티를 태깅합니다. 1900년대, 2000년대, 80년대, 90년대 90년대 인기 팝 들려줘
1990년대 발라드 틀어줘
@sys.number.album 숫자 중에서 '앨범(~집)'에 해당하는 엔티티를 태깅합니다. 1집, 2집, 3집, 10집 winner 2집 재생해줘
자우림 10집 틀어줘
@sys.number.rank 단위 중에서 '순위'에 해당하는 엔티티를 태깅합니다. 1위, 100위, 1등 실시간 이슈 10위 알려줘
멜론 차트 10위부터 틀어줘
@sys.unit.duration 단위 중에서 '기간/시간'을 의미하는 엔티티를 태깅합니다. 1시간, 1시간 반, 1개월, 4주, 일주일, 이주일, 5년 2개월, 5개월, 5개월 20일, 이틀, 30분 동안, 3일동안, 4분 30초동안 1시간 타이머 시작
빗소리 10분 동안 틀어줘
@sys.unit.length 단위 중에서 '길이'에 해당하는 엔티티를 태깅합니다. 5mm, 1cm, 10cm, 1m, 1km, 100km, 1야드, 100피트, 20인치, 1마일 1m 간격으로 앉아주세요
서울부터 부산까지 거리는 325km입니다
@sys.unit.area 단위 중에서 '넓이'에 해당하는 엔티티를 태깅합니다. 1제곱미터, 25m², 100km², 1헥타아르, 200헥타아르, 1yd², 200ft², 25평, 30에이커 서울의 면적은 605.2km²입니다
152 제곱미터는 몇 제곱킬로미터입니까
@sys.unit.weight 단위 중에서 '무게'에 해당하는 엔티티를 태깅합니다. 1g, 1kg, 10kg, 100mg, 100g, 1톤, 100파운드, 10온스, 7그레인, 1돈, 1근, 10냥, 10관 1kg 상자에 넣어주세요
금 1돈은 정확히 3.75 그램입니다.
@sys.unit.volume 단위 중에서 '부피'에 해당하는 엔티티를 태깅합니다. 1세제곱미터, 1cc, 10ml, 500ml, 10데시리터, 1리터, 100cc, 1갤론, 100cm³, 10m³, 10in³, 10ft³, 1yd³, 1홉, 1되, 1말 물 1세제곱미터는 약 1 톤 물의 중량이다
1cc는 0.001 리터를 의미한다
@sys.unit.pressure 단위 중에서 '압력'에 해당하는 엔티티를 태깅합니다. 1기압, 20프사이, 20파스칼, 20헥토파스칼, 20킬로파스칼, 20메가파스칼, 100밀리바, 100바, 1수은주밀리미터, 1mmH₂O, 10inHg, 10inchH₂O 1기압은 몇 파스칼입니까?
1bar는 100kPa 입니다.
@sys.unit.temperature 단위 중에서 '온도'에 해당하는 엔티티를 태깅합니다. 17°c, 20도, 33.8°f 거실 난방 20도로 맞춰줘
거실 난방 온도 22도로 맞춰줘
@sys.unit.speed 단위 중에서 '속도'에 해당하는 엔티티를 태깅합니다. 100m/s, 1마하, 10km/h, 1knot 100m/s는 0.1km/s 입니다
10000km/h는 8.17마하입니다..
@sys.unit.data 단위 중에서 '정보(데이터량)'에 해당하는 엔티티를 태깅합니다. 1바이트, 100기가바이트, 100GB, 1TB 1바이트는 8비트 입니다
1TB는 1024GB입니다.
@sys.unit.energy 단위 중에서 '에너지 단위'에 해당하는 엔티티를 태깅합니다. 1헤르츠, 1킬로헤르츠, 1메가헤르츠, 1기가헤르츠, 100데시벨, 10ampre, 10암페어, 10마력 1Mhz는 1000kHz 입니다
@sys.unit.currency 단위 중에서 '통화'에 해당하는 엔티티를 태깅합니다. 천원, 5천원, 1달러, 100엔, 100위안, 1유로, 오백 파운드, 1파운드, 10프랑, 10센트 1달러 환율이 어떻게 돼?
1파운드가 한화로 얼마야
@sys.text 되묻기 상황에서 '유저가 입력한 문장 전체'를 태깅합니다.    
@sys.location 지역 중에서 '국내 지역'에 해당하는 엔티티를 태깅합니다. 제주도, 강원도, 서울, 송파구, 잠실동 제주도 날씨 알려줘
내일 강원도 날씨
@sys.nation '국가명'에 해당하는 엔티티를 태깅합니다. 대한민국, 프랑스, 일본, 영국, 미국 1월 7일 대한민국 날씨 알려줘
지금 프랑스 파리 몇시야?
@sys.state 지역 중에서 '해외 주 단위'에 해당하는 엔티티를 태깅합니다. 캘리포니아, 버몬트, 뉴저지, 콜로라도 지금 캘리포니아 몇 시야
미국 뉴저지 시간은 어떻게 돼요
@sys.city 지역 중에서 '해외도시명'에 해당하는 엔티티를 태깅합니다. 뉴욕, 도쿄, 워싱턴 D.C., 베이징, 런던 오늘 뉴욕 날씨 좋아?
워싱턴 D.C.와 베이징의 시차 알려줘
@sys.fortune.starsign '별자리 이름'에 해당하는 엔티티를 태깅합니다. 물병자리, 물고기자리, 게자리 이번주 물병자리 운세 알려줘
1월 이달의 사자자리 운세 어때
@sys.fortune.zodiac '띠 이름'에 해당하는 엔티티를 태깅합니다. 돼지띠, 쥐띠, 소띠 이번주 돼지띠 운세 알려줘
토끼띠는 몇 년생이야
@sys.person.name '인물 : 개인'에 해당하는 엔티티를 태깅합니다. 아이유, 박지성, 김광석 아이유 인기곡 들려줘
박지성에 대해서 알려줘
@sys.person.group '인물 : 그룹명'에 해당하는 엔티티를 태깅합니다. 엑소, exo, 퀸, queen, 블랙핑크, blackpink, 방탄소년단, bts 방탄소년단 최신 앨범 틀어줘
퀸 1991년 앨범 틀어줘
@sys.currencyname '통화명'에 해당하는 엔티티를 태깅합니다. 달러, 엔, 유로, 오스트레일리아달러, 베트남동, 파운드 미국의 통화는 달러입니다
영국의 화폐단위는 파운드입니다.
@sys.currency.code '통화 코드'에 해당하는 엔티티를 태깅합니다. USD, JPY, EUR, AUD, VND, GBP, ZWD 일본 화폐인 '엔'의 통화코드는 JPY입니다.
@sys.sports.name 스포츠 정보 중에서 '종목명'에 해당하는 엔티티를 태깅합니다. 야구, 축구, 태니스, 태권도 오늘 축구 경기 있어?
내일 야구 일정 알려줘
@sys.sports.league 스포츠 정보 중에서 '리그명'에 해당하는 엔티티를 태깅합니다. 프리미어리그, NBA, KBO리그, mlb 작년 프리미어리그 순위 알려줘
이번달 KBO리그 경기 있어?
@sys.sports.team 스포츠 정보 중에서 '팀명'에 해당하는 엔티티를 태깅합니다. 리버플, 토트넘, 맨체스터 유나이티드, KIA 타이거즈 2018년 1월15일 리버풀 경기 알려줘
토트넘 경기에 손흥민 나왔어?
@sys.sports.stadium 스포츠 정보 중에서 '경기장'에 해당하는 엔티티를 태깅합니다. 잠실 종합 운동장 야구장, 수원 월드컵 경기장, 대구 스타디움, 문학 경기장 상암월드컵 경기장 축구 경기 있어?
대구 스타디움 경기장 오늘 일정 없어?
@sys.tv.name TV 정보 중에서 '프로그램명'에 해당하는 엔티티를 태깅합니다. 무한도전, 라디오 스타, 런닝맨 오늘 라디오 스타에 누구 나와?
런닝맨 멤버 알려줘
@sys.tv.channelname TV 정보 중에서 '채널명'에 해당하는 엔티티를 태깅합니다. tvn, mbc, kbs 1tv, ocn, jtbc 지금 tvn에서 뭐 해?
mbc 편성표 알려줘
@sys.radio.name 라디오 정보 중에서 '프로그램명'에 해당하는 엔티티를 태깅합니다. 음악캠프, 정오의 희망곡, 별이 빛나는 밤에, 정지영 라디오 배철수의 음악캠프에 나온 노래 들려줘
정지영 라디오 선곡표 들려줘
@sys.radio.channelname 라디오 정보 중에서 '채널명'에 해당하는 엔티티를 태깅합니다. MBC FM 4u, SBS 러브FM, kbs1 라디오 mbc fm 4u 틀어줘
sbs 파워 fm 틀어줘
@sys.movie.name 콘텐츠 정보 중에서 '영화명'에 해당하는 엔티티를 태깅합니다. 신과 함께, 킹스맨, 어벤져스 인피니티 워 신과 함께 관객수 알려줘
영화 킹스맨 장르 알려줘
@sys.organization.name 콘텐츠 정보 중에서 '제작사'에 해당하는 엔티티를 태깅합니다. 디즈니, 월트디즈니픽쳐스, 마블 스튜디오, 롯데엔터테인먼트 디즈니에서 제작한 영화 알려줘
마블 스튜디오에서 만든 영화 뭐 있어?
@sys.theater.name 콘텐츠 정보 중에서 '극장명'에 해당하는 엔티티를 태깅합니다. CGV천호점, 메가박스, 롯데시네마 cgv천호점 상영영화 알려줘
메가박스 개봉작 알려줘
@sys.broadcast.name 콘텐츠 정보 중에서 '방송사'에 해당하는 엔티티를 태깅합니다. KBS, MBC, SBS, 극동방송, 불교방송 극동방송 틀어줘
불교방송 틀어 주세요
@sys.url 문장에서 'URL'에 해당하는 패턴을 태깅합니다. https://www.kakaocorp.com, http://www.kakaocorp.com, www.kakaocorp.com 카카오의 공식사이트는 https://www.kakaocorp.com 입니다.
@sys.bussiness.number 문장에서 '사업자등록번호'에 해당하는 패턴을 태깅합니다. 120-81-47521 카카오의 사업자등록번호는 120-81-47521 입니다.
@sys.phone.number 문장에서 '전화번호'에 해당하는 패턴을 태깅합니다. 010-1234-5678, 02-2456-7890 전화번호는 010-1234-5678 입니다.
@sys.licenseplate.number 문장에서 '차량번호'에 해당하는 패턴을 태깅합니다. 12 가 1234, 123 가 1234 차량번호는 12 가 1234 입니다.
123 가 1234 번호가 제 차량입니다.

 

 

 

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

EX) 금융과 관련된 서비스를 제공하는 봇이 있다고 가정

-> 봇이 제공할 수 있는 시나리오(서비스 단위)는 ‘예금’, ‘적금’, ‘대출’, ‘연금’, ‘방카슈랑스’ 등이 될 수 있습니다.

* 오픈빌더에서는 사용자의 의도(Intent)를 응대하는 가장 작은 단위를 블록(Block)이라고 말함.

* 하나의 시나리오는 다양한 블록들이 모여서 이루어짐

 

 

 

* 시나리오의 종류

 

기본 시나리오

-> 모든 봇에 장착되어 있으며, 다음의 3개 블록을 항상 포함하고 있음

 

 

커스텀 시나리오
-> 봇 작업자가 서비스 단위 등으로 구분하며 지속 생성할 수 있음

* + 버튼을 누르면 사진처럼 ‘커스텀 시나리오’를 계속해서 생성할 수 있음

 

 

 

 

* 시나리오 설정

-> 메뉴에서 모든 시나리오에 공통적으로 적용할 수 있는속성을 정의할 수 있음

 

-> 시나리오 설정 메뉴 위치 : 현재 봇 작업자는 다음과 같이 두 가지 시나리오 속성을 정의할 수 있음

 

 

 

* 되묻기 질문
-> 대표적으로 봇 작업자가, 봇이 사용자로부터 특정 정보 (= ’ 파라미터 값’)를 획득까지 물어보는 질문을 ‘되묻기 질문’이라고 하며, 이를 본 설정 메뉴 안에서 직접 정의할 수 있음.


최대 횟수(8회까지) 및 초과 시 안내 메시지
되묻기 대기 시간 (10분/20분/30분/60분/120분) & 초과시 안내 메시지,

 

-> 시나리오 공통 설정 안에서, 블록 공통 되묻기 질문 속성을 각각 클릭하여 정의할 수 있음

 

 

 

* 봇 제네릭 메뉴
-> 카카오톡 챗봇 안에서 하단에 슬라이드 메뉴 형태로 존재하는 사용자 인터페이스를 의미함

-> 챗봇 사용자가 아래에서 위로 해당 공간을 쓸어 올려 언제나 중요 필수 메뉴를 쉽게 접근할 수 있도록 하는 메뉴

* 봇 작업자는 공통 설정 안에서 제네릭 메뉴에 사용 여부를 스위치 On/Off 형태로 간편하게 세팅 가능

 

* 개발 채널을 연결해야 노출되며, 수정을 한 뒤 배포를 해야 운영 채널의 제네릭 메뉴에 반영됨
* 설정 후 노출될 때까지 일정 시간이 필요

 

 

 

 

 

* 제네릭 메뉴에서 ‘상담직원 연결’ 설정하기

 

 

'상담직원 연결' 버튼을 사용하기 위해서는 봇에 연결된 채널이

1) 채널관리자센터의 1:1 채팅

2) 상담 톡 기능을 사용하고 있어야 함.


* ’ 상담직원 연결’ 기능을 사용하기 위해서는 아래 조건을 충족해야 함.
-> 운영 채널과 개발 채널을 모두 연결해야 함
-> 운영 채널과 개발 채널에의 1:1 채팅 또는, 상담 톡이 모두 ON 



* 개발 채널에 상담 톡을 연결하여 봇 제네릭 메뉴를 테스트하실 경우 상담톡 api를 제공하는 딜러사에 비과금 개발 채널 > 생성을 요청해야 함. (임의로 채널 생성 후 테스트 시 상담 톡 사용료가 과금될 수 있습니다)


제네릭 메뉴 내 '상담직원 연결' 버튼 on/off 설정하기
-> 설정은 채널 관리자센터 > 채널 > 관리 > 상세 설정 > 채널 채팅방 > 봇 제네릭 메뉴 설정 > 상담직원 연결 메뉴 

* 상담직원 연결 메뉴는 해당 채널이 상담 톡을 사용하는 경우에만 노출됩니다.
* 오픈 빌더 > 시나리오 설정 > 제네릭 메뉴에서 보이는 화면은 개발 채널과 연동된 내용으로, 운영 채널에서의 on/off 여부는 실제 카카오톡에서 확인 가능합니다.


-> 제네릭 메뉴 적용의 모습 (예시 : 카카오고객센터 카카오톡 채널 챗봇)

 

 

블록(Block)이란?

-> 사용자 의도의 기본 단위로, 인텐트(Intent)라고도 불려짐

-> 1개의 블록은 1개의 의도를 표현하며, 미리 봇 개발자가 사전에 등록한 발화 내용이, 사용자 의도에 맞게 파악되어 1개 블록을 출력함.


EX) 주로 ‘날씨 알려주기, 메시지 보내기, 지역 검색하기’와 같이 봇의 수행 미션(Task) 단위로 블록이 설계

 

* 블록 작동 원리

-> 사용자 발화를 기반으로, 화자의 의도에 해당하는 블록이 추출되고 출력으로 이어져 실행되는 모습

 

 

 

 

 

 

* 블록의 구성 (화면 구성)

블록 설정 화면

-> 봇 작업자들은 위와 같은 블록 작성 화면에서 사용자 예상 발화 및 봇 응답 형식을 설정

 

 

주요 기능 구성
-> 사용자 발화 패턴
-> 파라미터
-> 봇 응답 형식
-> 스킬
-> 컨텍스트

 

 

블록의 종류

 

기본 블록
-> 봇이 구동할 때 필요한 최소한의 이벤트를 정의한 블록

-> 봇 생성 시 자동으로 생성되고 삭제가 불가능하며, 시나리오 메뉴에 있는 ‘시나리오 설정’에서 수정이 가능

 

웰컴 블록(Welcome Block)
-> 사용자가 봇을 처음 사용할 때 받게 되는 웰컴 메시지를 설정하는 블록

-> 웰컴 블록의 설정 모습

 

* '웰컴 블록'이 '사용 중'일 경우, 사용자가 봇을 처음 사용할 때 웰컴 블록에 설정된 응답이 전송

* '미사용'일 경우, 응답을 설정하는 부분이 비활성화되고 OFF로 표기됩니다.

 

-> 웰컴 블록이 미사용 일 때 모습

 

폴백 블록(Fallback Block)

-> 사용자의 발화 의도가 어떠한 블록과도 매칭이 되지 않을 때 (=봇이 사용자의 발화 의도를 이해하지 못할 때)의 응답을 설정하는 블록

 

-> 폴백 블록의 응답 설정 모습

 

 

탈출 블록(Exit Block)
-> 봇의 되묻기 상황에서 사용자가 대화를 초기화하거나 탈출하고 싶을 때 쓰는 사용자 명령어를 정의하는 블록

-> 탈출 블록의 사용자 명령어 입력 설정 모습

 

 

시나리오 블록
-> 봇 작업자가 설계한 대로 봇을 제작할 수 있는 일반적인 블록

 

 

발화 패턴이란?
-> 챗봇을 만들 때, 챗봇이 사용자 발화를 인식할 수 있도록 만드는 원리의 핵심은 패턴(Pattern)

-> 챗봇 작업자가 외부 사용자들이 ‘이렇게 말할 것이다’라고 예상되는 발화 문을 등록

-> 블록 내 ‘사용자 발화 패턴 설정’ 입력 공간

 

 

 

 

-> 그 후 해당 문장 안에서 중요한 의미(또는 정보)를 갖는 부분을 엔티티로 태깅

-> 이렇게 발화 패턴을 등록해주면, 챗봇은 사용자가 조금씩 다르게 말하더라도 각각의 ‘의도’에 해당하는 블록을 선택해 보여줄 수 있다.

 

 

 

파라미터란?

-> 봇과의 대화 대부분은 파라미터 데이터를 채우는 작업

-> API 형태로 구성된 스킬(Skill)은 데이터가 입력되면, 들어온 데이터에 맞는 다양한 결괏값을 보내줌

* 이때, 스킬에 보내지는 데이터 또한 파라미터입니다.

스킬을 제작하는 작업자는 필요한 파라미터 등에 대한 내용을 정의

EX) ‘지역별 날씨를 알려주는 스킬’을 제작했다면, 지역명을 스킬로 보내게 되고, 실제 날씨정보를 출력해서 보내줌

여기에서 스킬로 보내지는 지역 정보를 ‘파라미터 데이터’로 볼 수 있음

 

 


봇 빌더에 들어가는 파라미터 값

-> 파라미터 생성 및 수정 팝업

 

 

 

파라미터 구성 요소

 

파라미터 명

-> 파라미터를 구분하는 이름

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

-> 발화 입력 시 유효한 엔티티가 있는 경우에는 추천되고, 선택하여 태깅이 가능(여기서 태깅이 무슨 의미인지 모름)


-> ‘동작’ 영역에서 ‘값’은 ‘엔티티’를 통해서 채우거나 이전 또는 현재의 정보에 접근해서 값을 채울 수 있음

-> 값을 사용하기 위한 표현법은 엔티티 값, 특정 값, 고정된 값으로 다양하게 있음


엔티티 값

-> ‘$’로 시작하는 이름으로 구성된 값
-> 주로, 파라미터 이름과 동일하게 사용
ex) $paramName1, $paramName2, ….

 

 

특정 값

-> 값 위치에 ‘#’으로 시작하는 이름으로 구성된 값
-> ‘current’를 사용해서 접근할 수 있는 값은 현재 대화의 발화 내용
-> ‘request payload’의 특정 path 값  ex) #[current|contextName].[path].[to]

 

 

고정된 값

-> ‘$’이나 ‘#’으로 시작하지 않는 값
-> 값 자체가 실제 파라미터의 값으로 사용

 

 

기본값
-> 필수 파라미터로 지정되지 않고 사용자의 발화나 이전 또는 현재의 특정 값을 참조하거나, 고정된 값이 설정되어 있지 않을 경우에 ‘기본 값’으로 채택해 사용되는 기본적인 값

 

 


파라미터 검증 API

 

-> ‘검증/변환’ 등의 작업을 스킬로 요청을 보내기 이전에 수행할 때 사용되는 항목

-> 작업이 이루어질 때, 파라미터에 채워진 값이 ‘HTTP’ 요청의 ‘payload’로 사용됨

-> 파라미터 팝업 내 검증 API 설정 영역

 

 

 

그룹 파라미터

-> 기본적으로 하나의 파라미터는 하나의 엔티티와 연결되며 각 블록 안에서 유일한 이름을 가짐

-> 그룹 파라미터는 동작을 수행하는 데 필요한 정보가 그룹 내 하나만 해당해도 실행하는데 문제가 없을 때 주로 사용

-> 그룹 파라미터 대상 설정 팝업

 

 

 

-> 그룹 파라미터로 묶인 형태

-> 2개 이상의 파리 미터의 집합으로 이루어지며 ‘그룹 파라미터’로 구성되는 순간, 해당 그룹은 ‘필수 파라미터’가 됩니다. 이 중에 하나 이상의 엔티티가 채워지면 슬롯 필링이 완료됩니다.

 

 

슬롯필링

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

-> 이 과정이 존재하는 이유는 스킬 별로 반드시 필요한 값들이 존재하는데 그 값을 채워 스킬을 호출하기 위해서 


 

 

 

파라미터에 연결된 스킬 실행 과정
Request payload 구성
-> 연결된 스킬의 실행은 모두 ‘HTTP request’로 이루어 짐

-> HTTP method 중 ‘POST’만을 지원하고 있으며, ‘request/response’ 값에 모두 JSON형태를 사용

* ‘Request payload’는 동작에서 정의한 파라미터들의 구성에 따라서 ‘JSON’의 구성이 달라집니다.

 

 

 

payload란?
-> HTTP 요청을 보낼 때, 포함되는 데이터를 payload라고 합니다.

->payload는 JSON 형태를 가지고 있으며 JSON을 구성하는 키는 파라미터 이름이고, 값은 추출된 값이 됩니다.

-> HTTP 요청에 대한 응답도 JSON의 형태를 갖고 출력 영역으로 전달되고 사용될 수 있습니다.

-> ‘Payload’는 파라미터들이 ‘key value’ 형태로 JSON을 기본 구성하고 여기에 ‘user request’의 일부 항목과 누적된 콘텍스트 정보입니다.

 

 

 

 

Skill request body

-> 위의 사진(코드)을 복붙 했을 때

 

{ "userRequest": [REQUEST OBJECT], "bot": { "id": "bot id", "name": "bot name" }, "action": { "id": "action id (uuid)", "name": "builder에서 등록한 이름", "params": { "param name" : "resolved value" .... } "detailParams": { "param name" : { "origin": "origin value in utterance", "resolved": "resolvedValue from NLU engine"},... } } }

 

 

{ "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" } } } }

 

 

{ "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" } } } }

 

 

 

 

 

개발자를 위한 심화단계
API 파라미터 설명
-> 파라미터들 중, AIU(NLU)를 통해서 resolve 된 케이스와 컨텍스트를 통한 레퍼런스 접근, 그리고 사용자 발화(Utterence)에서 뽑힌 값들에 대해서 지정된 API를 통해서 스킬의 payload로 만들어져 보내지기 전에 값을 확인 및 resolve/validation/transform을 수행할 수 있는 기능을 제공

실제 되는 형태
-> 값이 채워진 파라미터들 중, API 사용에 대한 메타 데이터(API URL, error message)가 등록된 파라미터에 대해서 아래의 미리 정해진 스펙으로 HTTP request / response를 통해서 값을 변환하고 변환된 값을 사용하도록 처리

 

 


Request payload 구조

 

 

예약된 Response JSON 구조

-> status 필드가 FAIL이고, message 필드를 입력한 경우, 검증 실패 에러 메시지가 message 필드의 값으로 대체

 

-----------------------------------------------------------------------------------------------------------------------------

응답 설정
-> 사용자 발화가 특정 블록에 매칭 될 경우 사용자에게 출력되는 답변

-> 하나의 블록당 최대 3개의 연속된 응답을 노출할 수 있으며, 응답은 사용자의 기기에 따라 다양한 형태로 만듦

 

 

응답의 종류 

->디바이스에 따라 카카오톡 응답과 카카오 미니 응답으로 나누어집니다. 

 

-> 카카오톡의 출력을 설정하는 사진임.

-> 카카오톡의 응답 형태는 텍스트형, 이미지형, 카드형, 커머스형, 리스트형 중 원하는 말풍선 타입을 선택 가능

-> 응답 개수에 따라 각각 기본형, 랜덤형, 케로셀형 등으로 출력

 

 

 

-> 카카오 미니의 출력을 설정하는 사진임.

* 카카오미니는 텍스트 형만 사용할 수 있고 여러 개의 응답을 등록할 경우 랜덤형으로 출력

 

-----------------------------------------------------------------------------------------------------------------------------------

컨텍스트

-> 봇 작업자가, 블록 안에서 직접 해당 컨텍스트를 정의하고, 블록간 연결 및 관리를 수행

 

 

* 컨텍스트 쓰는 경우

-> 서로 다른 블록 간'연결고리'를 만들고 싶을 때

 

 

EX ) 컨텍스트 활용한 예시

1번 블록 음료 주문을 확정하는 기본 블록(블록명 : Order_confirm)
* 패턴 발화 : 아메리카노 1잔
* 음료를 주문하는 대화 상황을 '주문 상황(Ordering)'이라는 컨텍스트로 정의하고 내보냄(Output Context)

2번 블록 음료를 취소하는 기본 블록 (블록명 : Order_cancel)
* 패턴 발화 : 취소해줘
* 이전 대화의 '주문 상황(Ordering)'을 컨텍스트로 받아서 활용(Input Context)

 

2개의 다른 블록은 ‘Ordering’이라는 컨텍스트, 즉 ‘문맥’을 서로 공유하는 형태로 연결됨.

 

 

 

-> 컨텍스트 설정 메뉴 위치

 

 

컨텍스트 메뉴의 3가지 필요 구성 값
1. 인풋(Input) 컨텍스트
2. 아웃풋(Output) 컨텍스트
3. 대화 문맥이 살아있는 '컨텍스트 수명(Lifespan)'과 '유효시간(TTL)'.

 

-> 컨텍스트 설정 메뉴내 상세 컨텍스트 조건 설정 화면

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------Event API

-> 챗봇이 먼저 대화를 시작할 수 있도록 도와주는 기능으로 특정 이벤트에 대한 알림, 안내 등의 목적으로 사용

 

-> Event API 메시지는 유료화임. 메시지 1건당 15원씩 부과

-> Event API를 통한 메시지를 전송하기 위해서는, 월렛 생성 및 연결해야 함.

 

 

Event API를 통한 예시

1. 경기 결과 

-> 사용자가 관심 있는 경기정보에 대해 사전에 알림 설정을 해두면, 관련 경기가 종료된 후 경기 결과를 Event API로 발송하는 시나리오

 

 

 

2) 주문 상품 준비 완료 안내

 

 

또한, 광고성 메시지도 발송 가능하다. (사진으로는 생략한다.)

 

 

Event API 메시지 전송 정책
-> 채널을 추가한 유저에게만 전송 가능함(채널을 추가하지 않았거나 차단한 경우 전송 실패)

-> 1회당 최대 발송 건수는 100건(유저 아이디 중복은 허용 X)


Event를 발송할 대상인 유저 아이디 타입은 아래 값 중 하나
* appUserId (카카오 디벨로퍼스 앱 유저 아이디)
* plusfriendUserKey (skill서버에 전달되는 톡 채널 유저 식별 값)
* botUserKey (skill 서버에 전달되는 봇 유저 식별 값).

 

 

* 요청 성공 여부

-> 이벤트 블록 호출 API의 status값에서 확인 가능하며, 전송 성공 여부는 이벤트 발송 성공 여부 조회 API를 통해 확인

 

 

-----------------------------------------------------------------------------------------------------------------------------------

플러그인

-> 작업자가 되묻기 질문을 설정하거나 원하는 출력을 설정하여 봇이 ‘별도로 정의된 질문 혹은 답변’을 하기 위한 기능
-> 파라미터 설정을 통해서 사용할 수 있는 플러그인과 봇 응답 형식에서 사용할 수 있는 플러그인으로 나누어짐

 

‘파라미터 설정’ 플러그인 -> 이걸로 입력한 사용자 정보 값을 가져오는 거 같음
-> 되묻기 질문에서 봇이 필수적으로 받아야 하는 파라미터를 사용자가 좀 더 편리하고 정확하게 입력하도록 돕는 보조 입력 수단

 

 


* 플러그인을 사용하면 사용자는 편리하게 답변을 입력할 수 있고, 봇 작업자는 사용자에게 원하는 답변의 형태를 보다 정확한 파라미터의 형태로 정의할 수 있게 됩니다.(ex : 사용자의 주소지를 필수로 입력받고 싶을 때)

 

 

 

‘봇 응답 형식 설정’ 플러그인

-> 버튼을 통해 사용자가 카카오톡 채널과 관련된 콘텐츠로 쉽게 연결(보조수단)

예를 들어, 사용자에게 카카오톡 채널에 등록된 쿠폰을 함께 노출하고 싶은 경우 추가 버튼을 통해 ‘카카오톡 채널 쿠폰’을 설정할 수 있음

 

* 이미지형 말풍선에는 적용할 수 없습니다.

 

-> ‘봇 응답 형식 설정’ 탭의 버튼 설정에서 플러그인을 이용하면 다양한 기능을 사용할 수 있음

 

 

 

 

공유하기

-> 공유하기 플러그인을 눌렀을 때 해당 말풍선을 친구에게 공유할 수 있는 기능

* 봇의 말풍선은 공유하기 플러그인을 통해서만 친구에게 공유할 수 있음

 

* 카카오톡 채널 포스트, 카카오톡 채널 쿠폰, 상담직원 연결도 위와 공유하기처럼 누르면 바로 연결됨(사진 생략)

 

------------------------------------------------------------------------------------------------------------------------------

스킬

-> ‘블록에 종속되어 사용자에게 응답을 돌려주는 기능’

 

 

스킬의 역할
-> 스킬은 출력으로 사용이 가능


예를 들어, 주문을 받는 봇이 있다고 가정

-> 봇은 사용자의 주문 내역을 저장하고, 주문 끝이라는 발화가 들어오기 전까지 계속하여 주문을 진행

-> 이 상황에서 주문 봇은 사용자가 주문하는 메뉴에 따라서 메뉴를 추천하거나, 사용자가 기입한 기록을 토대로 알레르기와 같은 경고를 중간에 추가할 수 있음

 

 

 

 

데이터
-> 스킬은 데이터로 사용이 가능

 

예를 들어, 실시간으로 환율을 보여주는 봇이라고 가정

Example. “hh시 mm분, 현재 환율은 xxx원입니다.”
출력에서 필요로 하는 데이터는 ‘시간’, ‘분’, ‘환율 수치’

-> 데이터에 해당하는 값만 스킬 서버에서 반환하고, 이를 블록의 출력에서 이용하는 방식을 사용하면 됨

 

 

 

스킬 한눈에 보기

 

이제 스킬을 등록하고, 실행하는 과정을 알아보자.

1. 스킬 응답을 처리하는 스킬 서버를 생성 (스킬 개발 가이드 > 스킬 서버 이해)
2. 스킬을 생성하여 생성한 스킬 서버의 *엔드포인트를 등록 (스킬 개발 가이드 > 스킬 서버 등록)

 

 

* 엔드포인트란?

-> 스킬 서버의 엔드포인트는 요청을 전송할 수 있는 창구를 의미

 

예를 들면, 스킬 서버의 주소를i.kakao.com이라 가정

-> ‘i.kakao.com/a‘, ‘i.kakao.com/b이렇게 두 개의 url에 요청을 전달하면 그 응답을 반환하도록 만들었습니다.

-> 이 경우, ‘i.kakao.com/a’ ‘i.kakao.com/b’각각 스킬 서버의 엔드포인트가 됨

 

* 위에서 만든 스킬과 블록을 연결

 

 

-> 스킬과 연결한 블록이 활성화되면(ex. 사용자가 블록에 등록된 발화로 봇에게 말을 건 경우), 봇 시스템은 스킬에 등록된 엔드포인트로 요청을 전송

 

----------------------------------------------------------------------------------------------------------------------------

배포

-> 봇을 설계 및 저장한 내용을 실제 서비스에 반영하는 기능

-> 배포를 하지 않으면 저장한 모든 내용은 운영 채널 반영되지 않음

* 배포가 진행되는 동안은 봇을 편집하거나 저장할 수 없기 때문에 반드시 모든 작업자들이 변경사항을 저장한 후에 배포를 진행

* 배포가 시작되면 중지시킬 수 없으며, 봇의 발화 수나 블록 수 등에 따라서 최대 30분이 소요

 

 

카카오톡 챗봇 배포

 


-> 배포 메뉴에서 바로 배포가 가능

-> 챗봇의 버전은 v1.0부터 시작하며, 배포 시마다 버전이 0.1씩 증가 

 

 

 

보이스 봇 심사/배포
-> 카카오톡 챗봇과 달리 심사를 통과해야 배포가 가능

-> 보이스 봇의 버전은 v1.0부터 시작하며, 배포 시마다 버전이 0.1씩 증가

 

* 심사가 완료되어 봇 배포 승인을 받으면, 사진과 같이 ‘배포하기’ 버튼이 활성화

 

* 배포한 내용은 하단의 배포 히스토리에 쌓이며, 특정 버전을 클릭하면 해당 버전의 심사/배포 히스토리를 볼 수 있음

* 또한 ‘배포 메시지 보기’를 클릭하면 심사/배포를 요청할 때 작성한 ‘새로운 버전 설명 메시지’와 ‘담당자에게 전할 메시지’ 팝업이 뜨며, 작성한 내용을 확인할 수 있음

 

 

-----------------------------------------------------------------------------------------------------------------------------------학습

-> 봇이 파악하지 못한 사용자 발화 목록들을 이용해 봇의 정확성을 높여 잘 답변할 수 있도록 도와주는 보조도구

 

* 블록에 정의되지 않은 사용자 발화들이 입력되었을 경우, 이 목록들을 확인하고 무시하거나 기존에 정의해 둔 블록으로 매칭 시켜 봇을 학습시킬 수 있음

 

 

 

 

학습 대기


-> 학습 대기 목록에는 어제까지 수집된 데이터 중 설정된 기간 동안의 발화 및 빈도가 노출

-> 조회 날짜를 수정하여 좀 더 긴 범위(최대 30일)의 데이터를 확인하거나 검색 필터를 추가하여 단어, 빈도, 길이 별로 목록을 필터링할 수 있음

 

 

학습이력


-> 학습이력 목록에는 학습 대기에서 업데이트한 발화들의 목록이 매칭 한 블록명과 함께 발화 업데이트 일시, 학습상태가 표기됨
-> 학습한 발화의 매칭 블록을 변경하거나 학습한 발화를 ‘무시’ 상태로 변경할 수 있음

 

 

-----------------------------------------------------------------------------------------------------------------------------------

-> 제작된 봇의 사용자 활용성을 평가할 수 있는 화면이 제공되고, 이를 통해 관리자는 챗봇 서비스 운영과 관련된 인사이트를 발견할 수 있음

* 분석 메뉴에 노출되는 데이터는 '설정' > '카카오톡 채널 연결' > '운영 채널'에 연결된 챗봇에 전송된 데이터를 기준으로 노출

 

 

 

대시보드
-> 대시상세한 지표는 상세보기 버튼으로 선택한 항목의 데이터를 자세하게 확인(최대 90일까지 조회기간 설정)

 

 

블록 호출 수 및 기간별 블록 순위


-> 운영중인 봇에 대해서 가장 많이 사람들이 찾는 ‘블록(=사용자의도)’ 순위 정보 및 블록 호출 트렌드를 볼 수 있음

 

 

사용자 정보 그래프

-> 활성중인 현재 봇에 대해서 전체 사용자 유입 트렌드, 신규 방문자 차지 비중 정보를 볼 수 있음

 

 

 

잔존율

 

 

세션

-> 세션의 발생 현황에 대한 트렌드를 확인할 수 있음

-> 세션은 일정한 기간 내에 발생한 사용자 발화의 집합으로 사용자 발화(봇 호출) 후 10분 이상 추가 호출이 없으면 하나의 세션이 종료

 

 

 

사용자

활성사용자


-> 활성사용자 메뉴에서 현재일을 기준으로 설정된 기간 동안 누적 사용자, 활성 사용자, 재방문 사용자, 신규 사용자 수치를 확인할 수 있음.


* 누적 사용자 : 챗봇 생성일로부터 선택일까지 한 번 이상 봇을 호출한 유니크 사용자 수
* 신규방문자 : 해당 기간에 처음 봇을 호출한 사용자
* 활성사용자 : 해당 기간에 한번 이상 봇을 호출한 사용자
* 활성사용자(웰컴 및 Event 수신 제외) : 해당 기간에 한번 이상 봇을 호출한 사용자 중에서 웰컴 및 Event를 통해서 봇의 블록을 호출산 사용자를 제외
* 재방문사용자 : 활성사용자에서 신규사용자를 제외한 수

 

 

 

사용자 세션
-> '세션'이란 일정한 기간 내에 발생한 사용자 발화의 집합으로 사용자 발화(봇 호출) 후 10분 이상 추가 호출이 없으면 하나의 세션이 종료됨 (10분 이후 추가로 봇이 호출되면 다시 새로운 세션이 시작)

 

 

* 전체 세션 수 : 해당일에 발생된 전체 세션
* 사용자당 평균 세션 수 : 전체 세션을 활성사용자 수로 나눈 평균값
* 사용자당 평균 세션 길이 : 해당일의 누적 세션 길이를 활성사용자 수로 나눈 평균값 [sec]
* 세션당 평균 메시지 수 : 해당일의 누적 메시지 수를 전체 세션수로 나눈 값.

 

 

 

잔존율

-> 특정일의 신규 사용자 및 활성 사용자를 기준으로 해당 사용자들이 계속해서 봇을 호출하고 있는지 확인할 수 있는 지표
-> 특정일에 들어온 신규사용자수를 Day0의 모수로 잡고, 이후 기간의 누적 잔존율을 계산하여 표기

 

예를 들어) Day0에 1,000명의 신규사용자가 들어왔고 Day1의 잔존율이 1%인 경우, Day0의 신규사용자들 중 10명이 다음날에도 봇을 호출했다는 의미 (현재 잔존율 현황 그래프는 최대 30일까지 조회)

 

 

챗봇
-> 사용자들이 봇에 등록된 블록을 호출한 수와 전체 블록대비 각 블록의 사용비율 데이터를 확인할 수 있음.

-> 블록 호출 수 목록은 가장 호출 수가 높은 블록부터 순서대로 노출

 

전체블록 상세화면에선 봇에 호출된 블록의 전체 사용량과 관련된 지표를 확인할 수 있음
* 전체 블록 : 해당 기간동안 호출된 블록의 수
* 전체 블록(웰컴 메시지 제외) : 해당 기간동안 호출된 블록의 수에서 웰컴 블록이 호출된 수를 제외
* Event 메시지 : Event API를 통해서 전송에 성공한 블록 호출 수
* 지식+ : 지식 + 블록 호출수

 

 

-> 특정 블록을 선택해서 상세화면으로 이동하면 선택된 블록이 호출된 사용량과 관련된 지표를 확인

 

* 호출 수 1개 이하의 발화는 목록에 노출되지 않습니다.
* 전화번호와 같은 개인정보를 포함하고 있는 발화는 마스킹처리(*표기)되어 노출

 

 

 

 

보고서
-> 봇에 적재되어 있는 사용자가 호출한 블록 및 사용자 기반의 Raw data를 CSV파일 형태 보고서 다운로드 O

-> 최대로 설정가능한 기간은 31일, 발화가 포함된 보고서는 하루 단위로만 설정

 

* 블록별발화 : 블록을 호출하기 위해 유입된 발화내역, 보고서로 보고 싶은 블록타입을 선택

* 지식+ 기능 또한 하나의 블록으로 간주하여, 지식+로 유입된 발화/호출수/사용자수를 보여줌
* 블록사용량 : 블록이 호출된 수 (Block usage)
* 사용자수 : 봇을 방문하여 블록을 호출한 사용자의 수

* 데이터의 기간 설정은 1 Day기준으로만 가능

 

 

* 기준 설정
-> 사용자가 호출한 블록을 기준으로 할지 Event를 기반으로 사용자에게 먼저 전송된 메시지를 기준으로 할지 선택

 


* 발화 빈도 설정
-> 보고서에 담을 블록을 선정할때, 최소 몇회이상 호출된 블록을 대상으로 할것인지를 설정

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------

권한

-> 봇 작업자들이 사용할 수 있는 기능을 규정하고, 구분하여 제공하는 체제

* 마스터, 정식 작업자 권한은 모든 봇에 기본적으로 존재 

 

 

마스터 권한
-> 기본적으로 봇을 생성한 사람에게 부여

-> 봇을 삭제하거나 봇에 연결되는 APP Key 설정

 

 

마스터 권한만이 가진 기능은 아래와 같습니다.
* 봇 삭제 및 삭제 취소
* APP key 설정
* 카카오톡 채널 연결 및 관리
* 커스텀 권한 생성/관리
* 하위 작업자 권한 관리 및 봇 강제 탈퇴

 

* 마스터는 봇 별로 한 명만 존재할 수 있습니다.

-> 마스터가 탈퇴 하고싶은 경우에는 다른 정식 작업자에게 마스터 권한을 이양

 

 

-> 만약 마스터 계정이 제재를 당하게 되는 경우에는 정식 작업자들이 다른 마스터를 임명하게 되고, 기존의 마스터 권한자는 정식 작업자로 강등

 

 

정식 작업자 권한
-> 기본적으로 봇을 제작하게 되는 작업자들에게 주어지는 권한이며, 대부분의 봇 설정 및 제작 기능을 가지고 있음

-> 다만 다른 정식 작업자간의 권한을 조정할 수는 없음

 

 

 

 

 

 

커스텀 권한
-> 임시 작업자들에게 적합한 권한

-> 마스터가 만들어낼 수 있는 권한으로, 봇 별로 용도에 맞게 설정

* 예를 들어, 특정 단순작업을 위한 작업자가 팀에 합류했을 때 봇의 핵심적인 내용인 블록이나 출력 등에 대해 접근할 수 없도록 해당 기능의 읽기/쓰기 권한을 OFF 가능

 

 

 

월렛 권한
-> 챗봇 마스터가 챗봇과 연결된 월렛을 사용할 수 있게 할 수 있는 권한

-> 월렛 권한을 부여받은 사용자만 챗봇에 월렛을 연결할 수 있지만, 이미 챗봇에 월렛이 연결된 경우에는 더 이상 월렛을 연결할 수 없음.

-> 월렛 권한은 챗봇 월렛 최초 생성 시 노출되는 카카오 광고 통합서비스 이용약관에 가입한 사용자에게만 부여

 

 

 

 

 

월렛 권한 가능한 작업목록


 

 

---------------------------------------------------------------------------------------------------------------------

봇테스트
-> 봇 작업자가 봇을 만들때 실제 카카오톡 채널이 아닌 웹 상에서 봇을 테스트할 수 있음

-> 간단하게 Ctrl+E 단축키로 접근할 수 있음

 

 

 

봇테스트 화면

-> 아래의 이미지처럼 기본적인 발화와 그에 따른 봇의 실제 응답 형태를 확인

 

 

제공 정보
기본 정보


-> 기본적으로는 아래와 같이 폴백 블록이나 일반 블록의 응답 설정 값들을 확인

 

 

 

상세 정보
-> 작업자는 왼쪽의 상세 정보 영역에서 추가적인 정보를 확인

* 블록명 : 해당 발화 / 응답이 진행된 블록의 이름이 표기
* 패턴 : 해당 발화를 인지했다면, 인식된 패턴이 표기
* 컨텍스트 : 현재 발화로 인해 소비된 컨텍스트의 수명(lifespan) 횟수가 표기
* 파라미터 : 해당 발화의 파라미터 정보가 표기
* 스킬명 : 스킬로 연결된 블록인 경우, 연결된 스킬명이 노출

 

 

 

 

상세 정보영역에서 스킬에 대한 요청/응답에 대해서도 JSON 형태로 조회가 가능

 

* 더보기 버튼을 클릭하면 추가적인 영역이 노출
* 스킬응답 : 스킬응답에 대한 JSON 전문이 표기
* 응답오류 : 응답 오류가 된 경우, 오류관련 코드가 표기
* Request : 스킬서버로의 요청 전문이 표기

 

 

 

----------------------------------------------------------------------------------------------------------------------------

작업이력
-> 봇 작업자가 봇을 만들면서 수행한 활동(=Action)들은 작업이력 에서 일시정보와 함께 기록

* 필요시 본인이 어떤 활동들을 수행해왔는지를 작업이력 메뉴 안에서 간편하게 확인 

 

 

* 작업이력은 언제 사용?

-> 봇 생성 작업중에 혹시 모를 이슈나 장애상황이 발생할 때, 봇 작업자는 어떤 활동을 수행했는지를 확인하고, 즉시 문제 해결을 위한 원인파악을 하는데 참고가능 (즉, 로그 같은 거라고 생각하면 될듯)

 


-> ① 전체 로 설정되어있는 필터를 클릭하시면 오픈빌더에서 제공하는 메인 메뉴 리스트가 나타남

-> 메인 메뉴중에서 원하시는 메뉴에 따른 작업이력 사항을 해당 필터를 통해서 확인가능

 

 

 

 

작업 이력 한걸음 더 들어가보기

-> 봇 작업자는 위와 같이 확인된 작업 이력 박스를 클릭하여, 해당 이력안에 상세하게 어떤 내용들이 발생되었는지를 추가적으로 더 확인할 수 있다.

 

봇 작업자는 이를 ‘작업 상세’ 형태로 확인
* 이력발생 일시
* 해당 활동 수행자
* 수행자 보유 권한
* 활동 발생 메뉴
* 상세 이력 정보

-> 봇 작업자가 해당 작업 이력 내용을 추적하여 특정 시각의 활동 단계로 작업 상태를 되돌리는(Roll-back or Undo) 기능은 제공

 

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------

 

관리자
관리자 메뉴
-> 새로운 작업자들을 초대하거나 관리

* 카카오 i 오픈빌더에 가입된 계정에 대해서만 초대 가능, 초대된 계정은 적용된 권한으로 작업자 목록에 추가됨
* 별도의 확인없이 즉각 추가되므로 주의가 필요함

 

 

 

커스텀 권한 생성

-> 권한에서 설명된 커스텀 권한을 생성하는 메뉴

-> 새로운 권한을 생성하는 기능을 통해 특정 기능만 접근할 수 있는 권한을 생성

-> 톱니바퀴 버튼을 클릭하면 커스텀 권한을 생성하는 권한 템플릿 관리 팝업이 호출

 

 

 

작업자 권한 변경

-> 마스터는 아래의 드랍다운 버튼 클릭을 통해 작업자의 권한을 변경할 수 있음

* 위임시, 기존의 마스터는 정식작업자로 강등함.(되돌릴려면 위임된 마스터가 직접 권한을 해야하는 번거로움이 있음)

 

-----------------------------------------------------------------------------------------------------------------------------------

봇설정

-> 봇의 설정을 추가/변경하는 메뉴

 

기본 정보
-> 봇 기본정보 영역에서는 봇의 이름, 운영 채널 연결, 개발 채널 연결, 봇ID를 확인할 수 있음


* 봇 이름 : 필수 정보이며, 특수 기호 없이 최대 20자까지 작성가능 
* 운영 채널 : 실 서비스 목적의 카카오톡 채널
* 개발 채널 : 개발 및 테스트 목적의 카카오톡 채널
* 운영 채널 연결 : 봇에 연결할 운영 채널을 선택, 봇을 만든 후, 한 번이라도 배포해야 이 채널과 연결됨
* 개발 채널 연결 : 봇을 배포하기 전에, 설계 및 저장한 상태의 봇을 연결할 개발 채널을 선택가능

* 봇 카테고리 : 연결된 카카오톡 채널의 카테고리로 자동 설정
* 앱키 설정 : 기본 정보 영역에서는 마스터가 ‘앱키 설정’을 할 수 있음

 

 

 

 

* 봇 ID : 봇이 가진 고유한 ID

 

 

 

봇 상태
-> 봇의 동작 상태를 확인가능, 제재를 받거나 기타 문제가 생기게되면 해당 영역에 상태정보와 사유정보가 노출

* 봇 생성 후, 한 번도 배포한 적이 없는 경우: 준비 (정상)
* 첫 번째 배포 후, 정상적으로 봇이 작동하는 경우: 실행 (정상)
* 봇이 제재를 받아 정지 되었을 때: 차단

 

 

 

 

 

봇 삭제

-> 마스터에게만 제공되는 기능으로 클릭시 확인 후, 봇을 삭제

* 삭제 신청 기간동안(7일) 함께 봇을 제작한 공동 작업자들과 마스터는 봇 삭제에 대해서 협의하고 봇 삭제를 취소

 

------------------------------------------------------------------------------------------------------------------------

알림센터

알림센터 메뉴

-> 여러가지 알림 내용을 확인가능

 

 

알림 목록

* 공지사항 업로드
* 봇의 주요 설정 변경
* 사용자 계정에 관한 알림

 

1. 마스터 관리자의 변경
2. 카카오톡 채널의 변경
3. 심사 신청/완료
4. 봇 삭제 시작/취소
5. 봇 이름 변경
6. 봇 상태 변경
7. APP Key 설정 변경

 

 

----------------------------------------------------------------------------------------------------------------------------------

지식+
지식+가 무엇인가요?
-> 수많은 질문에 대해 봇 작업자가 손쉽고, 빠르게 응대할 수 있도록 도와주는 기능

 

* 정형화된 Q&A 데이터를 지식+에 업로드하고, 봇 배포를 통하여 유사 질의에도 답변이 가능한 봇을 생성

* Q&A 데이터는 CSV 파일, API를 통하여 업로드 가능

 

 

 

지식+는 어떤 질문에 적합한가요?

* 첫 번째 유형 숏-헤드 유형으로 많은 사용자로부터 높은 빈도로 유입되는 주요 발화 존재

* 두 번째 유형 롱-테일 유형으로 낮은 빈도로 유입되는 다양한 발화가 있음

* 좋은 봇 서비스를 만들기 위해서는 두 가지 유형의 발화를 모두 커버할 수 있어야 함

* 지식+는 이러한 롱-테일 유형 발화에 적합
* 봇 작업자는 빈도가 높고 중요한 숏-헤드 질문에는 블록, 머신러닝을 활용하고

* 빈도가 낮고 다양한 롱-테일 질문에는 지식+를 사용하여 외부 사용자의 예측불가능한 질문에 응대가능

 

 

-----------------------------------------------------------------------------------------------------------------------

머신러닝 -> 내일 수정할것

 

챗봇 서비스를 운영하다보면 사용자로부터 다양한 유형의 발화가 들어오고, 이 발화는 크게 2 가지로 구분됩니다. 첫 번째 유형은 숏-헤드 유형으로 많은 사용자로부터 높은 빈도로 유입되는 주요 발화들이 있습니다. 두 번째 유형은 롱-테일 유형으로 낮은 빈도로 유입되는 다양한 발화가 있습니다.

좋은 봇 서비스를 만들기 위해서는 두 가지 유형의 발화를 모두 커버할 수 있어야 합니다. 하지만 사용자가 롱-테일 유형의 질문까지 모두 블록으로 만들어 응대하기는 쉽지 않습니다.

그래서 오픈빌더에서는 인입 질문의 유형에 따라 패턴 매칭, 머신러닝, 지식+를 적절히 사용하여 쉽게 양질의 봇을 만드는 방식을 제공하고 있습니다.
이중 머신러닝은 숏-헤드 유형의 발화에 대해 보다 정확하게 응대할 수 있도록 도와주는 기능입니다..

 

 

 

 

반응형

댓글