はじめに
こんばんは、mirukyです。
Amazon Lex シリーズ第2回です。
前回(#1)では、Amazon Lexの概要・主要コンポーネント・機能・料金体系を解説しました。
今回は、実際にAWSコンソールからLexボットを構築するハンズオンを行います。
作成するのは、カスタマーサポートで使える注文確認ボットです。ユーザーが注文番号を伝えると、注文状況を回答してくれるシンプルなボットを構築しながら、インテント・スロット・サンプル発話の設計方法を学んでいきましょう。
目次
- 構築するボットの全体像
- ボットの作成
- インテントの設定
- スロットの設定
- レスポンスの設定
- ビルドとテスト
- バージョンとエイリアスの管理
- 料金について
- おわりに
1. 構築するボットの全体像
1-1. 今回作るボット
1-2. 設計するコンポーネント
| コンポーネント | 設定内容 |
|---|---|
| ボット名 | CustomerSupportBot |
| 言語 | 日本語(ja_JP) |
| インテント① |
CheckOrderStatus(注文状況確認) |
| インテント② |
Greeting(挨拶) |
| インテント③ |
FallbackIntent(認識できない場合) |
2. ボットの作成
2-1. Lexコンソールを開く
- AWSマネジメントコンソール(東京リージョン)で Amazon Lex を開く
- 「ボットを作成」 をクリック
2-2. ボットの基本設定
| 設定項目 | 値 |
|---|---|
| ボット名 | CustomerSupportBot |
| 説明 | カスタマーサポート用の注文確認ボット |
| IAMアクセス許可 | 基本的な Amazon Lex 権限を持つロールを作成 |
| ボットのエラーロギング | 無効 |
| COPPA(児童オンラインプライバシー保護法) | いいえ |
2-3. 言語の設定
| 設定項目 | 値 |
|---|---|
| 言語 | 日本語(ja_JP) |
| 音声 | Kazuha(または任意のPolly音声) |
音声の選択
Amazon Pollyの日本語音声は複数用意されています。テスト時にはどの音声でも問題ありませんが、本番利用時は用途に合った音声を選択してください。ニューラル音声(Neural)を選ぶとより自然な発話になります。
「完了」 をクリックすると、ボットが作成されてインテント編集画面が表示されます。
3. インテントの設定
3-1. CheckOrderStatus インテントの作成
ボット作成直後はデフォルトのNewIntentが表示されています。これを注文確認用のインテントに変更します。
| 設定項目 | 値 |
|---|---|
| インテント名 | CheckOrderStatus |
| 説明 | 注文番号をもとに注文状況を確認するインテント |
3-2. サンプル発話の登録

ユーザーがこのインテントを呼び出す際に使いそうなフレーズを登録します。「発話を追加」 で以下を入力し、「インテントを保存」をクリックします。
注文の状況を確認したい
注文状況を教えて
注文番号の確認をお願いします
注文はどうなっていますか
注文を確認したいのですが
配送状況を知りたい
荷物はいつ届きますか
スロットを含む発話はスロット作成後に追加してください
{OrderId} のようにスロットを参照する発話は、スロットが未定義の状態では保存時にエラーになります。スロット参照付きの発話は、セクション4でスロットを作成した後に追加します。
サンプル発話の設計ポイント
- 最低5〜10個は登録しましょう。バリエーションが多いほどNLUの精度が向上します
- 丁寧語・カジュアル・命令形など、さまざまな言い回しを含める
- アシスト付きNLUを有効にすると、少ないサンプル発話でも高精度の認識が可能です
3-3. Greetingインテントの作成
左メニューの 「インテントリスト」 に戻り、「インテントを追加」 → 「空のインテントを追加」 をクリックします。
| 設定項目 | 値 |
|---|---|
| インテント名 | Greeting |
| 説明 | 挨拶のインテント |
こんにちは
こんばんは
はじめまして
お疲れ様です
よろしくお願いします
「応答を閉じる」 セクションでメッセージを設定し、「インテントを保存」をクリックします。

こんにちは!カスタマーサポートボットです。ご注文の確認など、お気軽にお申し付けください。
3-4. FallbackIntentの設定
Amazon Lexは自動でFallbackIntent(AMAZON.FallbackIntent)を作成しています。ユーザーの発話がどのインテントにも該当しない場合にこのインテントが呼び出されます。
インテントリストから FallbackIntent を選択し、「応答を閉じる」 を設定し、「インテントを保存」をクリックします。

申し訳ございません。ご質問の内容を理解できませんでした。注文状況の確認であれば「注文の確認」とお伝えください。
FallbackIntentは必ず設定してください
FallbackIntentのレスポンスを設定しないと、ユーザーが認識できない発話をした際に無応答になります。ユーザー体験を損なわないよう、次のアクションを案内するメッセージを必ず設定しましょう。
4. スロットの設定
4-1. スロットとは
スロットは、インテントを達成するために必要なパラメータです。CheckOrderStatusインテントでは「注文番号」が必要なので、これをスロットとして定義します。
4-2. スロットの追加

CheckOrderStatusインテントの編集画面で 「スロット」 セクションの 「スロットを追加」 をクリックします。
| 設定項目 | 値 |
|---|---|
| このインテントには必須 | 有効 |
| 名前(スロット名) | OrderId |
| スロットタイプ | AMAZON.AlphaNumeric |
| プロンプト | 注文番号をお教えください。(例:ORD-001) |
スロットタイプの選び方
Amazon Lexには多数の組み込みスロットタイプが用意されています。
| スロットタイプ | 用途 | 例 |
|---|---|---|
AMAZON.Number |
数値 | 3、100 |
AMAZON.Date |
日付 | 明日、3月5日 |
AMAZON.Time |
時刻 | 午後3時 |
AMAZON.PhoneNumber |
電話番号 | 090-1234-5678 |
AMAZON.AlphaNumeric |
英数字の組み合わせ | ORD-001 |
AMAZON.City |
都市名 | 東京、大阪 |
| カスタムスロットタイプ | 独自の値リスト | 商品カテゴリ、部署名 など |
注文番号は英字と数字の組み合わせのため、AMAZON.AlphaNumericを使用します。
4-3. スロット参照付きサンプル発話の追加
スロットを作成したので、セクション3-2で保留していたスロット参照付きのサンプル発話を追加します。CheckOrderStatusインテントの 「サンプル発話」 セクションで以下を追加してください。
注文番号 {OrderId} の状況を教えて
{OrderId} の注文を確認して
これにより、ユーザーが「注文番号ORD-001の状況を教えて」のように一度に注文番号を伝えた場合にも、スロットのプロンプトをスキップして直接処理できるようになります。
4-4. 確認プロンプトの設定(任意)
必要に応じて、スロットの値をユーザーに確認するプロンプトを設定できます。
CheckOrderStatusインテントの 「確認」 セクションで以下を設定します。
| 設定項目 | 値 |
|---|---|
| 確認プロンプト | 注文番号 {OrderId} で確認いたします。よろしいですか? |
| 応答を拒否する | かしこまりました。もう一度注文番号をお教えください。 |
5. レスポンスの設定
5-1. クロージングレスポンス
CheckOrderStatusインテントの 「応答を閉じる」 セクションで、インテント達成時の応答を設定し、「インテントを保存」をクリックします。
注文番号 {OrderId} の確認を承りました。担当部署にお繋ぎいたします。
Lambda関数でのレスポンスについて
今回はコンソール上のレスポンス設定のみで構築しますが、実際の業務ではLambda関数を使って動的な応答を返すのが一般的です。Lambda連携は次回#3で詳しく解説します。
6. ビルドとテスト
6-1. ボットのビルド
すべてのインテント・スロットの設定が完了したら、画面上部の 「構築」 をクリックします。
ビルドには数十秒〜数分かかります。「ビルドが正常に完了しました」と表示されるまで待ちます。
ビルドを忘れずに
設定を変更した後は必ずビルドを実行してください。ビルドしないと変更が反映されず、テストが旧設定で動作します。
6-2. テスト画面を開く

ビルド完了後、画面上部の 「テスト」 をクリックするとテストウィンドウが開きます。
6-3. テスト①:注文確認の会話フロー
ユーザー:注文の状況を確認したいです
ボット :注文番号をお教えください。(例:ORD-001)
ユーザー:ORD-001
ボット :注文番号 ORD-001 で確認いたします。よろしいですか?(確認プロンプトを設定した場合)
ユーザー:はい
ボット :注文番号 ORD-001 の確認を承りました。担当部署にお繋ぎいたします。
6-4. テスト②:挨拶
ユーザー:こんにちは
ボット :こんにちは!カスタマーサポートボットです。ご注文の確認など、お気軽にお申し付けください。
6-5. テスト③:認識できない発話
ユーザー:天気を教えて
ボット :申し訳ございません。ご質問の内容を理解できませんでした。注文状況の確認であれば「注文の確認」とお伝えください。

こちらは、FallbackIntentが作動してくれていることがわかります。
6-6. テストのポイント
| 確認項目 | 確認内容 |
|---|---|
| インテント認識 | 正しいインテントが選択されているか |
| スロット引き出し | スロットのプロンプトが正しく表示されるか |
| FallbackIntentの動作 | 想定外の発話にFallbackが正しく応答するか |
| インスペクター | 画面右側のインスペクターでインテント名・スロット値・信頼度スコアを確認 |
インスペクターの活用
テスト画面の右側に表示される インスペクター では、各発話に対してLexがどのインテントを選択したか、信頼度スコアはいくつか、スロットにどの値が入ったかを確認できます。意図しない動作があった場合のデバッグに非常に役立ちます。
7. バージョンとエイリアスの管理
7-1. バージョンの発行
テストが完了し、ボットの動作に問題がなければバージョンを発行します。
- 左側ペインの 「ボットのバージョン」 を選択
- 「バージョンを作成」 をクリック
- 説明に
初期リリースと入力し、「作成」 をクリック
7-2. エイリアスの作成
- 左側ペインの 「エイリアス」 を選択
- 「エイリアスを作成」 をクリック
| 設定項目 | 値 |
|---|---|
| エイリアス名 | Production |
| バージョン | 先ほど発行したバージョン |
「作成」 をクリックします。
DRAFTバージョンとTestBotAliasの関係
開発時はDRAFTバージョンがTestBotAliasエイリアスに紐付いています。テスト画面で使用されるのはこの組み合わせです。本番環境では、発行済みバージョンを指す独自のエイリアス(例:Production)を作成し、アプリケーションからはこのエイリアスを指定して呼び出します。
7-3. バージョン管理のベストプラクティス
| プラクティス | 説明 |
|---|---|
| DRAFT版で開発・テスト | 変更は常にDRAFTバージョンで行う |
| テスト完了後にバージョン発行 | 動作確認後にスナップショットとして保存 |
| エイリアスで本番管理 | アプリケーションはエイリアス経由で呼び出す |
| ロールバック | 問題発生時はエイリアスの参照先を旧バージョンに戻す |
8. 料金について
| サービス | 料金 | 備考 |
|---|---|---|
| Amazon Lex | テキスト: $0.00075/リクエスト、音声: $0.004/リクエスト | テスト中の入力も課金対象 |
テスト時も課金されます
コンソールのテスト画面での入力も、通常のリクエストとして課金されます。ただし、無料利用枠の範囲内であれば料金は発生しません。
最新の料金は公式ページをご確認ください。
出典:Amazon Lex の料金 - AWS
9. おわりに
ここまでお読みいただきありがとうございます。
今回は、Amazon Lexコンソールから注文確認用のチャットボットを構築しました。
インテント・スロット・サンプル発話というLexの基本概念を実際に手を動かしながら体験できたかと思います。ただし、今回のボットは静的なレスポンスを返すだけです。「注文番号ORD-001の実際のステータスを返す」といった動的な応答を実現するには、Lambda関数との連携が必要です。
次回#3では、Lambda連携で動的な応答を実現する方法を解説します。注文データの検索や外部API連携など、実際の業務で使えるボットに仕上げていきましょう。
ではまた、お会いしましょう。
















