2017-09-14 155 views
0

我正在玩亞馬遜Alexa SDK,我正在編程我的第一個技能。 我的目標是編程這樣一個對話框:亞馬遜Alexa等級對話框

  1. 你住哪兒?
  2. 你在那裏住了多久?

問題是我可以用第二個問題的關鍵字回答第一個問題,然後Alexa假設我回答了第二個問題,並將爲第二個問題提供答案。 有沒有辦法來防止這種情況?

我知道我可以使用會話屬性,但這個看起來相當哈克給我...

感謝您的幫助=)

PS:我用的燒瓶問我Alexa的技能。

回答

1

有幾種方法可以構建此對話框。第一種方法,類似於你現在正在做的,是使用一系列單向對話框。我的猜測是你在現有的交互模型中沒有使用正確的插槽類型,這就是錯誤意圖匹配的原因。

如果我正在使用單回合方法,我會有兩個意圖。

第一個意圖將匹配對問題的回答「你住哪裏?」

Intent: GetAddressCity 
Utterance 1: {AMAZON.US_CITY} 
Utterance 2: I live in {AMAZON.US_CITY} 

第二個將匹配的問題迴應「你有多久就住那兒?」

Intent: GetAddressDuration 
Utterance 1: {AMAZON.NUMBER} 
Utterance 2: {AMAZON.NUMBER} years 
Utterance 3: For {AMAZON.NUMBER} years 

一種不同的方法完全(另外一個是我有可能在這種情況下使用)將使用Multi-turn Dialog構建了談話。這種方法將定義一個單一的意圖,具有多個所需的時隙值。

Intent: GetLivingInfo 
Utterance 1: I live in {AMAZON.US_CITY} 
Utterance 2: I've lived in {AMAZON.US_CITY} for {AMAZON.NUMBER} years 

一個意圖,有兩個需要的插槽。如果用戶說我住在波士頓Utterance 1就會匹配,Alexa會回覆並提示他們在那裏住了多少年。請查看Multi-turn Dialogs瞭解更多詳情。

+0

感謝您的回答。我已經知道了多回合對話框,但我認爲可能有一種方法可以一個接一個地構造帶有多個問題的對話框。 – Peter234

0

我認爲比爾的答案是最好的解決方案。是的,您可以使用多個問題,但第二個問題需要通過第一個響應將響應信息傳遞給它。您可以使用數據庫(如DynamoDB)來鍵入用戶ID,但我認爲在會話中傳遞它更容易。

0

Bill是百分之百正確的修正您的槽值,因爲他建議和流程應該正常工作。我在技能MedTime方面做了相同的工作,如果你想嘗試一下並提供一些反饋意見。我很樂意與您一起爲Alexa建立技能。