0

こんにちは、どのようにセッションを常にアレクサのアプリで開いておくか。私はクライアントのためにカスタムスキルを開発しました。最後のレスポンススキルセッションが終了しました。私はセッションを常に開いたままにしたいと思っています。ユーザーがオープニングフローの意図を示すとき、そこから開始する必要があります。Alexaでセッションを常に開いたままにする方法

+1

これは非常に曖昧な言葉の質問です。もう少し詳しく説明できますか? –

+0

アレクサが多くの顧客に質問し、顧客が回答に応答するカスタムスキルを開発しています。エコーは入力を取り、回答に基づいて顧客に出力します。だから私はセッションを生き続けるために、私はJavaを使ってアプリケーションを開発しており、aws lambda – Kamlesh

答えて

2

これはできません。 Alexaのモデルは呼び出しと応答です。ユーザーはAlexaと話し、その後Alexaは話します。セッションを開いたままにしておくことはできますが、ユーザーが約8秒後に応答しない場合、セッションは終了します。 (リプロンプトを使用すると、さらに8秒間ストレッチすることができます)

これはセキュリティモデルの一部です。彼らは、基本的に、部屋の中で起こっているすべてのことを監視するスキルを人々が作り出すことを望んでいません。 Alexaが聞いているとき、それはすべてインターネットにストリーミングされています。誰かが自分の議定書を破ると、これはスパイ活動に使うことができます。 (または、ユーザーのサーバーやAmazonのサーバーで帯域を稼働させている)

ここで質問が本当に連続性の1つであれば、それは違います。 Alexaは、そのサービスのセッション変数の一部として提供しています。それらはセッションの存続期間しかありません。だから、それは過去のセッションを維持しないように設計されています。

一般に、私はそれらを使用することはお勧めしません。 Alexaは常にセッションを終了します。あなた自身が変数を保持することはずっと良いことです。その後、あなたはその生涯を支配します。渡されたUserIDをキーとして使用し、メモリ(非ラムダスキルの場合)および/またはDynamoDB(ラムダスキルの場合、または長期間の永続性)のいずれかに格納します。

1

目的のユーザーエクスペリエンスを実現できますが、セッションデータが破棄されてセッションが終了する可能性があるため、別の方法で構築する必要があります。

セッションが更新されるたびに、それをDynamoDBなどのデータベースに保持します。

各セッションは、リクエストごとに送信されるuserIdによって識別され、セッション間では変更されません。

新しいセッションが作成されたら、userIdに対して保存されたセッションがないかデータベースをチェックします。見つかった場合は、新しいセッションをデータベースから読み込みます。それ以外の場合は、新しいセッションを作成します。

関連する問題