Clova Extensions Kit을 활용하여 개발된 배달의민족 익스텐션에 대해서 우아한형제들 개발자가 개발 경험을 공유하는 세션 발표 자료 입니다.
목표1. 배달의민족 Extension의 개발 목표
목표2. Clova Extension 개발 허들
목표3. 시간 낭비를 줄일 수 있는 개발팁
Clova Extensions Kit을 활용하여 개발된 라마마 익스텐션에 대해서 띵스플로우 개발자가 개발 경험을 공유하는 세션 발표 자료 입니다.
목표1. Clove Extension API 서버 개발
목표2. 라마마 익스텐션의 인터렉션 모델 개발 과정
목표3. 챗봇 컨텐츠 개발 5가지 포인트
Chatbot Extension 개요 및 Chatbot Builder 사용법Clova Platform
6월 1일 Clova Dev Days Session 3 발표자료
Session 3: Chatbot Extension 개요 및 Chatbot Builder 사용법
- Chatbot Extension 개요 및 특징
- Chatbot Extension 사례 소개
- Chatbot Builder 사용법 및 챗봇 개발 데모
Clova Extensions Kit을 활용하여 개발된 배달의민족 익스텐션에 대해서 우아한형제들 개발자가 개발 경험을 공유하는 세션 발표 자료 입니다.
목표1. 배달의민족 Extension의 개발 목표
목표2. Clova Extension 개발 허들
목표3. 시간 낭비를 줄일 수 있는 개발팁
Clova Extensions Kit을 활용하여 개발된 라마마 익스텐션에 대해서 띵스플로우 개발자가 개발 경험을 공유하는 세션 발표 자료 입니다.
목표1. Clove Extension API 서버 개발
목표2. 라마마 익스텐션의 인터렉션 모델 개발 과정
목표3. 챗봇 컨텐츠 개발 5가지 포인트
Chatbot Extension 개요 및 Chatbot Builder 사용법Clova Platform
6월 1일 Clova Dev Days Session 3 발표자료
Session 3: Chatbot Extension 개요 및 Chatbot Builder 사용법
- Chatbot Extension 개요 및 특징
- Chatbot Extension 사례 소개
- Chatbot Builder 사용법 및 챗봇 개발 데모
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Platform
Session 1: Clova Extension 음성기반 게임 기획 및 설계
- Clova Extension 개요 및 사례소개
- 구구단놀이 기획 및 설계
- 나라이름 맞추기 기획 및 설계
세션 2: Ncloud FaaS를 이용한 서버없이 Clova Extension 개발
- FaaS 개요 및 사용방법
- 구구단놀이 게임 Extension 구현
- 나라이름 맞추기 Extension 구현
<마비노기 영웅전>의 사례에 기반하여 다음의 내용을 설명합니다.
1. 국내 및 해외에서 라이브 서비스 중에 발생하는 작업장 이슈에 대응하기 위해서 실시간 로그 수집 프로세스를 구축하면서 고민하였던 내용과
2. 수집한 로그 데이터를 활용하여 온라인 액션 게임에서 캐릭터 애니메이션 패턴간의 유사도(TF-IDF, Cosine Similarity)를 분석하여 현업 실무의 어뷰징 탐지에 활용한 사례를 공유합니다.
라이브 서비스 환경에서 국내 및 해외의 실시간 로그 수집에 대해서 고민하시는 개발자나 온라인 게임에서의 봇탐지에 관심있는 분석가들에게 유용한 사례를 소개해드릴 수 있을 것으로 생각합니다.
빌드? 우선 사용부터 매뉴얼? Getting started 한 번 돌려보기 TV 리모컨 버튼 5개 전문가는 교육받아 만들어진다? 경험=시간+시행착오+성공실패 오픈소스 트러블슈팅 “메시지” 구글링 오픈소스 함부로 수정하지 마라 최신 버전을 대하는 우리의 자세 LTS로 대동단결 팀장 설득하기 오픈소스는 공짜가 아닙니다. 저도 기여하고 싶어요 2,000년 톰캣을 시작으로 Ant, Eclipse, JUnit, JMeter를 거쳐 현재 개발에 잘 사용하고 있는 Yona, Git, VSCode, Jenkins, CentOS, VirtualBox, Nginx, Node.js, Express.js, MariaDB, Uptime, Mocha, SonarQube, ZAP 이야기 등입니다.
https://www.youtube.com/watch?v=5LHOTBxG0hc
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Platform
Session 1: Clova Extension 음성기반 게임 기획 및 설계
- Clova Extension 개요 및 사례소개
- 구구단놀이 기획 및 설계
- 나라이름 맞추기 기획 및 설계
세션 2: Ncloud FaaS를 이용한 서버없이 Clova Extension 개발
- FaaS 개요 및 사용방법
- 구구단놀이 게임 Extension 구현
- 나라이름 맞추기 Extension 구현
<마비노기 영웅전>의 사례에 기반하여 다음의 내용을 설명합니다.
1. 국내 및 해외에서 라이브 서비스 중에 발생하는 작업장 이슈에 대응하기 위해서 실시간 로그 수집 프로세스를 구축하면서 고민하였던 내용과
2. 수집한 로그 데이터를 활용하여 온라인 액션 게임에서 캐릭터 애니메이션 패턴간의 유사도(TF-IDF, Cosine Similarity)를 분석하여 현업 실무의 어뷰징 탐지에 활용한 사례를 공유합니다.
라이브 서비스 환경에서 국내 및 해외의 실시간 로그 수집에 대해서 고민하시는 개발자나 온라인 게임에서의 봇탐지에 관심있는 분석가들에게 유용한 사례를 소개해드릴 수 있을 것으로 생각합니다.
빌드? 우선 사용부터 매뉴얼? Getting started 한 번 돌려보기 TV 리모컨 버튼 5개 전문가는 교육받아 만들어진다? 경험=시간+시행착오+성공실패 오픈소스 트러블슈팅 “메시지” 구글링 오픈소스 함부로 수정하지 마라 최신 버전을 대하는 우리의 자세 LTS로 대동단결 팀장 설득하기 오픈소스는 공짜가 아닙니다. 저도 기여하고 싶어요 2,000년 톰캣을 시작으로 Ant, Eclipse, JUnit, JMeter를 거쳐 현재 개발에 잘 사용하고 있는 Yona, Git, VSCode, Jenkins, CentOS, VirtualBox, Nginx, Node.js, Express.js, MariaDB, Uptime, Mocha, SonarQube, ZAP 이야기 등입니다.
https://www.youtube.com/watch?v=5LHOTBxG0hc
This document discusses Clova Face, a facial recognition technology from Naver. It can recognize faces with over 99.98% accuracy and works efficiently on CPUs. Clova Face has applications in fintech, online education, membership authentication, video editing, and mobile payments. It provides solutions like automatic self check-ins, E-KYC verification, and auto highlights for livestreams. Clova Face Sign is a SaaS version that allows clients to integrate the facial recognition capabilities through APIs and SDKs while complying with privacy regulations.
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2Clova Platform
This document discusses NCP Cloud Functions and the Clova Extension Kit (CEK). It describes how Cloud Functions can be used to build actions that are triggered by requests from CEK. Examples are provided of finding a lost phone and rolling a dice. The document also outlines future plans to more directly connect Cloud Functions and CEK and allow actions to be registered directly through the Clova developer center.
코인 헬퍼 Extension 사례를 통한 Extension 디자인/설계 세션 발표 자료 입니다.
목표 1. 코인 헬퍼 Extension의 개요를 이해한다.
목표 2. Extension의 목표 수립 과정을 살펴본다.
목표 3. Extension의 사용자 시나리오 및 스크립트를 작성 과정을 살펴본다.
목표 4. Extension의 진행 Flow 및 인터렉션 모델을 정의 하는 과정을 살펴본다.
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/
10. Clova Skill
Tools
Clova Extensions Kit는 사용자 발화를 분석한 결과
를 입력 받아 서버에서 처리하며 응답을 내보낼 수 있
으며 외부 서비스나 IoT 기기 등을 제어할 수 있습니
다.
Clova Chatbot Builder는 서버 없이 질문 답변 세트를
입력하시면 클로바, 네이버 톡톡, 라인 챗봇으로 서비
스 가능합니다.
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켜줘”
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
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
등록
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이 비어 있음
• 음성인식이 안되는 경우도 오답으로 빠짐
• 레벨이동, 힌트, 패쓰 등 다른 명령을 내리다가 오인식되어도 오답으로 빠짐
• 퀴즈와 상관없는 말이나 잡음이 들어와도 오답으로 빠짐
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
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()
}
}
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