Amazon Connect AIエージェントのオーケストレーションで顧客とのやり取りをエージェントに引き継ぎ、エージェントワークスペースに表示させてみた

Amazon Connect AIエージェントのオーケストレーションで顧客とのやり取りをエージェントに引き継ぎ、エージェントワークスペースに表示させてみた

2026.01.26

はじめに

以前、Amazon Q in Connectセルフサービスタイプで顧客との複数回のやり取りをエージェントに引き継ぎ、エージェントワークスペースへの表示を試しました。
https://dev.classmethod.jp/articles/amazon-q-connect-self-service-multi-turn-handoff-agent-workspace/

今回、AIエージェントのオーケストレーションタイプにて、実装する方法を紹介します。

Amazon ConnectにおけるオーケストレーションタイプのAIエージェントとは、大規模言語モデル(LLM)が会話の文脈全体を読み取り、「今何をすべきか(検索、要約、回答など)」を自律的に判断し実行する高機能なエージェントです。

従来の「手動検索」や「回答の推奨」、「セルフサービス」といった単機能型とは異なり、状況に応じてツールを使い分けたり、MCPサーバーを利用したり、文脈を踏まえた自然な対話を行ったりすることで、顧客やオペレーターをより柔軟かつ強力に支援します。

前提条件

  • Amazon Q in Connectが有効化されていること
  • Lexボットが作成済みであること

セキュリティプロファイルの作成

AIエージェント用のセキュリティプロファイルを作成します。

エージェントアプリケーションの接続アシスタントの表示のみ許可します。

cm-hirai-screenshot 2026-01-22 9.19.10

AIエージェントを作成する

オーケストレーションタイプのAIエージェントを作成します。
cm-hirai-screenshot 2026-01-22 8.23.50

ロケールは「日本語」、セキュリティプロファイルは先程作成したものを設定しました。

デフォルトのAIプロンプトであるSelfServiceOrchestrationでは、apac.amazon.nova-pro-v1:0が利用されていました。
別のモデルを利用したかったため、SelfServiceOrchestrationのプロンプト内容は変えずに、モデルのみapac.anthropic.claude-sonnet-4-20250514-v1:0 (クロスリージョン)に変更したカスタムAIプロンプトを作成し、今回のAIエージェントに設定しました。

cm-hirai-screenshot 2026-01-22 8.30.59

デフォルトでは、以下のツールが用意されています。

  • Complete
  • Escalate
  • Retrieve

Retrieveツールについては、アシスタントの関連付けが必要です。関連付けず、保存してもエラーにならない点に注意が必要です。もちろん、関連付けしない場合、実際の通話にて、Retrieveツールが選択されると回答はできません。
cm-hirai-screenshot 2026-01-22 9.34.47

カスタムツールの作成

デフォルトで用意されている Escalate ツールは削除し、カスタムツールであるHANDOFFを新規作成します。
このツールでは、単にオペレーターへ転送するだけでなく、「会話の要約」「顧客の課題」「エスカレーション理由」などをLLMに生成させ、Connectのコンタクト属性として引き渡すことを目的とします。

以下の設定をします。

  • Name: HANDOFF
  • Description: 未記載(ツールの説明をしてもよい)
  • Tool Type: Return to Control
    ポイントとして、Tool TypeReturn to Control を選択します。これにより、ツールが実行されたタイミングでAIエージェント(Lex)からConnectフローへ制御が戻り、ツールの出力結果(要約や理由など)をフロー側で「セッション属性」として受け取ることが可能になります。

cm-hirai-screenshot 2026-01-22 17.33.42

Input Schemaには、LLMに生成させたい項目を定義します。
ここでの重要なポイントは、「各プロパティの description に具体的な指示を書くこと」です。
このSchemaのdescriptionを詳細に記述するだけで、LLMが会話履歴から文脈を読み取り、自動的に値を生成・格納してくれます。

Input Schema
{
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "担当者にエスカレーションする前に顧客に返すメッセージ。このメッセージは会話に基づいた丁寧なものである必要があります。"
    },
    "conversation_summary": {
      "type": "string",
      "description": "顧客とボット間の会話全体の要約を番号付きリスト形式(1. 2. 3.)でスペース区切りで記載したリスト。エージェントが会話の流れを素早く理解できるよう、重要なポイントを時系列で簡潔にまとめてください。"
    },
    "escalation_reason": {
      "type": "string",
      "description": "エスカレーションを決定した理由を簡潔なプレーンテキストで記載。ボットでは対応できない内容や、顧客が明示的に担当者を希望した理由などを明確に記載してください。"
    },
    "customer_issue": {
      "type": "string",
      "description": "顧客が問い合わせた理由や課題を番号付きリスト形式(1. 2. 3.)でスペース区切りで要約したリスト。各項目は顧客の具体的なニーズや質問内容を明確に記載してください。"
    },
    "bot_response": {
      "type": "string",
      "description": "ボットが提供した回答内容を番号付きリスト形式(1. 2. 3.)でスペース区切りで要約したリスト。各項目は実際に伝えた情報(価格、仕様、手順など)を具体的に記載してください。"
    }
  },
  "required": [
    "message",
    "customer_issue",
    "bot_response",
    "conversation_summary",
    "escalation_reason"
  ]
}

