2017-05-29 65 views
0

我正在嘗試編寫一個「瑣事測驗」技能,就像其他許多已存在的技巧一樣,但我希望用戶能夠給出實際答案而不是「 a/b/c「或」1/2/3「。所以談話會是這樣的:強制響應來自特定的自定義插槽,重複執行

  • 的Alexa:哪個星球是離太陽最近的水星或金星?
  • 用戶Mercury
  • 的Alexa:這是正確的!你有一點。哪家公司生產克爾維特,凱迪拉克或雪佛蘭?
  • 用戶Chevrolet
  • 的Alexa:這是正確的!你有兩點。喬治華盛頓的假牙是由什麼製成的?木頭還是象牙?

...等...

由於每個問題都有自己的一套答案的,我很高興創造每一個問題定製插槽類型,所以我有一個["Mercury", "Venus"]插槽LIST_Q1_ANSWERS["Cadillac", "Chevrolet"]LIST_Q2_ANSWERS插槽,這一切都很好。但是,我不知道如何告訴我的技能,答案應該只來自這個特定的自定義插槽。

當然可以爲每個問題具體Intent,所以我創建Q1Intent,我開始一個對話,我ElicitQ1Intent。然而,這並不奏效,因爲在我響應他們在需要的LIST_Q1_ANSWERS槽分配,我不得不說,「正確的」,並下一個問題,這意味着我必須ElicitQ2Intent ......這是不允許的;我必須先結束對話框,然後再開始一個新對話框。 (所以談話會走到「哪個星球......?」「水星」「正確!你想要下一個問題嗎?」「是」「好吧,哪家公司...」,那就不行了)。我可能在這裏過分複雜的事情。也許有一種更簡單的方法來模擬我想要的語音界面。我當然可以在一個大的定製插槽中定義所有不同的答案,然後只有一個單一的AnswerIntent,但是人們可以回答Chevrolet來解決行星問題,這很愚蠢。 (我知道我必須處理任何問題的答案,而不僅僅是插槽中的答案,但我想偏向於從插槽中選擇答案的問題;這是插槽的用途。)

那麼,我該怎麼做呢?對話框不起作用,我不這麼認爲。

回答

1

這是一個非常合理的請求,國際海事組織,但它仍然是不可能與Alexa。有了其他的bot/AI平臺,你可以指定一個上下文,使其嘗試將用戶響應與你技能意圖的一個子集相匹配(通常我認爲只有1個)。

這裏是一個受歡迎的Alexa的功能要求,使程序在相同點:

允許根據應用程序的狀態暫時禁用意圖/話語
https://forums.developer.amazon.com/content/idea/40045/allow-temporarily-disabling-intentsutterances-base.html

-1

是的,我相信你可以做什麼你想。我在"Who's On First?" baseball skit技能中做了類似的事情。

可能有許多其他的方式也做到這一點,但我採取了以下做法:

  1. 爲每個用戶創建響應意圖。例如,在上述例子中,「汞」和「雪佛蘭」都是意圖。
  2. 在會話對象中向前傳遞信息。可以使用數據庫,但在這種情況下會話運行良好。這些信息將允許您的意圖處理程序識別被問到的問題。如果每個答案都是獨一無二的,這並不是真的必要,但它允許多個問題具有相同的答案。例如,也許答案「汞」是對「命名一個行星」以及「命名液態金屬」這兩個問題的回答。
  3. 由於會有更多可能的錯誤答案比正確的答案,它可能是有意義的使用插槽的不正確答案。或者,您可能會將不匹配的意圖處理爲不正確的答案,並使用會話中傳遞的問題ID來標識哪個問題不正確。
  4. 您可以以編程方式將響應字符串放在一起。所以如果答案是正確的,在你的技能所說的下一個問題的開始處,前面加上「正確,下一個問題是」。

我希望這可以給你一個如何進行的想法。 Alexa可能有很多。我們有時需要創意。

+0

我沒跟着你。我接受你上面寫的內容,但不確定這個問題是如何解決基本問題的:你不能將alexa指向你期望的目標。所以,你仍然需要讓用戶在他們的迴應前加上一些能夠使Alexa匹配正確意圖的東西,或者擁有一個包含所有可能答案的位置。 – Tom

+0

嗨,湯姆, 我不是建議試圖將Alexa引向意圖。我建議對每個可能的答案都有意向。如果多個問題具有相同的可能答案,則使用會話中傳遞的上下文信息來了解問題提出的問題。一個意圖可以從多個問題中調用。 –

+1

這是有道理的,但我不認爲這是對這個問題的答案 - 除非我完全誤解了這個問題。 – Tom