Alexa Smart Properties for Hospitalityスキルに無指名対話を追加する


Alexa Smart Properties for Hospitalityスキルに無指名対話を追加する

Alexa Smart Properties for Hospitalityのスキルを作成する際に、無指名対話を追加できます。無指名対話では、スキル名を発話に含めなくても、施設やそのサービスに関する情報をAlexaにたずねることができます。たとえば、ユーザーは、"Alexa, what's the visitor wi-fi password?"と言う代わりに、"Alexa, ask {skill name} for the visitor wi-fi password."と言うことができます。 無指名対話を追加すると、スキルで以下の機能を実行できるようになります。

  • 施設固有の情報をユーザーに提供する - たとえば、次のような質問をスキルで処理できます。
    • "Alexa, can my guest get free parking?"
    • "Alexa, what's the pet policy?"
    • "Alexa, where's the nearest coffee shop?"
  • 施設固有のリクエストの手配と対応を行ってスタッフを支援する - たとえば、次のようなリクエストをスキルで処理できます。
    • "Alexa, my door needs maintenance."
    • "Alexa, I need to register my guest's car for the visitor lot."
    • "Alexa, I lost my mail key."

以下のセクションでは、Alexa Smart Properties for Hospitalityスキルに無指名対話を追加するための要件、ベストプラクティス、手順を説明します。

要件

