事實證明,您不能將槽收集委託給LaunchRequest
內的Alexa,因爲它不是有效的response typeLaunchRequest
的一部分。
我最初的邏輯是:
- 用戶說 'Alexa的,開party'
- Alexa的技能要求
LaunchRequest
。 (在這一點上,我需要通過委託Alexa進行插槽集體詢問用戶的銷售號碼)
- 在
LaunchRequest
中,立刻用this.emit(':getPinIntent');
迴應,其中getPinIntent
是我的Alexa技能中存在的另一個意圖。上面的代碼是我在互聯網上看到的如何調用另一個意圖,而用戶不必挑起使用語音。
getPinIntent
被調用並立即檢查是否填滿了所有需要的插槽(即如果插槽PIN
有一個值)。如果他們不是,並且dialogState !== 'COMPLETED'
然後我將插槽集合委託給Alexa。
- 上述步驟(#4)是出問題的地方。由於代表團不是
LaunchRequest
的有效回覆類型,因此沒有字段dialogueState
,這是授權給Alexa所需的字段。 Alexa請求仍然是LaunchRequest
而不是Intent請求,因爲用戶沒有通過對Alexa說些什麼來調用意圖。
- 總之,這是沒有完成,其中一經推出,要求用戶輸入PIN,然後可以通過只說引腳回覆對話的有效方式,下面顯現:
用戶:「Alexa的,開party 「
Alexa的: 」你是什麼針「(ALEXA從來沒有送過來,因爲#4及以上#5)
用戶: 」一二三四「
Alexa的:」 Confirme d,我能幫你什麼?「
如果我犯了任何錯誤或錯誤的假設,請讓我知道。
我現在的邏輯現在已經改變。如果您不使用技能生成器測試版,則您可以將插槽作爲您的意圖之一的話語存在。所以我現在有getPinIntent
帶有一個名爲{PIN}
的插槽和一個{PIN}
形式的話語。這使上述類型的對話會發生,因爲當用戶他或她的腳說回(「一二三四」),它會啓動getPinIntent
,我可以再繼續或委託的對話,以Alexa的,因爲IntentRequest
對話框是一個有效的response type。
我現在唯一的問題是,因爲我沒有使用技能生成器測試版我不能(或者還沒有找到一種方式),以對話模型添加到/我的意圖架構內。在添加正確的對話模型後,我試圖將Skill Builder Beta中的JSON文本複製到我的意圖架構中,但這總是會導致構建錯誤。
所以,現在我可以完成用戶的PIN認證並回應一個「我該怎麼幫忙」,但是之後發佈的IntentRequest可能需要委派給Alexa插槽,並且這會導致崩潰,因爲沒有Skill Builder測試版我無法爲代理插槽收集期間的Alexa添加適當的對話模型。
您的示例對話與您正在尋找的幫助相矛盾。在這個例子中,launchRequest會觸發你的技能請求銷售。之後,您會詢問用戶是否可以在啓動請求中指定其針腳。 – aberger
我已經想出了一些其他的東西,這使得這個問題現在不相關,所以我很抱歉,如果有任何混淆。我即將關閉它。 –