Developers | Guide
Search…
⌃K

Sound

디바이스의 음원 파일 재생을 위한 규격

Version

최신 버전은 1.0 입니다.
Version
Date
Description
1.0
2020.04.01
규격 추가

SDK Interface

SoundAgent 사용

Sound interface 규격에 따른 디바이스의 동작 제어는 SoundAgent 가 처리합니다.
Android
iOS
Linux
NuguAndroidClient instance 를 통해 SoundAgent instance 에 접근할 수 있습니다.
val soundAgent = nuguAndroidClient.getAgent(DefaultSoundAgent.NAMESPACE)
NuguAndroidClient 생성시 SoundProvider 를 추가합니다.
class MySoundProvider: SoundProvider {
...
}
NuguAndroidClient.Builder(...)
.enableSound(MySoundProvider())
NuguClient instance 를 통해 SoundAgent instance 에 접근할 수 있습니다.
let soundAgent = nuguClient.soundAgent
CapabilityFactory::makeCapability 함수로 SoundAgent 를 생성하고 NuguClient 에 추가해 주어야합니다.
auto sound_handler(std::shared_ptr<ISoundHandler>(
CapabilityFactory::makeCapability<SoundAgent, ISoundHandler>()));
nugu_client->getCapabilityBuilder()
->add(sound_handler.get())
->construct();

재생

디바이스 음원 재생이 Beep directive 로 요청될 수 있습니다.
Android
iOS
Linux
SoundProvider 를 구현합니다.
class MySoundProvider: SoundProvider {
override fun getContentUri(name: SoundProvider.BeepName): URI {
return URI.create(
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.packageName + "/" + R.raw.responsefa
.toString()
);
}
}
SoundAgentDelegate 를 추가합니다.
class MySoundAgentDelegate: SoundAgentDelegate {
func soundAgentDidChange(state: SoundState, dialogRequestId: String) {
...
}
}
soundAgent.delegate = MySoundAgentDelegate()
ISoundListener 를 추가합니다.
class MySoundListener : public ISoundListener {
public:
...
void handleBeep(BeepType beep_type) override
{
...
}
};
auto sound_listener(std::make_shared<MySoundListener>());
CapabilityFactory::makeCapability<SoundAgent, ISoundHandler>(sound_listener.get());

Context

{
"Sound": {
"version": "1.0"
}
}

Directives

Beep

Beep 유형의 음원 재생 요청입니다.
{
"header": {
"namespace": "Sound",
"name": "Beep",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.0"
},
"payload": {
"playServiceId": "{{STRING}}",
"beepName": "{{STRING}}"
}
}
parameter
type
mandatory
description
beepName
string
Y
RESPONSE_FAIL: Play 응답 실패

Event

BeepSucceeded

{
"header": {
"namespace": "Sound",
"name": "BeepSucceeded",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.0"
},
"payload": {
"playServiceId": "{{STRING}}"
}
}

BeepFailed

{
"header": {
"namespace": "Sound",
"name": "BeepFailed",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.0"
},
"payload": {
"playServiceId": "{{STRING}}"
}
}
Last modified 1yr ago