Kakao i Agent::구현 시나리오::오디오 재생 제어

페이지 이동경로

오디오 재생 제어

Agent Interface에는 Service Agent의 물리적 버튼 또는 GUI 상의 버튼을 사용하여 오디오 재생 제어를 위한 버튼 액션이 정의되어 있습니다. 이 시나리오는 음성 명령어가 아닌 이런 버튼을 사용하여 오디오의 재생, 정지, 이전 곡 재생 등의 재생 제어를 수행하는 과정을 설명합니다.
버튼을 통해 오디오 재생을 제어하는 방식은 PlaybackController 인터페이스에서 제공하며, 제어할 수 있는 음원 종류는 카카오 i SDK에 전달되는 음원 중 음악과 라디오 콘텐츠가 있습니다.

안내
해당 기능을 사용하기 위해서는 AudioPlayer.Player Instruction의 요청 파라미터 항목 중 controllablecontent로 설정해야 합니다.

음원 재생

음원 재생(버튼) 그림음원 재생(버튼) 시나리오 예시

  1. 사용자가 Service Agent(디바이스) 또는 GUI 상의 버튼을 사용하여 음원 재생을 동작시키면, Service Agent는 PlaybackController.PlayCommanded Event를 KVS에 전송합니다.

    PlaybackController.PlayCommanded
    구분 설명
    Interface PlaybackController.PlayCommanded: Service Agent에서 음원 재생을 KVS에 요청
    메시지 타입: Event
    인터페이스 타입: PlaybackController
    인터페이스: PlayCommanded
    Body handled로 구성됨
    handled: false
  2. 지정된 텍스트 명령어의 전달을 요청하기 위해 KVS는 Recognizer.RequestText Instruction을 Service Agent에 전송합니다.

    Recognizer.RequestText
    구분 설명
    Interface Recognizer.RequestText: KVS가 Service Agent로 Text Event를 보내도록 요청
    메시지 타입: Instruction
    인터페이스 타입: Recognizer
    인터페이스: RequestText
    Body utterance로 구성됨
    utterance: 음악 틀어줘
  3. 지정된 텍스트 명령어를 KVS에 전달하기 위해 Service Agent는 Recognizer.Text Event를 KVS에 전송합니다.

    Recognizer.Text
    구분 설명
    Interface Recognizer.Text: 음성이 아닌 텍스트 발화 입력 시, 지정된 텍스트 명령어를 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: Recognizer
    인터페이스: Text
    Body utterance로 구성됨
    utterance: 음악 틀어줘
  4. KVS는 음성 응답을 전달하기 위해 Service Agent에 Synthesizer.Speak Instruction을 전송합니다.

    Synthesizer.Speak
    구분 설명
    Interface Synthesizer.Speak: Service Agent에 음성 응답이 필요할 때마다 KVS가 Service Agent에 전달
    - 메시지 타입: Instruction
    - 인터페이스 타입: Recognizer
    - 인터페이스: Text
    Body - url: 음성 URL
    - text: 좋아할 만한 노래 들려줄게요
  5. KVS는 음악 재생을 지시하기 위해 AudioPlayer.Play Instruction을 Service Agent에 전송합니다.

    • AudioPlayer.Play Instruction의 음악 콘텐츠는 Play 채널의 Content Audio Player의 Queue에 등록됩니다.
    AudioPlayer.Play
    구분 설명
    Interface AudioPlayer.Play: KVS가 Service Agent에 오디오 스트림의 재생을 시작하도록 지시
    - 메시지 타입: Instruction
    - 인터페이스 타입: AudioPlayer
    - 인터페이스: Play
    Body - 음원 정보: 음원 1
    - PlayChannel: content
    - controllable: PLAY, STOP, RESUME
  6. Service Agent가 음성 응답(“좋아할 만한 노래 들려줄게요”)을 출력하고, Synthesizer.Speak.Started Event를 KVS에 전송합니다.

    Synthesizer.Speak.Started
    구분 설명
    Interface Synthesizer.Speak.Started: Service Agent가 Speak Instruction을 처리하고 합성된 음성의 재생을 시작한 후에 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: Synthesizer
    인터페이스: SpeakStarted
  7. 음성 답변 출력이 완전히 종료되면, Service Agent는 KVS에 Synthesizer.SpeakFinished Event를 전송합니다. Synthesizer.Speak.Started

    구분 설명
    Interface Synthesizer.SpeakFinished: Service Agent가 Speak Instruction을 처리하고 합성된 음성의 재생을 마친 후에 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: Synthesizer
    인터페이스: SpeakFinished
  8. Service Agent는 음악을 재생하고, KVS에 AudioPlayer.Started Event를 전송합니다. AudioPlayer.Started

    구분 설명
    Interface AudioPlayer.Started: Service Agent가 오디오 스트림의 재생을 시작했음을 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: Started
    Body offset, sates로 구성됨
    offset: 0
    states:
        - AudioPlayer.ContentState(state: PLAYING)
        - AudioPlayer.PlayState(state: PLAYING)