無指名対話をサポートするには、Alexa Smart Properties for Hospitalityスキルが以下の要件を満たしている必要があります。

  • 情報 - スキルに含める情報は、対象施設に関する情報と、ユーザーが関心を持つ可能性のある周辺サービス(レストラン、ショップ、アトラクションなど)の情報に限定する必要があります。

    施設や周辺サービスと関係のない情報(天気など)をスキルで提供することはできません。

    たとえば、スキルは以下のような質問に応答できます。

    • 一般的なヘルプ情報("What can you do here?"
    • 施設固有の情報("Is this property smoke-free?"
    • 施設固有のリクエスト("I need maintenance help."
    • 施設周辺の情報("Where's the nearest deli?"

    ただし、スキルは以下の分野に関連する質問には応答できません。

    • スマートホーム("Turn off the lights."
    • 音楽("Play pop music."
    • 天気("What's the temperature?"
    • 時刻("What time is it?"
    • タイマー("Set a 15-minute timer."
    • アラーム("Set an alarm for 6 AM."
    • 通話("Call the front desk."
    • オーディオブック("Read Harry Potter."
    • ビデオ("Play The Lost City."
    • 施設に関連のない情報("What's the news?"
    • Alexaの意見("What's your favorite song?"
    • 共通インテント("Stop""Pause""Exit"
  • 対話モデル - 対話モデルは明確で簡潔でなければなりません。詳細については、対話モデルのデザインのベストプラクティスを参照してください。

  • ロケール - スキルは、以下のロケール要件を満たしている必要があります。

    • 米国では、アメリカ英語(en_US)でのみスキルを開発できます。
    • 英国では、イギリス英語(en_GB)でのみスキルを開発できます。
    • フランスでは、スキルをアメリカ英語(en_US)またはフランス語(fr_FR)で開発するか、動的な言語切り替えを使用して両方の言語で開発できます。

対話モデルのデザインのベストプラクティス

対話モデルの精度を最大限に高めるために、対話モデルをデザインするときは以下のベストプラクティスを考慮してください。

  • スキルの説明はわかりやすいものにします。
  • 説明的なインテント名を使用します。たとえば、BookingIntentよりもCarBookingIntentの方が適しています。
  • インテントの意図を反映したサンプル発話を用意します。
  • 本当の同義語を使用します。たとえば、「rental car」(レンタカー)という名詞は「returning a car」(車を返す)という動作と同じではありません。 新しい語句については、同義語として扱わずに新しいスロットを作成します。
  • 各サンプル発話に含めるスロットは2つ以下にします。たとえば、"Can you tell me about the {amenity}?""Can you tell me the {info type} of {amenity}?"はOKですが、"{question_type} {verb} {quantifier} {info_type} {amenity}?"などのサンプル発話は避けてください。
  • 提供する回答は、スロット値を入れてAlexaで読み上げたときに自然に聞こえるようにします。
  • (オプション)意味は異なるが読みは同じ語句(「gray」と「grey」など)に対するサポートを含めます。

スキルに以下の特性が含まれていないことを確認してください。

  • サンプル発話として使用されるスロット値("{Slot}"など)。
  • 複数のコンセプトを合わせたインテント。たとえば、1つのインテントで場所(レストランなど)とアクティビティ(ディナーを食べるなど)の両方を表さないようにしてください。代わりに、場所を表すインテント("Where can I find {location}?")と、アクティビティを表すインテント("Where can I {activity}?")を別々に作成します。
  • スロットとしてのサンプル発話。たとえば、サンプル発話として"{helpSlot}, where is the {location}?"を作成し、スロット値として"I need some help"を含めるようなことはしないでください。

以下に、ベストプラクティスの対話モデルの例を示します。

スキルに無指名対話を追加する手順

スキルに無指名対話を追加するには、以下の手順を実行します。

  1. スキルが要件を満たしていることを確認します
  2. 発話の競合を検出して取り除きます
  3. 無指名対話のインテントを識別します
  4. ゴールデン発話と見直し発話を指定します
  5. (オプション)CanFulfillIntentRequestインターフェースを実装します
  6. スキルを認定および公開のために申請します
  7. Alexaソリューションアーキテクトに連絡してテストを開始します
  8. スキルをローカルでテストします
  9. スキルをモニタリングします

ステップ1: スキルが要件を満たしていることを確認する

要件に指定されている要件をスキルが満たしていることを確認します。これらの要件は、対話モデル、スキルで応答できる質問のタイプ、サポートできるロケールなどに関連しています。

ステップ2: 発話の競合を検出して取り除く

サンプル発話を誤って複数のインテントにマッピングすると、そのスキルは、Alexaで特定の質問に応答するスキルとして選ばれる可能性が低くなります。スキルを公開する前に、このような発話の競合をモデル内から検出して取り除きます。

発話の競合を検出する方法の詳細については、モデルの発話競合の検出を参照してください。対話モデルのベストプラクティスについては、対話モデルのデザインについて対話モデルのデザインのベストプラクティスを参照してください。

ステップ3: 無指名対話のインテントを識別する

開発者コンソールで無指名対話ツールキットを使用して、無指名対話で利用するインテントを指定できます。

無指名対話ツールキットには、以下の方法でアクセスできます。

  • インテント起動フレーズを追加する - 開発者コンソールで対話モデルを更新するで説明されている手順に従って、無指名対話でトリガーするスキル対話モデルの各インテントに対してインテント起動フレーズを追加します。
  • 無指名対話コンテナーを追加する - 無指名対話コンテナーおよび対応するインテント起動フレーズを追加するには、2つの方法があります。開発者コンソールでスキル対話モデルを変更するか、Alexa Skills Kitコマンドラインインターフェースを使用できます。追加する必要があるのはインテント名だけです。インテントのサンプル発話を追加する必要はありません。

Alexaは、モデルのトレーニング中に無指名対話コンテナーを使用して、指定された無指名対話の発話がカスタムスキルにルーティングされる動作を向上させます。

次のJSONは、スキル対話用の無指名対話コンテナーを使用した簡略化された対話モデルを示しています。

ステップ4: ゴールデン発話と見直し発話を指定する

ゴールデン発話は、カンマ区切り値(CSV)ファイルで指定して、そのCSVファイルをAlexaソリューションアーキテクトに提供する必要があります。必要に応じて、同じファイルに見直し発話を指定することもできます。以下は、これらの発話についての説明です。

  • ゴールデン発話(golden utterance)とは、Alexaが無指名対話を通じてスキル内の正しいインテントにマッピングする発話のことです。対話モデルの精度を高めるために、よく使われる発話をゴールデン発話として指定してください。ゴールデン発話には以下のルールが適用されます。
    • 各ゴールデン発話は、対話モデルで定義されている発話と正確に一致する必要があります。
    • 各スキルでは、言語ごとに最大1,000個のゴールデン発話を無指名対話用に指定できます。
    • ゴールデン発話はプレーンテキスト形式でなければならず、スロットを含めることはできません。たとえば、what time is breakfast servedは有効ですが、what time is {meal} servedは有効ではありません。
    • 数値はスペルアウトする必要があります($10ではなくten dollarsとします)。
    • ゴールデン発話に句読点やかっこ、特殊文字を含めることはできません。たとえば、*****ではなくfive starsを使用します。このルールの例外は、英語の所有格や短縮形(romeo's)、ハイフンが入った単語(top-rated)、アクロニムやその他の語句として、1文字ずつ読み上げられるアルファベットをピリオドとスペースで区切って記述する場合(iocではなくi. o. c.)です。
    • 誤字脱字をチェックし、紛らわしいケース(handoverhand overなど)がないかどうかも確認します。不確かな場合は、両方のケースを指定します。
  • 見直し発話(regression utterance)とは、スキル用に新しくトレーニングされるモデルに対して、Alexaがテストする発話のことです。Alexaは、無指名対話に対して、各スキルの言語ごとに5,000の見直し発話をサポートします。

CSVファイルには、以下の3つの列を含める必要があります。

  • 列1 - 発話データのタイプ。有効な値は、 GOLDEN_SET(ゴールデン発話)またはREGRESSION_SET(見直し発話)です。
  • 列2 - 発話。列1がGOLDEN_SETの場合、この列には、スキルのインテントにルーティングするゴールデン発話を含めます。列1がREGRESSION_SETの場合、この列には、モデルのトレーニング中にAlexaでテストする見直しテスト発話を含めます。
  • 列3 - 対話モデルで呼び出すインテントの名前。

以下に、CSVファイルに含めることができる発話の例を示します。

(オプション)ステップ5: CanFulfillIntentRequestインターフェースを実装する

CanFulFillIntentRequestを使用すると、スキルで実行するつもりのないリクエストに対して"No"と応答することができます。たとえば、Alexaで処理する方が適切だと考えられるリクエストをスキルが受信した場合にCanFulFillIntentRequestを使用できます。スキルでは、CanFulFillIntentRequest"No"と応答することでインテントを拒否できます。これにより、Alexaはそのリクエストをほかのスキルにルーティングできるようになります。サンプルコードについては、GitHubのCan Fulfill Intent Requestを参照してください。

CanFulFillIntentRequestを実装する場合は、スキルによるCanFulFillIntentRequestの処理時間が2秒未満になるようにしてください。そうでない場合、スキルがユーザーのリクエストに応答できなくなることがあります。Durationメトリクスの詳細については、AWSのLambda関数のメトリクスの使用を参照してください。処理時間が2秒を超える場合は、AWSドキュメントのOperating Lambda: パフォーマンスの最適化 – Part 1およびOperating Lambda: パフォーマンスの最適化 – Part 2に記載されているガイダンスを使用して最適化してください。

ステップ6: スキルを認定および公開のために申請する

Alexaチームで無指名対話のトレーニングを開始するためには、その前にスキルを公開する必要があります。認定プロセスを開始するには、Alexaソリューションアーキテクトにお問い合わせください。このプロセスには10~15日かかります(前のステップで言及したモデルのトレーニングにかかる2週間とは別になります)。この日数は、認定に合格するためにスキルの更新が必要になるかどうかによって異なります。

ステップ7: Alexaソリューションアーキテクトに連絡してテストを開始する

Alexaソリューションアーキテクトに連絡し、スキルID、組織ID、ルームのユニットIDを送信して、スキルでこの機能を有効にするように依頼します。

Alexaソリューションアーキテクトがスキルで機能を有効にしたら、Alexa Smart Properties for HospitalityなどのAlexa Smart Properties製品に登録されているAlexa搭載デバイスでスキルのテストを開始できます。この機能は、開発者コンソールを使用してテストすることはできません。

ステップ8: スキルをローカルでテストする

スキル内のインテントごとに、1つ以上のサンプル発話を試します。同じ質問をさまざまな表現でAlexaにたずねて、用意したサンプル発話が十分であることを確認します。たとえば、質問に「please」や「some」を追加してみましょう。Alexaでスキルが選択されない場合は、サンプル発話を更新します。問題が発生した場合は、トラブルシューティングを参照してください。

スキルが以下のように動作することをテストします。

  • 質問を発した後は必ず回答を待ちます。
  • 得られた情報が想定外であっても、有用な回答を提供します。たとえば、数を想定している場面で文字を聞き取った場合、スキルでは、"Hmm, I didn't get that.How many visitors are you expecting?"のように応答できます。 それでも数を聞き取れない場合は、"Hmm, I didn't get that.Say 'Alexa, call the front desk' to connect with our staff."という応答も考えられます。
  • 施設や周辺地域に関係のない質問には応答しないようにします。
  • "Exit"などの基本コマンドを常に尊重します。

ステップ9: スキルをモニタリングする

Alexa開発者コンソールを使用して、スキルメトリクスのレポートを生成します。

たとえば、開発者コンソールでインテント履歴を確認できます。このレポートには、スキルにルーティングされた発話のうち、よく使用された発話(たとえば、10人以上のゲストに使用された発話)が匿名の集計として表示されます。このデータから、ユーザーがどのようにスキルと対話したかがわかるため、スキルの改善点を特定できます。

トラブルシューティング

無指名対話に関するスキルのテストで問題が発生した場合は、以下のトラブルシューティングの解決方法を確認してください。問題が解決しない場合は、Alexaソリューションアーキテクトにお問い合わせください。

問題: スキルが有効にならない

現象

スキルが質問に応答しません。たとえば、"Alexa, what's the visitor wi-fi password?"と話しかけても、Alexaから"{Skill name} can help with that.Only the owner can enable skills on this device."という応答が返されます。 この返答は、施設でスキルが有効になっていないことを示します。

解決方法

スキルのテストに使用するAlexa搭載デバイスでスキルを有効にします。

問題: スキルの対話モデルに発話が含まれていない、または無指名対話コンテナーにインテントが進入ポイントとして含まれていない

現象

無指名発話を処理するスキルがAlexaから呼び出されません。

解決方法

無指名対話で進入ポイントとして定義されているインテントに、サンプル発話として発話が含まれていることを確認します。

問題: スキルで無指名対話が有効になっていない

現象

スキルを名前で指定しないと、スキルが質問に応答しません。たとえば、"Alexa, help me check out."と言ってもスキルは応答しませんが、"Alexa, open {skill name} and help me check out."と言うと応答します。

解決方法

Alexaソリューションアーキテクトに連絡して、スキルで無指名対話を有効にするように依頼します。

問題: スキルがCanFulfillIntentRequest"No"と応答していない

現象

スキルが施設やローカルサービスと関係のない質問に応答します。

解決方法

CanFulfillIntentRequestに対するスキルの応答を"No"に更新します。 カスタムスキルの無指名対話を理解するを参照してください。

問題: CanFulfillIntentResponse例外

現象

スキルでCanFulfillIntentResponse例外が発生します。

解決方法

スキルの統合テストを作成します。

問題: 発話にスロット値が含まれていない

現象

スキルがサンプル発話のトラフィックを受信しません。

解決方法

サンプル発話を修正して、スロット値とスロットを含めます。明瞭なスロット値を使用すれば、Alexaからスキルに質問が送信される可能性が高まります。

問題: CanFulfillmentResponseへのスキルの応答時間が2秒を超えている

現象

スキルでCanFulfillmentResponse"Yes"と応答しても、Alexaからスキルが呼び出されず、その直後の無指名対話発話を処理できません。

解決方法

スキルでCanFulfillmentResponseリクエストにすばやく応答できるようにして、Alexaがそのスキルを応答用スキルであると認識できるようにします。Lambda関数を使用している場合は、Lambdaのコールドスタートの問題を回避するためにProvisioned Concurrencyを使用します。詳細については、AWSドキュメントのOperating Lambda: パフォーマンスの最適化 – Part 1およびOperating Lambda: パフォーマンスの最適化 – Part 2を参照してください。


最終更新日: 2023 年 03 月 16 日