Instruction Text と Example

Instruction Text(ツールの使用に関する指示)と Example(使用例)という設定項目もありますが、今回は設定せず、空欄のままとします。
Input Schema の description を詳細に記述しているため、ここに追加の指示を記載しなくても、十分に意図した動作(要約の生成やエスカレーション判断)が機能することを確認しています。

Instruction TextExampleを設定したい場合、公式ドキュメントに詳細な記述形式は公開されていませんが、デフォルトのAIエージェント(SelfServiceOrchestrator)のツールを参考に、以下の形式で記述するとよいでしょう。

これでツールの設定は完了です。AIエージェントを保存、公開します。

[Default AI Agent Configurations]に作成したAIエージェントを設定します。

ビュー作成

エージェントワークスペースに情報を表示するため、Attribute Sectionを1つ使用したビューを作成します。

以下の設定を行います。

列数は1列に設定します。
cm-hirai-screenshot 2025-12-01 11.44.14

  • Items 1
    • Label
      • 電話番号
    • Value(動的)
      • $.Attributes[0].telephoneNumber
    • Copyable
      • true
  • Items 2
    • Label
      • AIボットの対応
    • Value(動的)
      • $.Attributes[0].bot_response
    • Copyable
      • true
  • Items 3
    • Label
      • AIボットとの会話要約
    • Value(動的)
      • $.Attributes[0].conversation_summary
    • Copyable
      • true
  • Items 4
    • Label
      • 顧客の課題
    • Value(動的)
      • $.Attributes[0].customer_issue
    • Copyable
      • true
  • Items 5
    • Label
      • エスカレーション理由
    • Value(動的)
      • $.Attributes[0].escalation_reason
    • Copyable
      • true

cm-hirai-screenshot 2025-12-01 11.44.38

Connectフロー

Connectフローは、ステップバイステップガイド(ビュー)を表示するフローと、電話を受けるフローの2つを作成します。

ビューを表示するフロー

ビューを表示するフローの構成はシンプルです。
cm-hirai-screenshot 2025-12-01 11.48.49

[ビューを表示]ブロックの設定は以下のとおりです。

  • 表示:先ほど作成したビュー
  • バージョン:$LATEST
  • タイムアウト:60秒
  • 入力:以下の通り(未処理のJSON)
未処理のJSON
{
  "Attributes": [
    {
      "telephoneNumber": "$.Attributes.telephoneNumber",
      "bot_response": "$.Attributes.bot_response",
      "conversation_summary": "$.Attributes.conversation_summary",
      "customer_issue": "$.Attributes.customer_issue",
      "escalation_reason": "$.Attributes.escalation_reason"
    }
  ]
}

cm-hirai-screenshot 2025-12-01 11.49.25

自作のビューは「カスタマーマネージドビュー」、AWSが提供する既存のビューは「AWSマネージドビュー」と呼ばれます。
AWSドキュメントに記載されているとおり、それぞれ入力データの形式が異なります。

cm-hirai-screenshot 2025-04-07 14.21.07
Connectインスタンス作成時にデフォルトで作成されるAWSマネージドビュー一覧

The input data for Attribute Bar in Show View Block differs for Customer and AWS Managed Views

Customer Managed View
{"Attributes": [{"Label": "SomeLabel", "Value": "123"}]}

https://d3irlmavjxd3d8.cloudfront.net/?path=/docs/aws-managed-views-common-configuration--page#Attribute-Bar

今回はカスタマーマネージドビューを使用するため、AttributeBarにはAttributesキーを含めて記述します。

電話を受けるフロー

電話を受けるフローの構成は以下のとおりです。

cm-hirai-screenshot 2026-01-22 17.13.13

conversation_summary、escalation_reason、電話番号(telephoneNumber)などをコンタクト属性に設定した後、「イベントフローの設定」ブロックを配置します。

cm-hirai-screenshot 2025-12-01 11.56.23

「DefaultFlowForAgentUI」イベントフックを設定することで、エージェントUIに表示するフローを動的に決定できます。

以下の設定を行います。

  • イベントフックの選択:エージェント UI のデフォルトフロー
  • フローの選択:先ほど作成したビューフロー
    cm-hirai-screenshot 2025-12-01 11.57.00

試してみる

実際に動作確認を行います。

