SlideShare a Scribd company logo
Clova 플랫폼을 활용한 인공지능 서비스 개발
Clova Platform
Evangelist
옥상훈
2018-11-30
목차
• AI
스피커와 플랫폼
• Clova Skill
Tools
• 챗봇 개발
• 커스텀 스킬 개발
• VUX – Voice User Experience 고려사항
• Clova Skill
개발 사례
• Clova Skill
개발 테스트 방법
AI 스피커와 플랫폼
전세계 AI 스피커 출하량 2019년 1억대 전망
AI 스피커 출시 현황
• 2018년
• 4월 네이버 클로바 프렌즈 미니
• 9월 구글홈 국내 출시
• 2017년
• 1월 KT 기가지니
• 8월 네이버 웨이브
• 10월 네이버 클로바 프렌즈
• 11월 LG전자 씽큐허브(클로바 탑재), 카카오 미니
• 2016년
• 9월 SKT
누구
• 11월 구글홈 출시
• 2014년
• 11월 아마존 에코
새로운 인터페이스의 등장
출처: https://centricconsulting.com/blog/2018-digital-trends-future-of-voice-user-interface_miami/
LG유플러스
IPTV 셋톱박스
LG유플러스
Bluecom 스피커
LG전자
Smart ThinQ
LG전자
HomeRobot CLOi
LG전자
Smart 냉장고
NAVER LABS
AKI
스마트 스피커
홈 로봇생활 가전 스마트 시계
Clova 탑재 디바이스
Clova Platform
Overview
Clova Skill
Tools
Clova Skill
Tools
Clova Extensions Kit는 사용자 발화를 분석한 결과
를 입력 받아 서버에서 처리하며 응답을 내보낼 수 있
으며 외부 서비스나 IoT 기기 등을 제어할 수 있습니
다.
Clova Chatbot Builder는 서버 없이 질문 답변 세트를
입력하시면 클로바, 네이버 톡톡, 라인 챗봇으로 서비
스 가능합니다.
Chatbots
- FAQ 같은 질문 답변 위주
- 서버 없이도 제공 가능
- 네이버 톡톡, 라인 등 메신저 연동 가능
Chatbot 개발 – 1/3
• 챗봇빌더에 질문과 답변 세트를 등록하면 FAQ 형태 챗봇 개발 가능
예) Clova Dev Days 챗봇: https://talk.naver.com/ct/wcdkve
Chatbot 개발 – 2/3
• 동일한 의도이지만 다양한 표현의 질문 등록 필요
예) Clova Dev Days 챗봇: https://talk.naver.com/ct/wcdkve
Chatbot 개발 – 3/3
• 세미나 조회, 등록과 같이 서버작업이 필요한 경우 서버와 연결할 수도 있음
• 액션메서드: 특정 질문에 대해 서버의 응답을 답변으로 제공
• 액션폼: 사용자의 입력을 받고, 이를 서버로 연결해서 처리 결과를 답변으로 제공
예) Clova Dev Days 챗봇: https://talk.naver.com/ct/wcdkve
- 외부 서버 컨텐츠나 IoT 기기 제어 목적
- API 서버 응답으로 Clova 로 서비스
Custom Skills
Custom
Skill
개발 - 1/4
• 챗봇 형태로도 개발이 가능하지만,
• 사용자의 발화를 분석한 결과에 대한 답변이 주로 서버의 응답으로 이뤄져야 하는 경우
• 예) 음원 스트리밍
• “빗소리 시작해줘”
• 예) 퀴즈, 게임, 동화 등 인터렉티브하게 대화 흐름 제어가 필요한 경우
• “나라수도퀴즈 시작해줘”
• 예) 인증된 사용자에게만 서비스 하려는 경우
• “배송지키미에서 조회해줘”
• 예) IoT 기기 제어
• ”네콘으로 TV켜줘”
Custom
Skill
개발 – 2/4
• 인터렉션 모델
• 사용자로부터 입력될 만한 질문들은 다양하게 입력해야함
Custom
Skill
개발 - 3/4
• Clova는 사용자로부터 입력된 발화를 분석해서 어떤 명령(intent)인지, 그 명령을 수행
하는데 필요한 값(slot)들을 Custom
Skill
서버로 전달함
Custom
Skill
개발: Oauth인증서버 - 4/4
• 만약 Custom
Skill이 써드파티
계정 인증이 필요하다면 익스텐
션 서버와 함께 OAuth
인증을
구현하셔야 필요합니다.
• OAuth
인증 서버는 Clova
console에 등록된 인증정보를
이용하여 인증을 처리하고,
인
증이 완료되면 접근토큰을 반환
해야 합니다.
• 인증서버 구축 예) 배달의 민족,
LG
전자, LGU
+
관련 가이드: https://www.slideshare.net/ClovaPlatform/clova-tech-summit-3-clova-extension-oauth-89597569
VUX – Voice User Experience 고려사항
음성인식 - 호출어
• Clova Skill은 작동을 위해 호출어가 인식되는지 확인 필요
• 예) “나라수도퀴즈 시작해줘” à ‘나라수도퀴즈’는 인식이 잘되는 호출어
• 예) “배송지키미 시작해줘” à 배송지킴이로 인식되는 경우가 종종 있었음
• 호출어에 영단어가 있는 경우 호출어를 추가 등록해서 오인식 방지 가능
• 예) “포커스온미 시작해줘”, “focus
on
me
시작해줘”
• 호출어는 3개까지 가능하며, 정책에 맞지 않는 경우 거절 가능
• 호출어는 브랜드, 저작권 이슈가 없어야 함
• 예) ”배달의민족 시작해줘” , “배민 시작해줘”
• 호출어가 인식이 안되는 브랜드일 경우, 8주전에 제휴채널로 음성인식 부
스팅 필요
음성인식 – 인식이 잘 안되는 상황
• 아무리 음성인식율이 뛰어나더라도 아래 예외 케이스는 어쩔 수 없음
• 실외, 카페 등 소음, 잡음이 큰 환경
• 부정확한 어린 아이의 발음
• 사람도 헷갈리는 발음 (ex:
삼십삼, 삽십사 )
• 답변할 타이밍에 답변을 안하고 묵음이 들어 오는 경우
• 음성인식이 잘 안되는 경우 설계했던 의도로 분석 되지 않아 엉뚱한 답변
이 나가지 않도록 VUX 설계가 필요
• 단순히 방금한 말을 반복하라고 하기보다는, 상황을 알려주고 사용자에게
선택지를 주어서 답변을 유도하는 것 좋음
• 뭐라고 하셨나요? 다시 한번 말씀해 주세요
• 방금 나간 질문은 000입니다. A 또는 B 중에 하나를 말씀해주세요.
사용자 상황
• 사용자 상황에 따라 음성이 편리한 경우를 고려해야함
• 손을 못쓰는 상황
• 요리할 때
• 운전할 때
• 나갈 때
• 운동할 때
• 몸을 움직이기 싫은 상황
• 누워 있을 때
• 다른 작업을 할 때
• 스피커는 가족과 함께 쓰는 경우가 많음
• 아침 출근, 저녁 퇴근, 주말 등
• 사용자는 본인 외에 가족도 사용할 수 있음
음성으로 모든 처리가 가능하게
• 스킬을 구동한 다음 사용자가 자연스럽게 음성으로 사용할 수 있어야 함
• 예) 000 시작해줘 à 안녕하세요. 000입니다.
• 하고 끝...그 다음에 어쩌라는 건지????
• 예) 000 시작해줘 à 안녕하세요. 000입니다. 사용법이 궁금하면 ‘도움말’이라고 하
세요.
• ‘도움말’이라도 있으니 다행, 하지만 좀 더 편리하게 안내해주면 좋겠다
• 예) 000 시작해줘 à 안녕하세요. 000입니다. ㄱㄱㄱ을 하시려면 AAA라고 하시고, ㄴ
ㄴㄴ을 하시려면 BBB라고 하세요.
• 아하, AAA나 BBB로 하면 되겠구나.
• 예) 000 시작해줘 à 안녕하세요. 000입니다. ㄱㄱㄱ을 하시려면 AAA라고 하시고, ㄴ
ㄴㄴ을 하시려면 BBB라고 하세요. 그 외 사용법이 궁금하면 ‘도움말’이라고 하세요.
• 아하, AAA나 BBB로 하면 되겠구나. 잘 모를 경우는 ‘도움말’이라고 하면 되겠군
챗봇의 전문 분야(도메인) 중심으로 대화 설계
• 챗봇이 처음 실행될 때 사용자에게 할 수 있는 것에 대해 명확히 가이드
• 예) Clova Dev
Days 봇
• Clova Dev
Days
세미나 행사 안내, 참가 신청 기능 중심
• 잡담에 대한 대응 기능도 들어 있지만, 거의 사용하지 않음
• 챗봇을 만든 의도에 맞는 도메인 중심의 대화를 해야 중의성이 해결됨
• 같은 단어라도 업무 분야에 따라 뜻이 달라지는 경우가 있음
• 예) 세션: 세미나 행사에서는 강의를 뜻하며, SW개발에서는 웹서버와 클라이언트간의 연결성을
뜻함
• 사용자가 자연스러운 대화로 원하는 작업을 수행할 수 있게
• 사용자는 길고 복잡한 말로 명령을 내리지 않음
• 짧고 간결한 단어와 대화 중심으로
• 사용자가 원하면 언제든 명령을 취소하고 다시 할 수 있게
• 사용자가 챗봇의 시나리오대로 하지 않는 경우가 많음
• 그럴 경우를 대비해서 시나리오를 원점으로 언제든 돌릴 수 있어야 함
1. 중복되지 않게 다양한 표현의 문장을 입력합니다. ( 최소 30 문장 )
2. 비슷한 용언은 대표 문장 하나만 입력합니다.
3. 의미/형태가 비슷한 문장이 다른 intent에 섞이지 않게 intent를 구분합니다.
4. slot은 대표어를 등록하고, 비슷한 말은 유사어에 등록합니다.
5. 같은 slot이 여러 intent에 사용되면 slot이름은 동일한 이름으로 쓰여야 합니다.
6. slot은 명사형이 아닌 동사나 형용사로 설정하지 마세요.
7. 슬롯이 다르고, 표현이 비슷한 문장은 별개의 intent가 아니라 하나의 intent로 묶어 줍니다.
( intent는 자사 서비스 분류기준에 1:1로 매핑하기보다는 언어의 표현상의 유사성에 따라 분류합니다.)
인터렉션 모델 작성 원칙
Clova Skill
사례
Chatbot – 동물소리 번역기 ‘멍멍이’
• 개요
• 사람이 동물 흉내 소리(의성어)를 내면, 거기에 맞는 동물 이름과 응답을 리턴
• 호출: “클로바, 멍멍이 시작해줘”
• 챗봇 개발
• FAQ형태로 의성어와 거기에 맞는 동물에 대한 답변 매칭
Chatbot – Clova Dev
Days
챗봇
• 챗봇 사용하기
• https://talk.naver.com/ct/wcdkve (네이버 톡톡)
• 대화 설계
• Clova Chatbot builder에 행사일정, 주제, 장소 등 세미나 관련 질문 답변 FAQ
등록
Chatbot – Clova Dev
Days
챗봇
• 대화설계
Chatbot – Clova Dev
Days
챗봇
• 세미나 신청 처리
• Ncloud Function을 활용한 API 개발
• 행사일정 API
: 행사 일정 조회
• 세미나 참가 등록/수정 API
:
이메일, 이름, 소속 입력/수정
• 세미나 등록 확인 API
• 세미나 취소 API
Custom
Skill
– 퀴즈류: 나라수도퀴즈, 과일초성퀴즈, 수수께끼
• 개요
• 클로바가 문제를 내고 사용자가 정답을 맞추는 스킬
• 3 ~ 10 레벨 문제가 있으며, 5문제중 3문제를 맞추면 다음 레벨로 승급
• 호출: ‘클로바, 나라수도퀴즈 시작해줘’
Custom
Skill
– 퀴즈류: 나라수도퀴즈, 과일초성퀴즈, 수수께끼
• 대화설계
• levelIntent : 레벨 이동
• passIntent : 문제 스킵
• hintIntent : 문제 힌트
• keepgoingIntent : 문제 풀이 계속
• helpIntent : 명령어 도움말
• againQuesionIntent : 다시 듣기
• getScoreIntent : 점수 확인
• answerIntent : 문제답 DB
• 나라수도 퀴즈는 수도명 100여개
• 과일초성퀴즈는 과일명 50여개
• 수수께끼는 수수께끼 정답 100여개
Custom
Skill
– 퀴즈류: 나라수도퀴즈, 과일초성퀴즈, 수수께끼
• 퀴즈 처리 알고리즘
• 중복 문제 출제 방지
• 레벨 이동
• 문제 패스
• 레벨 승급
• 점수 매기기
• 오답 처리가 가장 난이도가 높음
• Slot에 있는 오답이면 slot으로 값이 넘어 오며 확실히 오답 처리 가능
• Slot에 없는 오답이면 slot이 비어 있음
• 음성인식이 안되는 경우도 오답으로 빠짐
• 레벨이동, 힌트, 패쓰 등 다른 명령을 내리다가 오인식되어도 오답으로 빠짐
• 퀴즈와 상관없는 말이나 잡음이 들어와도 오답으로 빠짐
Clova Skill
개발 예시
‘로또마법사’ 스킬 개발
• 1단계: 스킬을 호출하면 서버의 응답이 스피커로 출력되도록
• 사용자: “로또마법사 시작해줘”
• 클로바: “로또마법사입니다. 대박 예감 로또번호를 추천해드릴게요. 123456”
• 2단계: 특정 의도의 발화가 들어오면 지정된 서버의 응답을 출력
• 사용자: “로또 번호 2개 골라줘”
• 클로바: “대박 예감 로또 번호 2개 추천해드립니다. 123456, 789101112”
• 3단계: 사용자와 대화를 이어 가도록
• 사용자: “로또마법사 시작해줘”
• 클로바: “로또마법사입니다. 로또 번호를 몇개 골라 드릴까요?”
• 사용자: “5개”
• 클로바: “대박 예감 로또 번호 5개 추천해드립니다. ……………”
1.1. 개발자 콘솔에 ‘로또마법사’ 스킬 등록
• 호출이름에 ‘로또마법사’ 입력
1.2. 서버 설정 – Ncloud Function
액션 생성
• NCP
회원 가입 후 Cloud
Function으로 액션생성
• https://console.ncloud.com/cloudFunction/action
https://github.com/okgosu/CEK-CloudFunction-
Exam/blob/master/CEK_lotto_dev1.js
1.3. 서버 설정 – Ncloud Function
서버 주소 설정
1.4. 인터렉션 모델 – recomendLottoNumbers 인텐트 생성
1.5.스피커 테스트
• 개발자 콘솔에 test할 네이버 계정 등록 확인
• 음성 테스트 방법1 – Clova 앱
• Clova 앱에 해당 아이디로 로그인 후
• à “000 시작해줘” 라고 했을 때 익스텐션 서버로 LaunchRequest가 오는지, 익스텐션의 응답이 음성으로 나가는지 확인
• 음성 테스트 방법2 – Friends
스피커
• 테스터로 등록된 아이디로 Clova앱을 이용해서 스피커 설정
• à “000 시작해줘” 라고 했을 때 익스텐션 서버로 LaunchRequest가 오는지,
익스텐션의 응답이 음성으로 나가는지 확인
2.1. 인텐트 처리
• recomendLottoNumbers 인텐트 처리
https://github.com/okgosu/CEK-CloudFunction-Exam/blob/master/CEK_lotto_dev2.js
intentRequest(cekResponse) {
console.log('intentRequest')
const intent = this.request.intent.name
const slots = this.request.intent.slots
switch (intent) {
case 'recomendLottoNumbers':
cekResponse.setSimpleSpeechText('로또 추천번호 알려드릴게요. 추천 번호는 7, 8, 9 10, 11, 12, 13 입니다.');
break;
case 'Clova.CancelIntent':
break;
case 'Clova.YesIntent':
break;
case 'Clova.NoIntent':
break;
case 'Clova.GuideIntent':
break;
}
if (this.session.new == false) {
cekResponse.setMultiturn()
}
}
2.2. Slot
처리
• recomendLottoNumbers 인텐트에 번호 갯수 slot
추가
• 이름: lottoCountSlot
• 타입: CLOVA.NUMBER
2.3. slot
처리
• recomendLottoNumbers 인텐트로 들어오는 번호 갯수 slot
처리
https://github.com/okgosu/CEK-CloudFunction-Exam/blob/master/CEK_lotto_dev3.js
case 'recomendLottoNumbers':
const lottoCountSlot = slots.lottoCountSlot;
var lottoCnt = 1;
if(lottoCountSlot != undefined && lottoCountSlot.value != null ){
lottoCnt = lottoCountSlot.value;
}
if(lottoCnt==1) {
cekResponse.setSimpleSpeechText('이번 주 추천 번호는 1, 2, 3, 4, 5, 6 입니다.');
} else {
cekResponse.setSimpleSpeechText(lottoCnt + '개의 로또를 요청하셨군요. 하지만 번호는 한개만 알려드릴게요. 추천 번호는 7, 8, 9 10, 11, 12, 13
입니다.');
}
break;
3. 멀티턴 처리
• 멀티턴 처리
https://github.com/okgosu/CEK-CloudFunction-Exam/blob/master/CEK_lotto_dev4.js
cekResponse.appendSpeechText(lottoCnt + '개의 로또를 요청하셨군요. 하지만 번호는 한개만 알려드릴게요. 추천 번호는 7, 8, 9 10, 11, 12, 13 입니
다.');
cekResponse.appendSpeechText('다른 번호를 원하시면, 원하시는 번호 갯수를 다시 말씀해주세요.');
cekResponse.setMultiturn({
lottoCnt: lottoCnt,
})
Appendix.
• Clova 발표자료: https://www.slideshare.net/clovaplatform
• Clova 강의 동영상: https://www.youtube.com/watch?v=sOW-
YwR_YWw&list=PLq8dHmDf5DDWRN4VWkc0QrBlsEsbs3QwC
• Clova Dev
Days
행사 알림 챗봇: https://talk.naver.com/ct/wcdkve
• Clova 플랫폼 개발자 문서 :
https://developers.naver.com/console/clova/guide/
• Design
챕터 /
Clova Extensions
Kit
챕터 /
Clova Developer
Console
챕터 참고
• 튜토리얼 및 샘플 코드 참고
• 샘플 코드 Github
• 마법 구슬 :
https://github.com/naver/clova-extension-sample-magicball
• 빗소리 :
https://github.com/naver/clova-extension-sample-rainsound
• 주사위 놀이 :
https://github.com/naver/clova-extension-sample-dice
• 코인 헬퍼 :
https://github.com/naver/clova-extension-sample-coinhelper
Thank
you.
제휴문의: dl_clova_partnership@navercorp.com

More Related Content

What's hot

이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
지수 윤
 
[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험
NAVER D2
 
댓글 감성 분석 상용화 개발기(Ver. 2)
댓글 감성 분석 상용화 개발기(Ver. 2)댓글 감성 분석 상용화 개발기(Ver. 2)
댓글 감성 분석 상용화 개발기(Ver. 2)
Jeffrey Kim
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
정주 김
 
비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표
Hong Min Kim
 
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
HyeonJeong Jo
 
소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자
Deogtae Kim
 

What's hot (7)

이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
 
[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험
 
댓글 감성 분석 상용화 개발기(Ver. 2)
댓글 감성 분석 상용화 개발기(Ver. 2)댓글 감성 분석 상용화 개발기(Ver. 2)
댓글 감성 분석 상용화 개발기(Ver. 2)
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
 
비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표
 
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
 
소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자
 

Similar to Clova 플랫폼을 활용한 인공지능 서비스 개발

Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Platform
 
Clova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 BasicClova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 Basic
Clova Platform
 
Clova extension A to Z
Clova extension A to ZClova extension A to Z
Clova extension A to Z
Clova Platform
 
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Platform
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호
용호 최
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
창완 장
 
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
MinKyu Kim
 
Ibm bluemix cloud 에서 chatbot 만들기
Ibm bluemix cloud 에서 chatbot 만들기Ibm bluemix cloud 에서 chatbot 만들기
Ibm bluemix cloud 에서 chatbot 만들기
Shaun LEE
 
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
Amazon Web Services Korea
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼
Kenu, GwangNam Heo
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
Myeongin Woo
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
Jongwon Han
 
좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자
좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자
좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자Suyeol Jeon
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
Byeongsu Kang
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
NAVER D2
 
Serverless Programmable Voice
Serverless Programmable VoiceServerless Programmable Voice
Serverless Programmable Voice
MooYeol Lee
 
사랑의 '유효성 검사' 재개발
사랑의 '유효성 검사' 재개발사랑의 '유효성 검사' 재개발
사랑의 '유효성 검사' 재개발
Seongsil Yoo
 

Similar to Clova 플랫폼을 활용한 인공지능 서비스 개발 (20)

Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
 
Clova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 BasicClova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 Basic
 
Clova extension A to Z
Clova extension A to ZClova extension A to Z
Clova extension A to Z
 
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
 
Ibm bluemix cloud 에서 chatbot 만들기
Ibm bluemix cloud 에서 chatbot 만들기Ibm bluemix cloud 에서 chatbot 만들기
Ibm bluemix cloud 에서 chatbot 만들기
 
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
 
좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자
좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자
좋은 디자이너, 나쁜 프로젝트매니저, 이상한 개발자
 
배포
배포배포
배포
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
Serverless Programmable Voice
Serverless Programmable VoiceServerless Programmable Voice
Serverless Programmable Voice
 
사랑의 '유효성 검사' 재개발
사랑의 '유효성 검사' 재개발사랑의 '유효성 검사' 재개발
사랑의 '유효성 검사' 재개발
 

More from Clova Platform

Clova ai-business-day-session-3
Clova ai-business-day-session-3Clova ai-business-day-session-3
Clova ai-business-day-session-3
Clova Platform
 
Clova ai-business-day-session-4
Clova ai-business-day-session-4Clova ai-business-day-session-4
Clova ai-business-day-session-4
Clova Platform
 
Clova ai-business-day-session-2
Clova ai-business-day-session-2Clova ai-business-day-session-2
Clova ai-business-day-session-2
Clova Platform
 
Clova ai-business-day-session-1
Clova ai-business-day-session-1Clova ai-business-day-session-1
Clova ai-business-day-session-1
Clova Platform
 
Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현
Clova Platform
 
Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계 Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계
Clova Platform
 
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Platform
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Platform
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Platform
 
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Platform
 
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Platform
 
Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)
Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)
Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)
Clova Platform
 

More from Clova Platform (12)

Clova ai-business-day-session-3
Clova ai-business-day-session-3Clova ai-business-day-session-3
Clova ai-business-day-session-3
 
Clova ai-business-day-session-4
Clova ai-business-day-session-4Clova ai-business-day-session-4
Clova ai-business-day-session-4
 
Clova ai-business-day-session-2
Clova ai-business-day-session-2Clova ai-business-day-session-2
Clova ai-business-day-session-2
 
Clova ai-business-day-session-1
Clova ai-business-day-session-1Clova ai-business-day-session-1
Clova ai-business-day-session-1
 
Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현
 
Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계 Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계
 
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
 
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
 
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
 
Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)
Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)
Clova Tech Summit 세션1 : 코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 (Advanced)
 

