2017-03-13 11 views
0

背景

私はAlexaスキルを書いており、ユーザーからの情報を得ようとしています。例えばAlexa Skillに対する一言回答

次の会話:

Alexa: What month were you born at? 
User: April 
Alexa: Good. And what was your favorite movie? 
User: April 

問題

次の発話を考える:

GetMonthIntent {month} 
GetMovieIntent {movie} 

ユーザーが二度目のAprilに答えたら、GetMonthIntentがトリガされる可能性があります。正しい方法にはどのような質問

GetMonthIntent Month {month} 
GetMovieIntent Movie {movie} 

:私は情報の部分は、次の発話を使用して与えているを指定するようにユーザーに尋ねる

を試してみましたが、何

Alexaは現在のコンテキストに基づいて単一の用語の回答を待つようにしますか?

答えて

0

残念ながら、解決策はありません。ユーザーの返信を解釈する「コンテキスト」を指定する方法はないので、ユーザーに「あなたの好きな映画は何ですか?私のお気に入りの映画は何ですか」と言ってください。ここで

ある二人は、私はあなたの問題を解決するだろうと思う機能要求ASK: https://forums.developer.amazon.com/content/idea/41062/creating-something-to-help-with-more-structured-qu.html
https://forums.developer.amazon.com/content/idea/55525/allow-a-response-to-specify-a-set-of-expected-inte.html


は個人的に私はこれは私はそれらに投票かなり重要だと思いますが、しかし、彼らはトップの近くではありません。

0

"Who's on First?Baseball Skit"スキルを作成したときに同じ問題が発生しました。アレクサ

  • によって与えられた各応答は、応答で「セッション」には、この番号を書くためのシーケンス番号を作成

    1. :私がすることによってこれを取り扱います。
    2. セッションは、次のリクエストでAlexaによってスキルに戻されます。
    3. 要求からシーケンス番号を読み、前の質問の内容を確認します。
    4. 複数の質問(たとえば、あなたの場合は月と映画)に対する回答がある場合は、シーケンス番号を使用してそれを特定します。

    これは、繰り返し回答を処理する方法についてのアイデアを提供します。セッションは非常に使いやすいです。他のオプションには、userIdとstatusをDynamoDBのようなデータベースに書き込むことが含まれますが、ほとんどの場合セッションが機能することがわかります。

  • 1

    ここで他の回答と同じように、最新のノードを見てください。その後、

    • State_Launch
    • State_Month
    • State_Movie

    、適切なエラー応答を返す: https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#making-skill-state-management-simpler

    をあなたが定義することができ:JSボックスのうち、状態を扱うここのライブラリ、 GetMovieIntentやGetMonthIntent(など)以外のインテントが間違った状態で呼び出された場合。

    "月"が有効であることを確認するには、サーバー側でデータ検証を行う必要があります。ムービーは、期待値の一覧がない限り検証がさらに困難になります。つまり、繰り返し使用するために使用するために解析する必要がある場合です。

    関連する問題