私は人々がいくつかの状態を追跡できるようにスキルを作成しました。しかし、毎回Alexaにアプリを開いて操作するように依頼する代わりに、.
Alexa ask grocerylist to add 2 eggs
Alexa ask grocerylist to add bread
食料品店のスキルを開いたままにして、ユーザーが閉じるように要求するまでスキルを操作できるようにします。
Alexa open grocerylist
.... 2 mins later
add 2 eggs
.... 1 min later
add bread
毎回Alexa ask grocerylist
を使用せずにこれを行う方法はありますか。
これは不可能です。これはセキュリティ機能であるため、サードパーティは誰かが言っていることすべてを「聞く」スキルを作成することはできません。応答できます。「endSession」フラグを設定しないと、セッションが開いたままになります。ただし、開いたままになるのは約8秒間だけです。リプロンプトを設定した場合は、その時点でリプロンプトが読み取られ、さらに8秒間開いたままになります。したがって、回線を開いたままにしておくことができる最大時間は16秒程度です。
もちろんこれは可能です! (ただし、@ Billのコメントごとに最大で約8秒に制限される場合があります)
応答では、buildSpeechletResponseを呼び出すときに、「shouldEndSession」をfalseに設定して、セッションを開いたままにし、「Alexa askMyApp ...」を使用してスキルを再度起動する必要なしにさらに多くの発話をリッスンし続けます。
さまざまなデモで、これを行う方法を示します。例えばここでサンプルコードを参照してください: https://github.com/amzn/Alexa-skills-kit-js/blob/master/samples/savvyConsumer/src/AlexaSkill.js
それは可能ですが、限られた時間だけです。
使用しているSDKに基づいて、フラグを設定できます(セッションを終了する必要があります= false)。これは、ask応答ですでに実行されています。そのフラグを設定してリプロンプトを追加すると、スピーチをリプロンプトするまでセッションを開いたままにすることができます。
したがって、再プロンプトが表示されるまでは完全に最初の8秒で、再プロンプトが表示されてから再び8秒です。合計16秒。
セッションとセッション変数はセッション終了後に消えます(Alexaエコーの青いライトが消えたとき)を覚えておく必要があります。したがって、状態や買い物リストを維持したい場合は、dbのようなストレージを用意することをお勧めします。ラムダを使用してエンドポイントをホストしている場合、データの保存に使用できるダイナモDbがあります。
唯一の正解はそれが不可能であるということです。 OPは、セッションを開いたままにしておきたい期間を分として明確に定義しています。これは実際には不可能です。 is可能であると言っても、OPが試みていた時間のほんの一部である限られた時間だけは、実際には役に立ちません。
すでに述べたセキュリティ上の理由から、それは不可能です。