Developers | Guide
Search…
⌃K

Text

텍스트 명령을 Play 로 전달하기 위한 규격

Version

최신 버전은 1.5 입니다.
Version
Date
Description
1.0
2019.11.24
규격 추가
1.1
2020.03.23
TextInput event 에 asrContext 필드 추가
1.2
2020.06.05
TextInput event 의 sessionId 필드 삭제 TextInput event 의 asrContext 에 playServiceId 필드 추가
1.3
2020.09.02
TextSource 에 playServiceId 추가
1.4
2020.11.13
TextRedirect directive 추가
1.5
2020.11.30
TextSourceFailed, TextRedirectFailed event 추가

SDK Interface

TextAgent 사용

Text interface 규격에 따른 디바이스의 동작 제어는 TextAgent 가 처리합니다.
Android
iOS
Linux
NuguAndroidClient instance 를 통해 TextAgent instance 에 접근할 수 있습니다.
val textAgent = nuguAndroidClient.textAgent
NuguClient instance 를 통해 TextAgent instance 에 접근할 수 있습니다.
let textAgent = nuguClient.textAgent
CapabilityFactory::makeCapability 함수로 TextAgent 를 생성하고 NuguClient 에 추가해 주어야합니다.
auto text_handler(std::shared_ptr<ITextHandler>(
CapabilityFactory::makeCapability<TextAgent, ITextHandler>()));
nugu_client->getCapabilityBuilder()
->add(text_handler.get())
->construct();

텍스트 명령

임의의 텍스트 명령을 TextInput event 로 요청할 수 있습니다.
Android
iOS
Linux
textAgent.requestTextInput(text)
textAgent.requestTextInput(text: textInput, requestType: .normal)
text_handler->requestTextInput(text)

Context

{
"Text": {
"version": "1.5"
}
}

Directive

TextSource

  • 외부 시스템에서 Device Gateway를 사용하여 직접 연동하는 경우에만 사용
{
"header": {
"namespace": "Text",
"name": "TextSource",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.5"
},
"payload": {
"text": "{{STRING}}",
"token": "{{STRING}}",
"playServiceId": "{{STRING}}"
}
}
parameter
type
mandatory
description
text
string
Y
디바이스로 전달한 뒤 context를 추가하여 다시 Device Gateway로 전송해야 하는 text
token
string
Y
전송하는 text를 식별하기 위한 unique string
playServiceId
string
N
값이 존재하면 TextInput의 playServiceId 값을 설정하는데 사용 ASR.ExpectSpeech 보다 우선하여 동작 함. (TextSource 에 playServiceId 가 있는 경우 ASR.ExpecSpeech 에서 받은 playServiceId, domainTypes, asrContext 를 TextInput 으로 전달하지 않음)

TextRedirect

Play에서 다른 Play로 처리를 넘기는데, 특정 Text를 전달해서 실행하고자 하는 경우에 사용
{
"header": {
"namespace": "Text",
"name": "TextRedirect",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.5"
},
"payload": {
"text": "{{STRING}}",
"token": "{{STRING}}",
"playServiceId": "{{STRING}}",
"targetPlayServiceId": "{{STRING}}"
}
}
parameter
type
mandatory
description
text
string
Y
디바이스로 전달한 뒤 context를 추가하여 다시 Device Gateway로 전송해야 하는 text
token
string
Y
전송하는 text를 식별하기 위한 unique string
playServiceId
string
Y
디렉티브를 지시한 PlayServiceId (Play에서 NPK 통한 응답일때는 라우터가 알아서 채워줌)
targetPlayServiceId
string
N
값이 존재하면 TextInput의 playServiceId 값을 설정하는데 사용 명확히 라우팅되어야 하는 Play를 지정하는 경우에 사용되고, 지정하지 않으면 라우팅 로직에 의해 라우팅 ASR.ExpectSpeech 보다 우선하여 동작 함. (TextRedirect에 targetPlayServiceId가 있는 경우 ASR.ExpecSpeech 에서 받은 playServiceId, domainTypes, asrContext 를 TextInput 으로 전달하지 않음)

Events

TextInput

{
"header": {
"namespace": "Text",
"name": "TextInput",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.5"
},
"payload": {
"text": "{{STRING}}",
"token": "{{STRING}}",
"sessionId": "{{STRING}}",
"playServiceId": "{{STRING}}",
"domainTypes": [
"{{STRING}}"
],
"asrContext": {
"task": "{{STRING}}",
"sceneId": "{{STRING}}",
"sceneText": [
"{{STRING}}"
],
"playServiceId" : "playServiceId"
}
}
}
parameter
type
mandatory
description
text
string
Y
TextSource directive 에서 전달한 text 디바이스에서 생성한 임의의 text
token
string
N
TextSource에 의해 생성된 이벤트인 경우 TextSource의 token을 그대로 사용 Chips interface, Display interface, Routine interface 에 의해 생성된 이벤트의 경우 해당 directive 에서 전달받은 token 을 사용 디바이스에서 생성된 text는 임의의 값을 갖거나 필드를 갖지 않아도 됨
playServiceId
string
N
ASR/Display/Routine/Text interface 에 의해 생성된 이벤트의 경우 해당 directive 에서 전달받은 playServiceId 를 사용
domainTypes
array of string
N
ExpectSpeech에 의한 발화인 경우에만 ExpectSpeech에서 받은 domainTypes를 적용
asrContext
object
N
ExpectSpeech에 의한 발화인 경우에만 ExpectSpeech에서 받은 asrContext 를 적용
asrContext.task
string
N
-
asrContext.sceneId
string
N
-
asrContext.sceneText
array of string
N
-
asrContext.playServiceId
string
N
-

TextSourceFailed

{
"header": {
"namespace": "Text",
"name": "TextSourceFailed",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.5"
},
"payload": {
"playServiceId": "{{STRING}}",
"token": "{{STRING}}",
"errorCode": "{{STRING}}"
}
}
parameter
type
mandatory
description
token
string
Y
TextSource에서 정의한 token
errorCode
string
Y
NOT_SUPPORTED_STATE

TextRedirectFailed

{
"header": {
"namespace": "Text",
"name": "TextRedirectFailed",
"messageId": "{{STRING}}",
"dialogRequestId": "{{STRING}}",
"version": "1.5"
},
"payload": {
"playServiceId": "{{STRING}}",
"token": "{{STRING}}",
"errorCode": "{{STRING}}"
}
}
parameter
type
mandatory
description
token
string
Y
TextSource에서 정의한 token
errorCode
string
Y
NOT_SUPPORTED_STATE
Last modified 37m ago