人間が行う会話は意図のやり取りですが、それはその時点の状況下で意味を持つものです。意図を表現することや意図を汲み取ることは、実際は単純ではないため、Alexaとユーザーの会話を設計する際は、十分な注意と計画が必要です。音声体験を上手に設計すれば、ユーザーは様々な表現で意味や意図を伝えることができるでしょう。
会話のUIは、まずユーザーが何か発言し、Alexaがそれに応えるというやり取りで構成されています。このような方法でシステムとやり取りすることは、多くの人々にとって新しい体験です。そのため、適切な会話設計ができるよう、ユーザーがどのように会話するかを十分に意識してください。
開発前の設計
スキルを通じてユーザーにどのような経験をしてもらい、どう感じてもらいたいかを考えてください。スキルの目的が決まったら、台本を作成し、フローを書き出し、その後、インテントと発話の設計に移ってください。
インテントの決定
インテントとはユーザーがスキルに要求できることです。あなたのスキルは旅行計画を立てるのを手伝うことも、何らかの状態を確認することも、冗談を言うことも、もしかしたらモンスターを攻撃することもあるかもしれません。これらはすべてインテントです。スキルが備えるべきインテントの決定方法についてはデザインプロセスを参照してください。
あるインテントに対して自分が想定した通りの文言をユーザーが発するとは仮定しないでください。ユーザーは「旅行の計画を立てて」と発話することもあるでしょうが、単に「ハワイへの旅行を計画して」と発話する可能性もあります。ユーザーが発するであろう多様な文章やフレーズ、単語を設計に盛り込み、ユーザーがスキルを心地よく利用できるようにしてください。
PlanMyTripIntent
インテントに対応する発話の例を次に挙げます:
- 「旅行に行きたい」
- 「旅行を計画して」
- 「旅行の計画」
- 「休暇を取ってどこかへ行きたいな」
ビルトインインテントの利用
全てのAlexaスキルはキャンセル(Cancel)、停止(Stop)、ヘルプ(Help)機能を備える必要があります。これら3つのインテントや、リピート(Repeat)、再生(Play)、次(Next)などのその他の一般的なインテントには、ビルトインインテント・ライブラリーを利用してください。ビルトインインテントはあらかじめ定義されているので、Alexaはそれに対応する発話を認識できます。 例えば、ヘルプインテントを利用すれば、ユーザーがヘルプを求めるときの発話を自分で定義する必要がなくなります。もし、自分のスキルであらかじめ定義された以外の言い回しにも対応する必要がある場合は、ビルトインインテントを拡張することもできます。
発話の決定
発話とはユーザーがAlexaに話しかける際の言い回しです。発話は、キーワードとなるコマンドと変数であるスロット、そして自然な話し言葉にするためのつなぎ言葉から構成されます。音声体験を設計するうえで最も重要なことの一つは多種多様なユーザーの発話を幅広く定義することです。
良いユーザー体験を提供するために、サンプル発話では、完璧な発話だけでなく情報が一部かけている発話やあいまいな発話まで全てのパターンを網羅するようにしてください。Alexaが受け取る発話の範囲をさらに十分なものにするために、細かな表現の違い、さらには誤った発音の表現も含めるようにしてください。例えば、贈り物の場合、「プレゼント」だけでなく「ギフト」や「お土産」など、ほぼ同じ意味であっても様々な表現を含めるようにしてください。
ワンショット: ワンショット発話はインテントの実行に必要な情報を一度にすべて発話する方法です。ワンショット発話はスキルの起動時にもスキルの途中でも利用できます。
例
次の金曜日に神戸を出発して、京都でハイキングする。
不完全な情報: ユーザーからのリクエストに含まれるのが、インテント実行に必要な情報の一部だけということはよくあります。この場合、残りの情報を集めるために複数回のやり取りが発生します。
例
茅ヶ崎海岸付近にウィンドサーフィンしに行きたい。
出発予定日はいつですか?
ユーザーからの過剰な応答の扱い
時々、Alexaが1つの情報を要求しているにもかかわらず、ユーザーが2つ以上の情報を返すことがあります。例えば、Alexaが出発日を尋ねているのに対して、ユーザーは出発日と出発地を返すかもしれません。さらには、Alexaが求めている出発日は答えずに、到着地と旅行目的といった全く違う情報をユーザーが返すこともあるかもしれません。
会話設計をする際、このような場面を適切に扱うことが重要です。より深く学びたい場合はダイアログインターフェースリファレンスと旅行計画スキルのチュートリアルをご覧ください。
例
出発予定日はいつですか?
次の金曜日に大阪から福岡に行きます。
ユーザーによる訂正の扱い
ユーザーの発話をAlexaが誤って受け取った場合や発話した内容をユーザーが変更したい場合、ユーザーによる訂正が発生します。例えば、ユーザーは「いや」とか「そうではなくて」と言った後、修正後の内容を発話するでしょう。これらの訂正を適切に処理するようにしてください。
例
楽しい旅行になりそうですね。次の金曜日に沖縄でウィンドサーフィン。出発地は東京。この内容で予約しますか?
いや、行先は奄美大島です。
承知いたしました。次の金曜日に奄美大島でウィンドサーフィン、出発地は東京ですね。予約しますか?
多様な発話の網羅
スキルを良いものにするため、1インテント当たりのサンプル発話数は30個以上を目安としてください。たとえ単純なインテントであっても同様です。ユーザーの発話を100パーセント網羅する必要はありませんが、サンプル発話は多ければ多いほど良いです。さらに、スキルを改善していくために、サンプル発話を随時追加するようにしてください。
多様なサンプル発話を作成するコツ
ユーザーが「旅行の計画を立てたい」と言ったとしましょう。Alexaは目的地や到着地、旅行の日程、旅行の目的といった情報を集める必要があります。家族や友達と旅行計画を立てるロールプレーをして、会話のシミュレーションをしてみるとよいでしょう。
- ワンショットのバリエーション:
- ユーザーがすべてのスロット値を一度の発話で伝える言い回しを考えてみましょう。
例
次の金曜日、シュノーケリングをしに沖縄に行きたい。
東京発、沖縄行きの金曜日のチケットが欲しい。
- 部分的な情報のバリエーション:
- ユーザーが情報の一部だけを渡すありがちな言い回しを考えてみましょう。ユーザーが必要なすべての情報を一度の発話で伝えることはあまりないため、情報の一部しか含んでいない言い回しについて十分検討することが重要です。
例
シュノーケリングをしに行きたい。
東京から沖縄までのチケットが欲しい。
沖縄に行きたい。
スロットの決定
スロットを使うことでユーザーは発話内の可変部分、例えば都市名や日程などを特定することができます。スロットは何らかのタスクを実行するスキルや情報を扱うスキルでよく利用されます。スロットが発話の中でどのように配置されるか設計し、スロット値をビルトイン・カタログから選択する、もしくは自分で定義しましょう。
次のサンプル発話中、 {toCity}
と {travelDate}
の部分がスロットです:
- 「{toCity}に行きたい」
- 「{travelDate}の旅行を予約して」
- 「{toCity}への休暇を計画して」
ビルトイン・スロットタイプの利用
できるだけビルトイン・スロットタイプを利用することで、手間を省きながら正確さを向上させることができます。ビルトイン・スロットタイプの中には拡張することでスキルにより適したものに改善できるものもあります。例えば、AMAZON.City
を拡張し、ある地域の全ての市町村名を追加することで、その地域により適したスロットタイプにすることができるでしょう。より詳細な情報は拡張可能なスロットタイプを参照してください。
スロットの値の詳細なレビュー
スロット値に含まれるべき単語の一覧を見つけてコピー&ペーストするのは簡単ですが、その内容をレビューし、編集することを忘れないでください。不正確なスロット値があると、スキルのロジック内でエラーが発生し、ユーザー体験を損ないます。次の点に注意してください:
- スロット値の重複
- 重複したスロット値は取り除いてください。
- スロットと関係ない言葉
- スロットと関係がない言葉が含まれないようにしてください。
- 誤字・脱字や句読点の誤り.
- 誤字・脱字や句読点の誤りもないよう、ご注意ください。