2016-07-18 3 views
1

나는 Alexa 기술을 가지고 놀았으며 기본적인 홈 오토메이션을 찾고있다. 나는 시작하기 위해 다음과 같은 기본 의도 스키마를 정의 :Alexa intent schema issues

{ 
    "intents": [ 
    { 
     "intent": "Lock", 
     "slots": [ 
     { 
      "name" : "Door", 
      "type" : "AMAZON.LITERAL" 
     } 
     ] 
    }, 
    { 
     "intent": "Unlock", 
     "slots": [ 
     { 
      "name" : "Door", 
      "type" : "AMAZON.LITERAL" 
     } 
     ] 
    } 
    ] 
} 

을 그리고 샘플 발언 :

Lock lock {slot value|Door} 
Lock lock door {slot value|Door} 
Lock lock the door {slot value|Door} 
Unlock unlock {slot value|Door} 
Unlock unlock door {slot value|Door} 
Unlock unlock the door {slot value|Door} 

가되지 않습니다 때문에 문 이름, 자유형해야한다고되는 아이디어 사전에 알고 있습니다. 그러나, 나는 같은 문구 시도 :

lock door front 

그것은 올바른 의도를 발견을하지만, "문"슬롯 값이 추가 단어가 포함

"intent": { 
    "name": "Lock", 
    "slots": { 
    "Door": { 
     "name": "Door", 
     "value": "door front" 
    } 
    } 
} 

이 정상인가요, 아니면 부산물을 AMAZON.LITERAL 사용 중? 나 또한 사용자 정의 슬롯 유형을 시도했지만 여러 단어 장치 이름이 제대로 작동하지 않는 것 같으며 항상이 경우 마지막 단어를 사용합니다.

답변

2

내가 '문'단어로 끝나는대로 발언을 정의하는 것입니다 :

Lock lock {slot value|Door} door 

따라서는, 사용자가 말을해야합니다 :

Alexa, ask Lock lock kitchen door 

그래서 당신은 mostlikely 문 형식으로 하나 개의 단어를받을 것 . 그런 다음 문자열을 파싱합니다. 정확한 평등을 위해 테스트하지 않고 포함 시키려고 할 수 있습니다. 아마존 자습서에서 언급하지 않았으므로 결코 LITERAL 유형을 사용하지 않는다는 것을 인정해야합니다. 따라서 사용자 정의 유형을 정의하고 문 유형에 가능한 값을 나열합니다.

조명/온도 조절기 켜기/끄기는 다른 이야기입니다. 당신은 그것을 위해 알렉사 SmartHome API를 사용해야합니다. 그런 다음 '켜기/끄기', '설정 값'등 Alexa의 예약어가됩니다. SmartHome API에는 이러한 질문 (의도적 인 질문)이 없으므로 발언이나 맞춤 슬롯 유형이 없습니다. 필요한 것은 처리 Discovery 요청과 Control 요청을 구현하는 것입니다. 사용자가 장치 공급 업체의 공식 앱/계정에 장치 이름을 설정하고 Alexa가 장치를 발견하면 (Discovery 요청으로 인해) 기술이 공급 업체 서버에서 장치 설명을 가져 와서 Alexa에 제공합니다. Alexa가 사용 가능한 장치의 이름을 알 수있는 방법입니다.

+0

나는 리터럴이 최적이 아니지만 사용자가 시스템을 설정할 때 원하는 모든 값을 만들 수 있다는 것에 동의합니다. 특히, 조명/온도 조절기를 켜고 끄는 것에 대해 이야기 할 때 .... 사용자는 그 (것)들에게 그 (것)들에게 의미심장 한 이름을 주어야 할 것입니다. 분명히,이 이름들은 미리 알 수 없었을 것입니다. 커스텀 슬롯을 만들고 가능성있는 값을 넣을 수는 있지만, 저에게 무엇을 사 겠는 지 잘 모르겠습니다. – Matt

+0

smarthome api는 연결하는 계정에 문제가 있지만 올바른 방법으로 보입니다. 로그인 페이지가 표시되며 상태 및 코드와 함께 스킬 API로 이동하는 요청을 보지만 항상 오류가 발생합니다. ( – Matt

+0

@Matt, "오류"에 대해 자세히 설명해 주시겠습니까? – rightaway717

1

업데이트 : 내가 떠난 서적에 대해 작성한 의견은 날짜가 있습니다. 그것을 지적 주셔서 감사합니다. LITERAL은 유지됩니다. 하지만 Alexa (와 Lex)는 슬롯 목록에없는 슬롯 값을 반환합니다. 나는 이것을 자주 본다. 좋네요. AMAZON.LITERAL를 사용하는 기술은 더 이상 12 월에 시작하여 승인되지 않음을 알고,이 질문에 우연히 발견 수 사람들을 위해

, 2016 년 대신 custom slots를 사용해야합니다. 흥미로운 것은, 문서에서는 사용자 정의 슬롯을 사용할 때도 리터럴처럼 사용자 정의 목록에 정의되지 않은 단어를 수신 할 수 있다고 말합니다. 나는 이것을 시험하지 않았지만, 유용 할 수 있습니다.

+2

아마존은 마음이 바뀌었고 AMAZON.LITERAL을 (를) 사용하지 않기로 결정했습니다. – PaulPerry

+1

@ScottU 여기 링크는 https://developer.amazon.com/blogs/post입니다./Tx3IHSFQSUF3RQP/맞춤 슬롯 맞춤 문자열 이유 솔루션 – Soumya

1

알렉사는 발견 한 첫 번째 경기에서 멈 춥니 다. 따라서 좀 더 구체적으로 말하면 좀 더 일반적인 발화를 움직여야합니다.

잠금 잠금 도어 {슬롯 값 | 문} 잠금 잠금 {슬롯 값 | 문}

이 방법을 "잠금 문 앞은"슬롯 = "앞"와 일치합니다.

슬롯이없는 발언이있는 경우 마지막으로 넣어야합니다.

+0

허용되는 대답이어야합니다. –