Clova 플랫폼을 활용한 인공지능 서비스 개발

  • 1. Clova 플랫폼을 활용한 인공지능 서비스 개발 Clova Platform Evangelist 옥상훈 2018-11-30
  • 2. 목차 • AI 스피커와 플랫폼 • Clova Skill Tools • 챗봇 개발 • 커스텀 스킬 개발 • VUX – Voice User Experience 고려사항 • Clova Skill 개발 사례 • Clova Skill 개발 테스트 방법
  • 4. 전세계 AI 스피커 출하량 2019년 1억대 전망
  • 5. AI 스피커 출시 현황 • 2018년 • 4월 네이버 클로바 프렌즈 미니 • 9월 구글홈 국내 출시 • 2017년 • 1월 KT 기가지니 • 8월 네이버 웨이브 • 10월 네이버 클로바 프렌즈 • 11월 LG전자 씽큐허브(클로바 탑재), 카카오 미니 • 2016년 • 9월 SKT 누구 • 11월 구글홈 출시 • 2014년 • 11월 아마존 에코
  • 6. 새로운 인터페이스의 등장 출처: https://centricconsulting.com/blog/2018-digital-trends-future-of-voice-user-interface_miami/
  • 7. LG유플러스 IPTV 셋톱박스 LG유플러스 Bluecom 스피커 LG전자 Smart ThinQ LG전자 HomeRobot CLOi LG전자 Smart 냉장고 NAVER LABS AKI 스마트 스피커 홈 로봇생활 가전 스마트 시계 Clova 탑재 디바이스
  • 10. Clova Skill Tools Clova Extensions Kit는 사용자 발화를 분석한 결과 를 입력 받아 서버에서 처리하며 응답을 내보낼 수 있 으며 외부 서비스나 IoT 기기 등을 제어할 수 있습니 다. Clova Chatbot Builder는 서버 없이 질문 답변 세트를 입력하시면 클로바, 네이버 톡톡, 라인 챗봇으로 서비 스 가능합니다.
  • 11. Chatbots - FAQ 같은 질문 답변 위주 - 서버 없이도 제공 가능 - 네이버 톡톡, 라인 등 메신저 연동 가능
  • 12. Chatbot 개발 – 1/3 • 챗봇빌더에 질문과 답변 세트를 등록하면 FAQ 형태 챗봇 개발 가능 예) Clova Dev Days 챗봇: https://talk.naver.com/ct/wcdkve
  • 13. Chatbot 개발 – 2/3 • 동일한 의도이지만 다양한 표현의 질문 등록 필요 예) Clova Dev Days 챗봇: https://talk.naver.com/ct/wcdkve
  • 14. Chatbot 개발 – 3/3 • 세미나 조회, 등록과 같이 서버작업이 필요한 경우 서버와 연결할 수도 있음 • 액션메서드: 특정 질문에 대해 서버의 응답을 답변으로 제공 • 액션폼: 사용자의 입력을 받고, 이를 서버로 연결해서 처리 결과를 답변으로 제공 예) Clova Dev Days 챗봇: https://talk.naver.com/ct/wcdkve
  • 15. - 외부 서버 컨텐츠나 IoT 기기 제어 목적 - API 서버 응답으로 Clova 로 서비스 Custom Skills
  • 16. Custom Skill 개발 - 1/4 • 챗봇 형태로도 개발이 가능하지만, • 사용자의 발화를 분석한 결과에 대한 답변이 주로 서버의 응답으로 이뤄져야 하는 경우 • 예) 음원 스트리밍 • “빗소리 시작해줘” • 예) 퀴즈, 게임, 동화 등 인터렉티브하게 대화 흐름 제어가 필요한 경우 • “나라수도퀴즈 시작해줘” • 예) 인증된 사용자에게만 서비스 하려는 경우 • “배송지키미에서 조회해줘” • 예) IoT 기기 제어 • ”네콘으로 TV켜줘”
  • 17. Custom Skill 개발 – 2/4 • 인터렉션 모델 • 사용자로부터 입력될 만한 질문들은 다양하게 입력해야함
  • 18. Custom Skill 개발 - 3/4 • Clova는 사용자로부터 입력된 발화를 분석해서 어떤 명령(intent)인지, 그 명령을 수행 하는데 필요한 값(slot)들을 Custom Skill 서버로 전달함
  • 19. Custom Skill 개발: Oauth인증서버 - 4/4 • 만약 Custom Skill이 써드파티 계정 인증이 필요하다면 익스텐 션 서버와 함께 OAuth 인증을 구현하셔야 필요합니다. • OAuth 인증 서버는 Clova console에 등록된 인증정보를 이용하여 인증을 처리하고, 인 증이 완료되면 접근토큰을 반환 해야 합니다. • 인증서버 구축 예) 배달의 민족, LG 전자, LGU + 관련 가이드: https://www.slideshare.net/ClovaPlatform/clova-tech-summit-3-clova-extension-oauth-89597569
  • 20. VUX – Voice User Experience 고려사항
  • 21. 음성인식 - 호출어 • Clova Skill은 작동을 위해 호출어가 인식되는지 확인 필요 • 예) “나라수도퀴즈 시작해줘” à ‘나라수도퀴즈’는 인식이 잘되는 호출어 • 예) “배송지키미 시작해줘” à 배송지킴이로 인식되는 경우가 종종 있었음 • 호출어에 영단어가 있는 경우 호출어를 추가 등록해서 오인식 방지 가능 • 예) “포커스온미 시작해줘”, “focus on me 시작해줘” • 호출어는 3개까지 가능하며, 정책에 맞지 않는 경우 거절 가능 • 호출어는 브랜드, 저작권 이슈가 없어야 함 • 예) ”배달의민족 시작해줘” , “배민 시작해줘” • 호출어가 인식이 안되는 브랜드일 경우, 8주전에 제휴채널로 음성인식 부 스팅 필요
  • 22. 음성인식 – 인식이 잘 안되는 상황 • 아무리 음성인식율이 뛰어나더라도 아래 예외 케이스는 어쩔 수 없음 • 실외, 카페 등 소음, 잡음이 큰 환경 • 부정확한 어린 아이의 발음 • 사람도 헷갈리는 발음 (ex: 삼십삼, 삽십사 ) • 답변할 타이밍에 답변을 안하고 묵음이 들어 오는 경우 • 음성인식이 잘 안되는 경우 설계했던 의도로 분석 되지 않아 엉뚱한 답변 이 나가지 않도록 VUX 설계가 필요 • 단순히 방금한 말을 반복하라고 하기보다는, 상황을 알려주고 사용자에게 선택지를 주어서 답변을 유도하는 것 좋음 • 뭐라고 하셨나요? 다시 한번 말씀해 주세요 • 방금 나간 질문은 000입니다. A 또는 B 중에 하나를 말씀해주세요.
  • 23. 사용자 상황 • 사용자 상황에 따라 음성이 편리한 경우를 고려해야함 • 손을 못쓰는 상황 • 요리할 때 • 운전할 때 • 나갈 때 • 운동할 때 • 몸을 움직이기 싫은 상황 • 누워 있을 때 • 다른 작업을 할 때 • 스피커는 가족과 함께 쓰는 경우가 많음 • 아침 출근, 저녁 퇴근, 주말 등 • 사용자는 본인 외에 가족도 사용할 수 있음
  • 24. 음성으로 모든 처리가 가능하게 • 스킬을 구동한 다음 사용자가 자연스럽게 음성으로 사용할 수 있어야 함 • 예) 000 시작해줘 à 안녕하세요. 000입니다. • 하고 끝...그 다음에 어쩌라는 건지???? • 예) 000 시작해줘 à 안녕하세요. 000입니다. 사용법이 궁금하면 ‘도움말’이라고 하 세요. • ‘도움말’이라도 있으니 다행, 하지만 좀 더 편리하게 안내해주면 좋겠다 • 예) 000 시작해줘 à 안녕하세요. 000입니다. ㄱㄱㄱ을 하시려면 AAA라고 하시고, ㄴ ㄴㄴ을 하시려면 BBB라고 하세요. • 아하, AAA나 BBB로 하면 되겠구나. • 예) 000 시작해줘 à 안녕하세요. 000입니다. ㄱㄱㄱ을 하시려면 AAA라고 하시고, ㄴ ㄴㄴ을 하시려면 BBB라고 하세요. 그 외 사용법이 궁금하면 ‘도움말’이라고 하세요. • 아하, AAA나 BBB로 하면 되겠구나. 잘 모를 경우는 ‘도움말’이라고 하면 되겠군
  • 25. 챗봇의 전문 분야(도메인) 중심으로 대화 설계 • 챗봇이 처음 실행될 때 사용자에게 할 수 있는 것에 대해 명확히 가이드 • 예) Clova Dev Days 봇 • Clova Dev Days 세미나 행사 안내, 참가 신청 기능 중심 • 잡담에 대한 대응 기능도 들어 있지만, 거의 사용하지 않음 • 챗봇을 만든 의도에 맞는 도메인 중심의 대화를 해야 중의성이 해결됨 • 같은 단어라도 업무 분야에 따라 뜻이 달라지는 경우가 있음 • 예) 세션: 세미나 행사에서는 강의를 뜻하며, SW개발에서는 웹서버와 클라이언트간의 연결성을 뜻함 • 사용자가 자연스러운 대화로 원하는 작업을 수행할 수 있게 • 사용자는 길고 복잡한 말로 명령을 내리지 않음 • 짧고 간결한 단어와 대화 중심으로 • 사용자가 원하면 언제든 명령을 취소하고 다시 할 수 있게 • 사용자가 챗봇의 시나리오대로 하지 않는 경우가 많음 • 그럴 경우를 대비해서 시나리오를 원점으로 언제든 돌릴 수 있어야 함
  • 26. 1. 중복되지 않게 다양한 표현의 문장을 입력합니다. ( 최소 30 문장 ) 2. 비슷한 용언은 대표 문장 하나만 입력합니다. 3. 의미/형태가 비슷한 문장이 다른 intent에 섞이지 않게 intent를 구분합니다. 4. slot은 대표어를 등록하고, 비슷한 말은 유사어에 등록합니다. 5. 같은 slot이 여러 intent에 사용되면 slot이름은 동일한 이름으로 쓰여야 합니다. 6. slot은 명사형이 아닌 동사나 형용사로 설정하지 마세요. 7. 슬롯이 다르고, 표현이 비슷한 문장은 별개의 intent가 아니라 하나의 intent로 묶어 줍니다. ( intent는 자사 서비스 분류기준에 1:1로 매핑하기보다는 언어의 표현상의 유사성에 따라 분류합니다.) 인터렉션 모델 작성 원칙
  • 28. Chatbot – 동물소리 번역기 ‘멍멍이’ • 개요 • 사람이 동물 흉내 소리(의성어)를 내면, 거기에 맞는 동물 이름과 응답을 리턴 • 호출: “클로바, 멍멍이 시작해줘” • 챗봇 개발 • FAQ형태로 의성어와 거기에 맞는 동물에 대한 답변 매칭
  • 29. Chatbot – Clova Dev Days 챗봇 • 챗봇 사용하기 • https://talk.naver.com/ct/wcdkve (네이버 톡톡) • 대화 설계 • Clova Chatbot builder에 행사일정, 주제, 장소 등 세미나 관련 질문 답변 FAQ 등록
  • 30. Chatbot – Clova Dev Days 챗봇 • 대화설계
  • 31. Chatbot – Clova Dev Days 챗봇 • 세미나 신청 처리 • Ncloud Function을 활용한 API 개발 • 행사일정 API : 행사 일정 조회 • 세미나 참가 등록/수정 API : 이메일, 이름, 소속 입력/수정 • 세미나 등록 확인 API • 세미나 취소 API
  • 32. Custom Skill – 퀴즈류: 나라수도퀴즈, 과일초성퀴즈, 수수께끼 • 개요 • 클로바가 문제를 내고 사용자가 정답을 맞추는 스킬 • 3 ~ 10 레벨 문제가 있으며, 5문제중 3문제를 맞추면 다음 레벨로 승급 • 호출: ‘클로바, 나라수도퀴즈 시작해줘’
  • 33. Custom Skill – 퀴즈류: 나라수도퀴즈, 과일초성퀴즈, 수수께끼 • 대화설계 • levelIntent : 레벨 이동 • passIntent : 문제 스킵 • hintIntent : 문제 힌트 • keepgoingIntent : 문제 풀이 계속 • helpIntent : 명령어 도움말 • againQuesionIntent : 다시 듣기 • getScoreIntent : 점수 확인 • answerIntent : 문제답 DB • 나라수도 퀴즈는 수도명 100여개 • 과일초성퀴즈는 과일명 50여개 • 수수께끼는 수수께끼 정답 100여개
  • 34. Custom Skill – 퀴즈류: 나라수도퀴즈, 과일초성퀴즈, 수수께끼 • 퀴즈 처리 알고리즘 • 중복 문제 출제 방지 • 레벨 이동 • 문제 패스 • 레벨 승급 • 점수 매기기 • 오답 처리가 가장 난이도가 높음 • Slot에 있는 오답이면 slot으로 값이 넘어 오며 확실히 오답 처리 가능 • Slot에 없는 오답이면 slot이 비어 있음 • 음성인식이 안되는 경우도 오답으로 빠짐 • 레벨이동, 힌트, 패쓰 등 다른 명령을 내리다가 오인식되어도 오답으로 빠짐 • 퀴즈와 상관없는 말이나 잡음이 들어와도 오답으로 빠짐
  • 36. ‘로또마법사’ 스킬 개발 • 1단계: 스킬을 호출하면 서버의 응답이 스피커로 출력되도록 • 사용자: “로또마법사 시작해줘” • 클로바: “로또마법사입니다. 대박 예감 로또번호를 추천해드릴게요. 123456” • 2단계: 특정 의도의 발화가 들어오면 지정된 서버의 응답을 출력 • 사용자: “로또 번호 2개 골라줘” • 클로바: “대박 예감 로또 번호 2개 추천해드립니다. 123456, 789101112” • 3단계: 사용자와 대화를 이어 가도록 • 사용자: “로또마법사 시작해줘” • 클로바: “로또마법사입니다. 로또 번호를 몇개 골라 드릴까요?” • 사용자: “5개” • 클로바: “대박 예감 로또 번호 5개 추천해드립니다. ……………”
  • 37. 1.1. 개발자 콘솔에 ‘로또마법사’ 스킬 등록 • 호출이름에 ‘로또마법사’ 입력
  • 38. 1.2. 서버 설정 – Ncloud Function 액션 생성 • NCP 회원 가입 후 Cloud Function으로 액션생성 • https://console.ncloud.com/cloudFunction/action https://github.com/okgosu/CEK-CloudFunction- Exam/blob/master/CEK_lotto_dev1.js
  • 39. 1.3. 서버 설정 – Ncloud Function 서버 주소 설정
  • 40. 1.4. 인터렉션 모델 – recomendLottoNumbers 인텐트 생성
  • 41. 1.5.스피커 테스트 • 개발자 콘솔에 test할 네이버 계정 등록 확인 • 음성 테스트 방법1 – Clova 앱 • Clova 앱에 해당 아이디로 로그인 후 • à “000 시작해줘” 라고 했을 때 익스텐션 서버로 LaunchRequest가 오는지, 익스텐션의 응답이 음성으로 나가는지 확인 • 음성 테스트 방법2 – Friends 스피커 • 테스터로 등록된 아이디로 Clova앱을 이용해서 스피커 설정 • à “000 시작해줘” 라고 했을 때 익스텐션 서버로 LaunchRequest가 오는지, 익스텐션의 응답이 음성으로 나가는지 확인
  • 42. 2.1. 인텐트 처리 • recomendLottoNumbers 인텐트 처리 https://github.com/okgosu/CEK-CloudFunction-Exam/blob/master/CEK_lotto_dev2.js intentRequest(cekResponse) { console.log('intentRequest') const intent = this.request.intent.name const slots = this.request.intent.slots switch (intent) { case 'recomendLottoNumbers': cekResponse.setSimpleSpeechText('로또 추천번호 알려드릴게요. 추천 번호는 7, 8, 9 10, 11, 12, 13 입니다.'); break; case 'Clova.CancelIntent': break; case 'Clova.YesIntent': break; case 'Clova.NoIntent': break; case 'Clova.GuideIntent': break; } if (this.session.new == false) { cekResponse.setMultiturn() } }
  • 43. 2.2. Slot 처리 • recomendLottoNumbers 인텐트에 번호 갯수 slot 추가 • 이름: lottoCountSlot • 타입: CLOVA.NUMBER
  • 44. 2.3. slot 처리 • recomendLottoNumbers 인텐트로 들어오는 번호 갯수 slot 처리 https://github.com/okgosu/CEK-CloudFunction-Exam/blob/master/CEK_lotto_dev3.js case 'recomendLottoNumbers': const lottoCountSlot = slots.lottoCountSlot; var lottoCnt = 1; if(lottoCountSlot != undefined && lottoCountSlot.value != null ){ lottoCnt = lottoCountSlot.value; } if(lottoCnt==1) { cekResponse.setSimpleSpeechText('이번 주 추천 번호는 1, 2, 3, 4, 5, 6 입니다.'); } else { cekResponse.setSimpleSpeechText(lottoCnt + '개의 로또를 요청하셨군요. 하지만 번호는 한개만 알려드릴게요. 추천 번호는 7, 8, 9 10, 11, 12, 13 입니다.'); } break;
  • 45. 3. 멀티턴 처리 • 멀티턴 처리 https://github.com/okgosu/CEK-CloudFunction-Exam/blob/master/CEK_lotto_dev4.js cekResponse.appendSpeechText(lottoCnt + '개의 로또를 요청하셨군요. 하지만 번호는 한개만 알려드릴게요. 추천 번호는 7, 8, 9 10, 11, 12, 13 입니 다.'); cekResponse.appendSpeechText('다른 번호를 원하시면, 원하시는 번호 갯수를 다시 말씀해주세요.'); cekResponse.setMultiturn({ lottoCnt: lottoCnt, })
  • 46. Appendix. • Clova 발표자료: https://www.slideshare.net/clovaplatform • Clova 강의 동영상: https://www.youtube.com/watch?v=sOW- YwR_YWw&list=PLq8dHmDf5DDWRN4VWkc0QrBlsEsbs3QwC • Clova Dev Days 행사 알림 챗봇: https://talk.naver.com/ct/wcdkve • Clova 플랫폼 개발자 문서 : https://developers.naver.com/console/clova/guide/ • Design 챕터 / Clova Extensions Kit 챕터 / Clova Developer Console 챕터 참고 • 튜토리얼 및 샘플 코드 참고 • 샘플 코드 Github • 마법 구슬 : https://github.com/naver/clova-extension-sample-magicball • 빗소리 : https://github.com/naver/clova-extension-sample-rainsound • 주사위 놀이 : https://github.com/naver/clova-extension-sample-dice • 코인 헬퍼 : https://github.com/naver/clova-extension-sample-coinhelper