顧客からの電話をAIエージェントが受け、お問い合わせ内容をヒアリングした後、エージェントに転送します。

顧客とAIエージェントの会話

以下は、顧客とAIエージェントのやり取りのログです。
最初はAIエージェントがナレッジベース(Retrieveツール)を使って住所を回答し、その後、配送状況の確認(AIでは対応不可)についてエスカレーションする流れになっています。

BOT

お問い合わせ内容をお伝え下さい

Customer

どういったことなら回答可能ですか?

BOT

ご質問ありがとうございます。どのようなことでお手伝いできるか、ご説明させていただきますね。

私は様々なご質問やお困りごとについて、情報をお調べしてお答えすることができます。製品やサービスに関するご質問、手続きの方法、ポリシーについてなど、幅広いトピックに対応しております。

もし私がお答えできない内容や、より専門的なサポートが必要な場合は、担当者におつなぎすることも可能です。

何かお困りのことや、お知りになりたいことはございますか?

Customer

クラスメソッドの東京にあるオフィスの住所を教えてください。

BOT

クラスメソッドの東京オフィスの住所についてお調べいたしますね。少々お待ちください。

(Retrieveツール実行中...)

クラスメソッドの東京オフィスの住所をご案内いたします。

郵便番号105の0003、東京都港区西新橋1丁目1番1号、日比谷フォートタワー26階でございます。

最寄り駅はJR新橋駅から徒歩5分となっております。営業時間は平日の9時から18時までです。

他にお知りになりたいことはございますか?

Customer

ありがとうございます。解決しました。別件で注文した商品が届いていないのですが。

BOT

承知いたしました。ご注文いただいた商品が届いていないとのこと、ご心配をおかけしております。

申し訳ございませんが、個別のご注文状況や配送状況の確認につきましては、私では対応することができません。担当者におつなぎして、詳しくお調べさせていただきたいと思います。担当者におつなぎしてもよろしいでしょうか?

Customer

はいお願いします。

BOT

かしこまりました。それでは担当者におつなぎいたします。少々お待ちくださいませ。

エージェントワークスペースの確認

エージェントに転送された後、エージェントワークスペースには以下のように表示されました。
通話開始前に、AIエージェントが収集・要約した情報が「ステップバイステップガイド」として表示されていることがわかります。

cm-hirai-screenshot 2026-01-22 17.22.22

表示された内容は以下の通りです。HANDOFF ツールのスキーマ定義に従って、LLMが会話履歴から適切に情報を抽出し、要約していることが確認できました。チャットのため、電話番号は表示されませんが、通話の場合は表示されます。

AIボットの対応
1. クラスメソッドの東京オフィスの住所をご案内(東京都港区西新橋1-1-1 日比谷フォートタワー26階、最寄り駅はJR新橋駅から徒歩5分、営業時間は平日9時から18時) 2. ご注文商品の配送状況確認については対応できないため、担当者へのエスカレーションを提案し、お客様の同意を得た
AIボットとの会話要約
1. お客様が対応可能な内容についてお尋ねになり、製品やサービスに関する情報提供が可能であることをご案内 2. クラスメソッドの東京オフィスの住所についてお問い合わせがあり、詳細な住所情報(東京都港区西新橋1-1-1 日比谷フォートタワー26階)とアクセス情報を提供 3. お客様がご注文された商品が届いていないとのご相談があり、配送状況の確認は対応できないため担当者へのエスカレーションを提案 4. お客様が担当者への接続に同意
顧客の課題
1. ご注文された商品が届いていない状況についてのお問い合わせ
エスカレーション理由
ご注文商品の配送状況確認や個別の注文情報の照会は、ボットでは対応できないため。お客様が明示的に担当者への接続を希望された。

通話終了後は、コンタクト詳細ページの「ユーザー定義の属性」からも確認可能です。
cm-hirai-screenshot 2026-01-22 17.32.13

まとめ

Amazon ConnectのAIエージェント(オーケストレーションタイプ)を利用して、顧客との対話内容を要約し、スムーズにエージェントへ引き継ぐ仕組みを構築しました。

カスタムツールは、ツール名、ツールタイプ、Input Schemaの3つを設定するだけで機能しました。よりツール選択精度を上げたい、要約を意図したものにしたい場合、descriptionやInstruction Text(ツールの使用に関する指示)と Example(使用例)を記載するとよいでしょう。

カスタムツール Return to Control を活用することで、LLMの強力な文脈理解能力を活かしつつ、Connectのフローへ構造化されたデータを渡すことができます。これにより、エージェントは「お客様が何に困っていて、AIがどこまで対応したか」を一目で把握できるため、顧客体験の向上と対応時間の短縮が期待できます。

この記事をシェアする

FacebookHatena blogX

関連記事