2017-03-13 3 views
0

배경

나는 Alexa Skill을 작성 중이며 사용자로부터 정보를 얻으려고합니다. 예를 들어알렉사 스킬에 대한 단답식

다음 대화 :

Alexa: What month were you born at? 
User: April 
Alexa: Good. And what was your favorite movie? 
User: April 

문제

다음과 같은 발언을 감안할 때 :

GetMonthIntent {month} 
GetMovieIntent {movie} 

사용자가 두 번째로 April에 응답하면, GetMonthIntent가 트리거 될 수 있습니다 . 올바른 방법으로는 어떤 문제

GetMonthIntent Month {month} 
GetMovieIntent Movie {movie} 

: 나는 정보의 부분은 다음과 같은 발언을 사용하여주고있다 를 지정하도록 사용자에게 요구

을 시도 무엇

알렉사가 현재의 상황에 근거한 단답형 응답을 기다리게합니까?

답변

0

불행히도 해결책이 없습니다. 사용자 응답을 해석해야하는 '컨텍스트'를 지정하는 방법이 없으므로 사용자에게 "좋아하는 영화가 무엇인지 알려 주어야합니까?"내 좋아하는 영화는 다음 영화의 이름을 말하십시오. " 여기

두 내가 당신의 문제를 해결할 것이라고 생각 기능 요청 ASK : https://forums.developer.amazon.com/content/idea/41062/creating-something-to-help-with-more-structured-qu.html
https://forums.developer.amazon.com/content/idea/55525/allow-a-response-to-specify-a-set-of-expected-inte.html


가 개인적으로 나는이 그래서 난 그에게 투표 상당히 중요하다고 생각을하지만, 그들은 상단 아니다.

0

"Who 's on First? Baseball Skit"기술을 만들었을 때 이와 같은 문제가 발생했습니다.

  1. 쓰기 응답에서 "세션"이 숫자 알렉사에 의해 주어진 각 응답의 순서 번호를 생성 :이로 취급.
  2. 세션은 다음 요청에서 Alexa가 기술로 다시 전달합니다.
  3. 요청에서 일련 번호를 읽으면 이전 질문의 내용을 알 수 있습니다.
  4. 주어진 의도가 여러 질문 (예 : 월 및 영화의 경우)에 대한 대답 일 수있는 경우 순서 번호를 사용하여 어떤 질문인지 파악하십시오.

이렇게하면 반복되는 답변을 처리하는 방법에 대한 아이디어를 얻을 수 있습니다. 세션은 사용하기가 쉽습니다. 다른 옵션으로는 DynamoDB와 같은 데이터베이스에 userId와 상태를 쓰는 방법이 있지만 대부분의 경우 세션이 작동하는 것으로 나타났습니다.

1

다른 답변과 동일한 맥락에서 최신 노드를 살펴보아야합니다.밖으로 상자의 상태를 처리 여기 JS 라이브러리 :

  • State_Launch에게
  • State_Month
  • State_Movie

을 그리고 적절한 에러 응답을 반환 : 는 https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#making-skill-state-management-simpler

당신은 정의 할 수 있습니다 GetMovieIntent 또는 GetMonthIntent (등등) 인 텐트 이외의 것이 잘못된 상태에서 호출 된 경우.

"월"이 유효한지 확인하려면 서버 측에서 데이터 유효성 검사를 수행해야하며 예상 값 목록이없는 한 동영상은 유효성 검사가 더 어려워야합니다. 다시 말하면 반복 사용할 수 있도록 구문 분석을 신경 쓰는 경우입니다.