2017-12-06 24 views
0

태양계의 행성 목록으로 의도를 설정했습니다. slot.value는 슬롯에있는 것보다 모든 발언을 반환합니다.

{ 
 
     "intent": "PlanetIntent", 
 
     "slots": [ 
 
     { 
 
      "name": "Planet", 
 
      "type": "LIST_OF_PLANETS" 
 
     } 
 
     ] 
 
    },

나는 그것을 설정하기 위해 노력하고있어 사용자 이름 행성 내 코드는 단순히 다시 그들에게 그 행성의 이름을 반환 할 때 있도록. 그들이 행성을 목록에 없다면, 그것은 오류와 함께 돌아올 것입니다. (또는 내가 처음에 일어날 것이라고 생각했던 것을 처리하지 않은 상태로 간다.)

하지만 가장 기본적인 코드에서 가장 복잡한 코드까지 내 코드는 입니다. 항상은 관련된 슬롯 값이 아니라 모든 단어를 반환합니다.

그래서 어느

'PlanetIntent': function() { 
 
\t var selection = this.event.request.intent.slots.Planet.value; 
 

 
     this.response.speak(selection); 
 
     this.emit(':responseReady'); 
 
}

도이

'PlanetIntent': function() { 
 
\t var selection = ''; 
 

 
     if (!this.event.request.intent.slots.Planet || 
 
     this.event.request.intent.slots.Planet.value == '') { 
 
      this.emitWithState('AMAZON.HelpIntent'); 
 

 
     } else { 
 
      selection = this.event.request.intent.slots.Planet.value; 
 

 
     this.response.speak(selection); 
 
     this.emit(':responseReady'); 
 
\t \t } 
 
},

통해 점점에서 임의의 값을 중지하는 것 같다. 화성을 말하면 화성을 반환합니다. 순 무를 말하면 순무를 반환합니다. 어떤 아이디어. 나는 행성리스트에서 응답 만 반환하도록 제한하려고합니다!

답변

1

슬롯 용으로 제공하는 목록은 힌트 일 뿐이며 필터 또는 제한 사항이 아닙니다. 반드시 코드에서 목록을 필터링해야합니다.

우리 태양계에서 행성의 이름만을 찾고 있기 때문에, 이것은 너무 어려워서는 안됩니다 : 명왕성을 포함할지 여부 및/또는 지구를 포함 시킬지 여부에 따라 7-9 값, 조금 더 강하다면 당신은 달을 포함하기 시작하고, 다른 별들의 알려진 행성을 포함한다면 상당히 도전적입니다 :-)