2. 목차
• AudioPlayer 개요
• AudioPlayer의 이해
• 적용 데모
• AudioPlayer 관련 기술 스펙
• AudioPlayer 인터페이스
• PlaybackController 인터페이스
• TemplateRuntime 인터페이스
• AudioPlayer 스킬 개발
• 메타 데이터 준비
• 오디오 재생 처리 (AudioPlayer)
• 오디오 컨트롤 처리 (PlaybackController)
• 메타 데이터 처리 (TemplateRuntime &
EventRequest 요청 처리)
• 기타 개발 팁
• 스킬 심사시 주의 사항
4. AudioPlayer의 이해
• 목적
• 커스텀 스킬을 통해 음악 또는 podcast 등을 재생
• Clova 앱, 디스플레이형 클로바 스피커에서 오디오 컨트롤러 표시 및 재생 지원
• 사용자가 오디오 컨트롤러 조작시 화면표시에 필요한 메타 정보 전달
• outputSpeech와 차이
• outputSpeech의 url에 음원을 설정하여 음원 재생은 가능
• 오디오 컨트롤러 표시 불가
• 주로 효과음 재생에 활용 가능
7. AudioPlayer 인터페이스
• 개요
• 클라이언트(클로바가 탑재된 디바이스나 클로바앱) 에게
오디오 재생 및 관련 작업을 지시
• 오디오 재생중 발생하는 다양한 이벤트를 CIC
(클로바 플
랫폼)으로 전달할 때 사용하는 네임스페이스
• 구성
• Directive:
Play,
ClearQueue,
ExpectReportPlaybackState,
StreamDeliver
• Event:
StreamRequested,
PlayStarted,
PlayStopped,
PlayFinished,
PlayPaused,
PlayResumed 등
* 개발 문서 : https://developers.naver.com/console/clova/guide/CIC/References/CICInterface/AudioPlayer.md#audioplayer
예) 커스텀 스킬에서 오디오 재생 지시
8. PlaybackController 인터페이스
• 개요
• 클라이언트(클로바가 탑재된 디바이스나 클로바앱) 에게
오디오 재생 및 출력 제어
• 음소거, 다음곡 재생, 음원 일시정지, 다시 재생, 정지
등의 동작 제어 등
• 구성
• Directive:
Next, Previous, Pause, Resume, Stop 등
• Event:
PlayCommandIssued, PreviousCommandIssued,
NextCommandIssued 등
* 개발 문서 : https://developers.naver.com/console/clova/guide/CIC/References/CICInterface/PlaybackController.md#playbackcontroller
예) 커스텀 스킬에서 PlaybackController 지시
9. TemplateRuntime 인터페이스
• 개요
• 클라이언트(클로바가 탑재된 디바이스나 클로바앱) 에게
오디오 메타 정보 전달
• 음원 아이콘, 음원제목, 출처, 제작자 아이콘, 오디오 컨트
롤 버튼 표시
• 앨범 이미지, 재생목록 표시
• 사용자로부터의 메타정보 요청 이벤트 정의
• 구성
• Directive:
RenderPlayerInfo 등
• Event:
RequestPlayerInfo 등
* 개발 문서 : https://developers.naver.com/console/clova/guide/CIC/References/CICInterface/TemplateRuntime.md#templateruntime
예) 커스텀 스킬에서 TemplateRuntime 지시
10. EventRequest 요청
• 개요
• 클라이언트의 상태 변화나 그와 관련된 부수적인 요청을 extension에 전달해야 할 때 사
용되는 요청 타입
• 클라이언트의 오디오 재생 상태에 따른 작업 처리
• 종류
• AudioPlayer.PlayFinished
• AudioPlayer.PlayPaused
• AudioPlayer.PlayResumed
• AudioPlayer.PlayStarted
• AudioPlayer.PlayStopped
• AudioPlayer.ProgressReportDelayPassed
• AudioPlayer.ProgressReportIntervalPassed
• AudioPlayer.ProgressReportPositionPassed
• AudioPlayer.StreamRequested
• TemplateRuntime.RequestPlayerInfo
* 개발 문서 : https://developers.naver.com/console/clova/guide/CEK/References/CEK_API.md#CustomExtEventRequest
12. 오디오 메타 데이터 준비
• 메타데이터 구성
• audioItemId (token)
:
오디오 아이템 마다 유일한 문자열 값
• titleText:
음원이름
• logoUrl:
제작자 아이콘
• artImageUrl :
음원 아이콘 및 앨범 자켓
• titleSubText1 : 출처
• headerText : 재생목록 제목
• stream : 음원 링크
• 예) node.js 코드 일부
• 메타 데이터 처리
• 클로바에게 재생 목록 전달
• 현재 재생중인 목록 인덱스 관리
• 이전곡 다음곡 요청시 처리시 음원 정보 전달
13. 스킬 요청 처리
• 커스텀 스킬 요청에 따라 분기 처리
• 예) node.js 코드 일부
17. 재생중인 곡명 처리
• 현재 재생중인 곡 정보
• 스킬 내에 별도의 인텐트를 만들고 인텐트가 들어왔을 때 재생중인 곡의 정보를 리턴하도록 처리
• 예) 잡소리에게 현재 노래 제목 확인해줘
18. 오디오플레이어 적용 스킬 데모 예제
• https://github.com/okgosu/CEK-CloudFunction-
Exam/blob/master/CEK_rain.js
19. 스킬 심사 요청시 주의 사항
• Extension
정보의 “오디오 플레이어 사용” 항목에 “예”로 체크
• 오디오 플레이어를 적용한 스킬의 경우 아래 사항 테스트 필수
• 클로바앱에서 오디오 컨트롤러 표시 여부
• 오디오 컨트롤러 조작 가능 여부(정지, 재생, 일시정지, 이전곡, 다음곡 등)
• 음성으로 일시정지, 재생, 이전곡, 다음곡 가능 여부 확인
20. 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