0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Amazon Lex #4】Amazon ConnectとLexを統合して音声ボットを構築してみる

0
Posted at

はじめに

image.png

こんばんは、mirukyです。
新しい試みをしており、かなり間が空いてしまいましたが、【Amazon Lex #3】Lambda連携で動的な応答を返せるようにしてみようの続編、Amazon Lex シリーズ第4回です。

前回(#3)では、Lambda連携で動的な応答を返すボットを構築しました。
今回は、構築したLexボットをAmazon Connectに統合し、電話で操作できる音声ボットを構築します。

テキストチャットとして動作していたボットを電話回線に繋ぐと、ユーザーは電話をかけるだけで注文状況を確認できるようになります。コンタクトセンターの自動応答(IVR)を、従来のボタン操作型から自然言語対話型に進化させるイメージです。

出典:Amazon Connect で Amazon Lex ボットを使用する - AWS

目次

  1. Connect × Lex統合のアーキテクチャ
  2. 前提条件
  3. ConnectインスタンスへのLexボット追加
  4. コンタクトフローの作成
  5. 電話番号の割り当て
  6. テストと動作確認
  7. 音声対話設計のポイント
  8. 料金について
  9. おわりに

1. Connect × Lex統合のアーキテクチャ

1-1. 全体構成

image.png

電話回線(PSTN)
  ↓
Amazon Connect(コンタクトフロー)
  ↓
「顧客の入力を取得する」ブロック
  ↓
Amazon Lex V2(音声認識 + NLU)
  ↓
AWS Lambda(ビジネスロジック)
  ↓
応答をAmazon Pollyで音声合成
  ↓
電話回線経由でユーザーに応答

1-2. 統合のポイント

ポイント 説明
音声品質 Connect経由の音声は8kHz(電話品質)。Lexは8kHzに最適化されたASRを提供
音声合成 LexのレスポンスはAmazon Pollyで自動的に音声合成される
DTMF入力 音声に加えてプッシュボタン入力(DTMF)にも対応可能
セッション管理 Connectのコンタクトフロー内でLexのセッション属性を読み書きできる

2. 前提条件

今回のハンズオンでは、以下が準備済みであることを前提とします。
Amazon Connectの詳しい部分に関しては、以前5回に分けて解説した記事を作成しておりますので、そちらをご覧いただければ幸いです。
→mirukyのAmazon Connect解説記事ストックリスト

前提条件 詳細
Amazon Connectインスタンス 東京リージョンで作成済み
電話番号 Connectインスタンスに電話番号を取得済み
Lexボット #2・#3で構築したCustomerSupportBotがビルド済み
Lambda関数 #3で作成したlex-order-lookupがデプロイ済み

Amazon Connectインスタンスの作成方法
Connectインスタンスをまだお持ちでない場合は、Amazon Connectの公式ドキュメントを参照して作成してください。

出典:Amazon Connect インスタンスを作成する - AWS

3. ConnectインスタンスへのLexボット追加

3-1. Lexボットの追加設定

スクリーンショット 2026-03-28 12.12.25.png

  1. AWSマネジメントコンソールで Amazon Connect を開く
  2. 使用するインスタンスの 「インスタンスエイリアス」 をクリック
  3. 左側ペインの 「問い合わせフロー」 を選択
  4. 「Amazon Lex」 セクションまでスクロール
  5. 「Amazon Lex ボットを追加」 をクリック
設定項目
ボット CustomerSupportBot
エイリアス TestBotAlias(テスト用)または Production
リージョン ap-northeast-1(東京)

6.「Amazon Lex ボットを追加」 をクリック

Lexボットのリージョンに注意
ConnectインスタンスとLexボットが同じリージョンにある場合はそのまま指定できます。異なるリージョンのLexボットを使用する場合は、クロスリージョン設定が必要です。

4. コンタクトフローの作成

4-1. コンタクトフロー設計画面を開く

  1. Amazon Connectの管理画面(ダッシュボード)にログイン
  2. 左側ペインの 「ルーティング」「フロー」 を選択
  3. 「フローを作成」 をクリック

4-2. フロー名の設定

スクリーンショット 2026-03-28 12.14.33.png

設定項目
フロー名 Lex注文確認フロー

4-3. フローの構成

スクリーンショット 2026-03-28 12.20.59.png

以下のブロックを順番につなげてフローを構成します。

エントリポイント
  ↓
①「音声の設定」ブロック
  ↓
②「プロンプトの再生」ブロック(ウェルカムメッセージ)
  ↓
③「顧客の入力を取得する」ブロック(Lex連携)
  ↓ 
④「プロンプトの再生」ブロック(終了メッセージ)
  ↓
⑤「切断」ブロック

4-4. 各ブロックの設定

①「音声の設定」ブロック

設定項目
言語 日本語
音声 Kazuha(Neural)
言語属性を設置絵 現在選択されている言語を属性として使用します。

②「プロンプトの再生」ブロック

設定項目
テキスト読み上げまたはチャットテキスト→手動で設定 お電話ありがとうございます。カスタマーサポートです。ご用件をお話しください。注文の確認も承ります。

③「顧客の入力を取得する」ブロック(重要)

スクリーンショット 2026-03-28 12.18.37.png

設定項目
タブ Amazon Lex
Amazon Lexのボット CustomerSupportBot
エイリアス TestBotAlias
テキスト読み上げまたはチャットテキスト→手動で設定 ご用件をお話しください。
インテント CheckOrderStatusGreeting

「顧客の入力を取得する」ブロックの分岐
このブロックでは、Lexが認識したインテントに応じて分岐先を設定できます。

分岐 説明
CheckOrderStatus 注文確認インテントが認識された場合
Greeting 挨拶インテントが認識された場合
エラー Lexとの通信エラーが発生した場合
デフォルト 上記以外(FallbackIntentを含む)

各分岐先に適切なブロックを接続してください。

④「プロンプトの再生」ブロック(終了メッセージ)

設定項目
テキスト読み上げ ご利用ありがとうございました。それでは失礼いたします。

⑤「切断」ブロック

通話を終了します。設定不要でそのまま配置します。

4-5. フローの保存と公開

  1. 画面右上の 「保存」 をクリック
  2. 「公開」 をクリック

「公開」を忘れると動作しません
「保存」だけではフローは有効になりません。必ず 「公開」 をクリックしてフローをアクティブにしてください。

5. 電話番号の割り当て

5-1. 電話番号にフローを紐付ける

スクリーンショット 2026-03-28 12.21.38.png

  1. Amazon Connect管理画面の左メニュー → 「チャネル」「電話番号」
  2. 使用する電話番号をクリック
  3. 「問い合わせフロー / IVR」Lex注文確認フロー を選択
  4. 「保存」 をクリック

6. テストと動作確認

6-1. 電話でテスト

設定が完了したら、割り当てた電話番号に実際に電話をかけてテストします。

6-2. 期待される会話フロー

スクリーンショット 2026-03-28 12.25.31.png
(チャットでも確認できます)

システム:お電話ありがとうございます。カスタマーサポートです。ご用件をお話しください。注文の確認も承ります。
ユーザー:「注文の状況を確認したいです」
システム:「注文番号をお教えください。」
ユーザー:「ORD-001」
システム:「注文番号 ORD-001 の情報です。商品はワイヤレスイヤホンで、配送中です。お届け予定日は2026年3月10日です。」
システム:「ご利用ありがとうございました。それでは失礼いたします。」(通話終了)

6-3. テストのチェックポイント

確認項目 確認内容
ウェルカムメッセージ 最初のプロンプトが正しく再生されるか
音声認識 ユーザーの発話が正しくテキスト化されるか
インテント認識 正しいインテントが選択されるか
Lambda応答 注文情報が正しく返されるか
音声合成 応答が自然な日本語で読み上げられるか
通話終了 フローの最後で正しく切断されるか

音声認識がうまくいかない場合
電話品質(8kHz)の音声は、コンソールのテストよりも認識精度が下がる場合があります。特に「ORD-001」のような英数字の混在は音声認識が難しいケースです。

対策としては以下が有効です。

  • DTMF入力も併用する(注文番号はプッシュボタンで入力)
  • サンプル発話を追加する(「おーあーるでぃーゼロゼロいち」のような日本語読みも登録)
  • カスタムボキャブラリーを設定する(#5で詳しく解説)

これらのテクニックは#5・#6で詳しく解説します。

7. 音声対話設計のポイント

7-1. テキストボットとの違い

電話での音声対話は、テキストチャットとは異なる設計上の考慮が必要です。

観点 テキストボット 音声ボット
入力手段 キーボード入力 音声発話
応答の確認 画面上で読み返せる 聞き逃すと戻れない
応答の長さ 長文もOK 短く簡潔に
エラー時 再入力が容易 聞き直しが発生しストレスに
認識精度 高い(テキストそのまま) 環境音やアクセントの影響を受ける

7-2. 音声ボット設計のベストプラクティス

プラクティス 説明
応答は短く簡潔に 長文は聞き取りづらい。1応答1メッセージを意識
確認を挟む 重要な値(注文番号等)は復唱して確認をとる
DTMF併用 英数字はプッシュボタン入力を選択肢として提供
タイムアウト設定 無言時間のタイムアウトを適切に設定
エスカレーション 認識がうまくいかない場合にオペレーターに繋ぐ導線を用意
SSMLの活用 読み上げ速度やポーズをSSMLタグで制御

SSML(Speech Synthesis Markup Language)の例
応答テキストにSSMLタグを使うと、音声合成をより細かく制御できます。

<speak>
  注文番号 <say-as interpret-as="spell-out">ORD-001</say-as> の情報です。
  <break time="500ms"/>
  商品は、ワイヤレスイヤホンです。
  ステータスは、<emphasis level="strong">配送中</emphasis>です。
</speak>

出典:SSML タグを使用する - Amazon Polly - AWS

8. 料金について

サービス 料金 備考
Amazon Connect 通話時間(分単位)+ 電話番号の月額利用料 従量課金
Amazon Lex 音声: $0.004/リクエスト 電話経由は音声リクエストとして課金
AWS Lambda リクエスト数 + 実行時間 無料利用枠あり
Amazon Polly 文字数に応じた従量課金 Connectからの音声合成に適用

Connect経由のLex利用は音声リクエスト扱い
コンソールのテスト(テキスト)では$0.00075/リクエストですが、Connect経由の音声ボットでは**$0.004/リクエスト**になります。テキストの約5倍のコストになるため、コスト見積もり時はご注意ください。

最新の料金は公式ページをご確認ください。

ハンズオン終了後のリソース管理
Connectの電話番号は保持しているだけで月額料金が発生します。テスト終了後に使用しない場合は、電話番号の解放を検討してください。

9. おわりに

ここまでお読みいただきありがとうございます。
今回は、#2・#3で構築したLexボットをAmazon Connectに統合し、電話で注文確認ができる音声ボットを構築しました。

電話回線からの音声認識は、テキスト入力と比べて認識精度に課題が出やすいポイントです。次回#5では、カスタムスロットタイプ・サンプル発話の設計・Runtime Hints API・DTMF入力・信頼度スコアの活用など、音声認識精度を高めるための具体的なテクニックを解説します。

ではまた、お会いしましょう。

参考リンク

Amazon Connect × Lex 公式ドキュメント

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?