2017-08-28 16 views
0

ラムダ関数でNode.jsを使ってAlexaのスキルを構築していて、スロットにあるデータを確認するための最良の方法についてチュートリアルを見つけることができません。私は、すべてのスロットにデータがあるが、Alexaに要求を読み戻して、ユーザに確認を求めてから処理を進めることにした。これを行う正しい方法は&ですか?Alexaのスキルがスロットの値を確認しました

最初は:elicitSlotでemitを使うと思っていましたが、これを行うには新しいスロットが必要になり、非常にハッキリに見えます。例えば

:全体の意思確認のため

if(all slots have a valid value){ 
this.emit(':elicitSlot','confirm',"You're request is .... with data .... is this correct?"); 
} 
if(user confirmed data is valid){ 
// do something 
}else{ 
// the data was not correct get the right data 
} 
+0

あなたの確認のため、[ここ](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/ask-define-the-vui-with-gui#インテント確認)。スロットの確認のみを行うには、[ここ](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/ask-define-the-vui-with-gui#enable-slot-確認) – Sidmeister

+0

あなたにSidmeisterありがとう、私はそれを承認することができますあなたのコメントを答えに変えることができます。また、スロットの1つが名前のようなもので、アレクサが100%の名前を知っている場合は、確認をスキップすることができます。または、時間の100%オフの確認ですか?私は確認のための灰色の領域が欲しいです。 –

答えて

2

hereを確認してください。スロット確認の場合はhereにチェックしてください。

また、あなたのフォローアップの質問のために、

は、スキルとスロットの確認は、細かいスロットの一つが名前のようなものがある場合などに合わせて調整することができ、アレクサは、私ができる言った名前が100%を知っていますそれは確認をスキップしますか?

短い答え - もちろんダイアログを維持しないとできます。しかし、それに頼ることは強くお勧めします。

ダイアログを維持するために、あなたは意図リクエストのdialogState属性を監視する必要がある、と限り、それは状態COMPLETEDではありませんように流れるそれを維持するために[{'type': 'Dialog.Delegate'}]として属性directivesと応答を送信します。ダイアログの細かい制御を維持することができます - this docを参照してください。さらに、その回答でoutputSpeechrepromptを省略することを強くお勧めします。そうしないと、Alexaが動揺します。ダイアログステータスがCOMPLETEDになると、confirmationStatus(インテントとスロットの両方) - SUCCESS(?)/ DENIED/NONEとなります。確認が成功しなかった場合。返信として複数の一致が送信されているのを見ました。しかし、成功すると、一致したスロット値だけが返されます。

P.S.私はこの奇妙な問題を抱えていた。 Alexaが1つのスロット値の確認を求めているときに、私が意図的に2回連続して減少した場合、それはあきらめて何もしません!しかし、Alexaがかなりの99%を占めていました。

P.P.S. 2つの試みがAlexaからのハード制限であったことが判明しました。これは次の反復で改善されるはずです。

関連する問題