0

嗨如何保持會話始終在alexa應用程序中打開。我爲我的客戶端開發了自定義技能。在最後一次響應技巧會話結束後,我不想要這樣。我想始終打開會話。當用戶說開放流意圖時,它應該從那裏開始。如何保持會話始終在Alexa中打開

+1

這是一個措辭非常模糊的問題。你能再詳述一下嗎? –

+0

嗨,您好,我正在開發一項定製技能,其中alexa會向許多客戶提問並且客戶會回答這個問題,echo會根據他的回答收集輸入並提供輸出給客戶。所以我想保持會話活着總是我正在開發應用程序使用Java和託管通過aws lambda – Kamlesh

回答

2

你不能這樣做。 Alexa的模式是呼叫和迴應。用戶與Alexa交談,然後Alexa迴應。您可以讓會話保持打開狀態,但如果用戶在大約8秒內未響應,則會話將關閉。 (如果使用重新提示,可以再延長8秒。)

這是它們安全模型的一部分。他們不希望人們創造技能,基本上,監控房間內正在進行的一切。當Alexa正在收聽時,它所說的所有內容都會流向互聯網。如果有人違反協議,這可以用於間諜活動。 (或者在用戶或亞馬遜的服務器上運行帶寬)


現在,如果您的問題確實是連續性問題之一,那就不同了。 Alexa提供作爲其服務會話變量的一部分。那些只有一個會話的一生。所以,再次,這是設計的一部分,不要堅持過去的會議。

一般來說,我不建議你使用它們。 Alexa一直在下載會話。堅持你自己的變數對你來說更好。然後你可以控制他們的一生。使用傳入的用戶ID作爲密鑰,並將它們存儲在內存中(用於非Lambda技能)和/或DynamoDB(用於Lambda技能或長期持久性)。

1

您可以實現所需的用戶體驗,但您需要以不同的方式構建它,因爲您必須假定會話可能隨時結束,會話數據被丟棄。

每當會話更新時,將其保存到數據庫(如DynamoDB)中。

通過與每個請求一起發送並且在會話之間不發生更改的userId標識每個會話。

創建新會話時,請檢查數據庫以查找針對userId保存的任何會話。如果找到,則從數據庫填充新的會話。否則,創建一個新的會話。