재생 일시 중지

재생 일시 중지 그림재생 일시 중지

  1. 사용자가 디바이스의 버튼 또는 GUI 상의 버튼을 사용하여 재생 일시 중지를 요청하면, Service Agent는 PlaybackController.PauseCommanded Event를 KVS에 전송합니다.

    PlaybackController.PauseCommanded
    구분 설명
    Interface PlaybackController.PauseCommanded: 사용자가 음성 요청이 아닌 하드웨어 또는 소프트웨어 버튼을 사용하여 미디어 항목의 재생을 일시 중지할 때, Service Agent에서 KVS로 전송
    메시지 타입: Event
    인터페이스 타입: PlaybackController
    인터페이스: PauseCommanded
    Body handled로 구성됨
    handled: false
  2. 지정된 텍스트 명령어의 전달을 요청하기 위해 KVS는 Recognizer.RequestText Instruction을 Service Agent에 전송합니다.

    Recognizer.RequestText
    구분 설명
    Interface Recognizer.RequestText: 지정된 명령어를 전송하도록 요청하기 위해 KVS가 Service Agent에 전송
    메시지 타입: Instruction
    인터페이스 타입: Recognizer
    인터페이스: RequestText
    Body utterance로 구성됨
    utterance: 일시정지
  3. 지정된 텍스트 명령어를 KVS에 전달하기 위해 Service Agent는 Recognizer.Text Event를 KVS에 전송합니다.

    Recognizer.Text
    구분 설명
    Interface Recognizer.Text: 음성이 아닌 텍스트 발화 입력 시, 지정된 텍스트 명령어를 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: Recognizer
    인터페이스: Text
    Body utterance로 구성됨
    utterance: 일시정지
  4. Recognizer.Text Event에 대한 응답으로 KVS는 Service Agent에 AudioPlayer.Stop Instruction을 전송합니다.

    AudioPlayer.Stop
    구분 설명
    Interface AudioPlayer.Stop: KVS가 Service Agent에 오디오 스트림의 재생을 중지하도록 지시
    - 메시지 타입: Instruction
    - 인터페이스 타입: AudioPlayer
    - 인터페이스: Stop
    Body - utterance: 일시정지
  5. Service Agent는 음악 재생을 일시 정지하고, AudioPlayer.Stoppted Event를 KVS에 전송합니다.

    AudioPlayer.Stop
    구분 설명
    Interface AudioPlayer.Stopped: KVS가 Service Agent에 오디오 스트림의 재생을 중지하도록 지시
    - 메시지 타입: Instruction
    - 인터페이스 타입: AudioPlayer
    - 인터페이스: Stoppted
    Body - offset: 88521
    - states: AudioPlayer.ContentState(state: STOPPED), AudioPlayer: PlayState(state: STOPPED)

음원 재생 재개

음원 재생 재개 그림음원 재생 재개

  1. 사용자가 디바이스의 버튼 또는 GUI 상의 버튼을 사용하여 음원 재생 재개를 요청하면, Service Agent는 PlaybackController.ResumeCommanded Event를 KVS에 전송합니다.

    PlaybackController.ResumeCommanded
    구분 설명
    Interface PlaybackController.ResumeCommanded: Service Agent가 음원 재생 재개를 KVS(Kakao i Virtual agent Service)에 요청
    메시지 타입: Event
    인터페이스 타입: PlaybackController
    인터페이스: ResumeCommanded
    Body handled로 구성됨
    handled: false
  2. 지정된 텍스트 명령어의 전달을 요청하기 위해 KVS는 Recognizer.RequestText Instruction을 Service Agent에 전송합니다.

    Recognizer.RequestText
    구분 설명
    Interface Recognizer.RequestText: 지정된 명령어를 전송하도록 요청하기 위해 KVS가 Service Agent에 전송
    메시지 타입: Instruction
    인터페이스 타입: Recognizer
    인터페이스: RequestText
    Body utterance로 구성됨
    utterance: 계속해
  3. 지정된 텍스트 명령어를 KVS에 전달하기 위해 Service Agent는 Recognizer.Text Event를 KVS에 전송합니다.

    Recognizer.Text
    구분 설명
    Interface Recognizer.Text: 음성이 아닌 텍스트 발화 입력 시, 지정된 텍스트 명령어를 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: Recognizer
    인터페이스: Text
    Body utterance로 구성됨
    utterance: 계속해
  4. KVS는 음악 재생 정보를 AudioPlayer.Play Instruction으로 Service Agent에 전송합니다.

    AudioPlayer.Play
    구분 설명
    Interface AudioPlayer.Play: KVS가 Service Agent에 오디오 스트림의 재생을 시작하도록 지시
    - 메시지 타입: Instruction
    - 인터페이스 타입: AudioPlayer
    - 인터페이스: Play
    Body - 음원 정보: 음원 1
    - PlayChannel: content
    - controllable: PLAY, STOP, RESUME
  5. Service Agent는 음악을 재생을 다시 시작하고, KVS에 AudioPlayer.Started Event를 전송합니다.

    AudioPlayer.Started
    구분 설명
    Interface AudioPlayer.Started: Service Agent가 오디오 스트림의 재생을 시작했음을 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: Started
    Body offset, states로 구성됨
    offset: 88521
    states:
        - AudioPlayer.ContentState(state:PLAYING)
        - AudioPlayer.PlayState(state:PLAYING)

