2017-09-14 16 views
0

私はAmazon Alexa SDKでプレイしています。私は最初のスキルをプログラミングしています。 私の目標は、次のようなダイアログをプログラムすることです:Amazon Alexa階層的なダイアログ

  • どこに住んでいますか?
  • あなたはどのくらいそこに住んでいますか?
  • 問題は、2番目の質問のキーワードで質問番号1に答えて、次に2番目の質問に回答したと仮定して、2番目の質問に対する回答を私に提供するということです。 これを防ぐ手段はありますか?

    ...あなたの助けを

    感謝=)

    PS私はセッション属性を使用することができます知っているが、これは私にはむしろハックになります。私は私のAlexaのスキルのために - 頼むフラスコを使用しています。

    答えて

    1

    このダイアログを構成する方法はいくつかあります。最初の方法は、現在行っているのと同様に、一連のシングルターンダイアログを使用することです。私の推測では、既存のインタラクションモデルで正しいスロットタイプを使用していないということです。そのため、間違った意図が一致しています。

    私がシングルターンアプローチを使用していた場合は、2つのインテントがあります。

    最初のインテントは、質問への回答と一致します「どこに住んでいますか?

    Intent: GetAddressCity 
    Utterance 1: {AMAZON.US_CITY} 
    Utterance 2: I live in {AMAZON.US_CITY} 
    

    目は質問への応答にマッチします「どのくらいあなたがそこに住んでてきました?」

    Intent: GetAddressDuration 
    Utterance 1: {AMAZON.NUMBER} 
    Utterance 2: {AMAZON.NUMBER} years 
    Utterance 3: For {AMAZON.NUMBER} years 
    

    全く異なるアプローチ(と私はこのような状況で使用する可能性が高いと思います1)Multi-turn Dialogを使用して会話を構築することです。このアプローチは、複数の必要なスロット値を持つ単一のインテントを定義します。

    Intent: GetLivingInfo 
    Utterance 1: I live in {AMAZON.US_CITY} 
    Utterance 2: I've lived in {AMAZON.US_CITY} for {AMAZON.NUMBER} years 
    

    2つの必要なスロットを持つ1つの意図。ユーザーがと言ったら、Utterance 1が一致し、Alexaは彼らがそこに住んでいた年数を求めるプロンプトで応答します。詳細はMulti-turn Dialogsをご覧ください。

    +0

    ご回答ありがとうございます。私はすでにMulti-Turn Dialogについて知っていますが、複数の質問を交互に入れてDialogを構成する方法があるかもしれないと考えました。 – Peter234

    0

    私はビルの答えは最高の解決策だと思います。はい、複数の質問を使用できますが、2番目の質問では、最初の応答で応答情報を渡す必要があります。これは、ユーザーのIDに合わせたDynamoDBなどのDBを使用して行うことができますが、セッションで渡す方がはるかに簡単だと思います。

    0

    Billは100%正しいスロット値を推奨しています。フローは正しく動作するはずです。あなたがそれを試して、私にいくつかのフィードバックを提供したいなら、私はスキルMedTimeで多少同じことをしました。私はAlexaのスキルを身につけてあなたと仕事をしてうれしいです。