다음 음원 재생

다음 음원 재생 그림다음 음원 재생 시나리오 예시

  1. 사용자가 디바이스의 버튼 또는 GUI 상의 버튼을 사용하여 다음 음원 재생을 동작시키면, Service Agent는 PlaybackController.NextCommanded Event를 KVS에 전송합니다.

    PlaybackController.NextCommanded
    구분 설명
    Interface PlaybackController.NextCommanded: Service Agent에서 다음 음원 재생을 KVS에 요청
    메시지 타입: Event
    인터페이스 타입: PlaybackController
    인터페이스: NextCommanded
    Body handled로 구성됨
    handled: false
  2. 지정된 텍스트 명령어의 전달을 요청하기 위해 KVS는 Recognizer.RequestText Instruction을 Service Agent에 전송합니다.

    Recognizer.RequestText
    구분 설명
    Interface Recognizer.RequestText: 지정된 명령어를 전송하도록 요청하기 위해 KVS가 Service Agent에 전송
    메시지 타입: Instruction
    인터페이스 타입: Recognizer
    인터페이스: RequestText
    Body utterance로 구성됨
    utterance: 다음
  3. 지정된 텍스트 명령어를 KVS로 전달하기 위해 Service Agent는 Recognizer.Text Event를 KVS에 전송합니다.

    Recognizer.Text
    구분 설명
    Interface Recognizer.Text: 음성이 아닌 텍스트 발화 입력 시, 지정된 텍스트 명령어를 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: Recognizer
    인터페이스: Text
    Body utterance로 구성됨
    utterance: 다음
  4. KVS는 음악 재생 정보를 AudioPlayer.Play Instruction으로 Service Agent에 전달합니다.

    • AudioPlayer.Play Instruction의 음악 콘텐츠는 Player 채널에 포함되고, Content Audio Player의 Queue에 등록됩니다.
    AudioPlayer.Play
    구분 설명
    Interface AudioPlayer.Play: KVS가 Service Agent에 오디오 스트림의 재생을 시작하도록 지시
    - 메시지 타입: Instruction
    - 인터페이스 타입: AudioPlayer
    - 인터페이스: Play
    Body 음원 정보: 음원 1
    - PlayChannel: content
    - controllable: PLAY, STOP, RESUME
  5. Service Agent는 음악 재생을 중지하고, AudioPlayer.Stoppted Event를 KVS에 전송합니다.

    AudioPlayer.Stoppted
    구분 설명
    Interface AudioPlayer.Stoppted: Service Agent가 다음 Instruction 중 하나를 받고 오디오 스트림의 재생을 중지했음을 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: Stoppted
    Body offset, states로 구성됨
    offset: 98521
    states:
        - AudioPlayer.ContentState(state: STOPPED)
        - AudioPlayer.PlayState(state: STOPPED)
  6. Service Agent가 음원 2을 재생하고, AudioPlayer.Started Event를 KVS에 전송합니다.

    AudioPlayer.Started
    구분 설명
    Interface AudioPlayer.Started: Service Agent가 오디오 스트림의 재생을 시작했음을 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: Started
    Body offset, states로 구성됨
    offset: 0
    states:
        - AudioPlayer.ContentState(state: PLAYING)
        - AudioPlayer.PlayState(state: PLAYING)
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 documentation@kakaoenterprise.com 으로 제보해주세요.