Amazon Connect AI エージェントの回答内容をコンタクト属性に保存してSMS送信に利用してみた

Amazon Connect AI エージェントの回答内容をコンタクト属性に保存してSMS送信に利用してみた

2026.05.21

はじめに

Amazon Connect AI エージェントで案内した回答内容を、会話後に SMS で送信したいケースがあります。

音声だけで案内すると、ユーザーが内容を聞き逃したり、あとから確認できなかったりすることがあります。特に複数の案内を行った場合は、会話終了後にテキストで参照できるようにしておくと便利です。

実現方法としては、主に以下のような構成が考えられます。

  • AI エージェントで SMS 送信用ツールを用意し、回答後に SMS 送信用ツールを呼び出す
  • フロー上で AI エージェントを呼び出したあとに Lambda 関数を呼び出す

今回は後者の構成を採用しました。

前者の構成でも、オーケストレーションタイプであれば実現できます。ただし、回答のたびに SMS 送信用ツールを呼び出すことになるため、AI エージェントの各応答に時間がかかりやすくなる可能性があります。

そこで今回は、会話終了時に AI エージェントが Complete ツールで案内済みの回答内容を ai_answer として出力し、その値をフロー側でコンタクト属性に保存します。後続の Lambda 関数では、そのコンタクト属性を参照して SMS 送信に利用する想定です。

SMS 送信部分については、以下の記事が参考になります。

https://dev.classmethod.jp/articles/amazon-connect-lambda-send-sms/

本記事では、SMS 送信処理そのものではなく、後続処理で利用しやすいように、AI エージェントの回答内容を ai_answer として出力し、コンタクト属性に保存するところまでを確認します。

ai_answer は後続の Lambda 関数で JSON としてパースし、回答ごとに SMS 送信できるようにする想定です。

今回の構成と処理の流れ

今回のポイントは、会話の途中で都度 SMS を送信するのではなく、会話終了時にそれまでの回答本文をまとめて後続処理へ引き渡すことです。

処理の流れは以下です。

  1. ユーザーが質問する
  2. AI エージェントがナレッジを検索して回答する
  3. 1 と 2 を繰り返し、最後にユーザーが会話終了の意思を示す
  4. AI エージェントが Complete ツールを呼び出す
  5. Complete ツールの入力として ai_answer に回答内容を設定する
  6. フロー側で ai_answer をコンタクト属性に保存する
  7. 後続の Lambda 関数で ai_answer をパースして参照する

この構成にすることで、AI エージェントの応答中に SMS 送信用のツール呼び出しを追加せず、会話終了後にまとめて処理できます。

なお、実際に SMS 送信まで行う場合は、Lambda 関数側で以下のような処理を入れておくと扱いやすくなります。

  • ai_answer の文字列を JSON としてパースし、配列として扱えるようにする
  • 配列を 1 件ずつ取り出して送信する
  • SMS 本文の上限値を考慮し、一定の文字数を超える場合は分割する
  • 必要に応じて、句点や改行などの自然な区切りで本文を分割する

本記事では、Lambda 関数側の実装は扱わず、AI エージェントからコンタクト属性へ回答内容を渡すところまでを確認します。

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

今回は、オーケストレーションタイプの AI エージェントを作成しました。プロンプトはデフォルトの内容をベースにしています。

以下の画面では、AI エージェントをオーケストレーションタイプで作成していることを確認できます。

cm-hirai-screenshot 2026-04-21 16.17.42

以降では、会話終了時に回答内容を受け取るため、Complete ツールの設定を追加します。

Complete ツールに ai_answer を追加する

Complete ツールには、会話中に実際にユーザーへ案内した回答本文を受け取るための ai_answer を追加します。

以下の画面では、Complete ツールに ai_answer を追加していることを確認できます。

cm-hirai-screenshot 2026-04-21 9.45.10

入力スキーマの例は以下です。

{
  "type": "object",
  "properties": {
    "ai_answer": {
      "type": "string",
      "description": "会話中にナレッジベースから実際にユーザーへ案内した回答内容を、古い順に配列で設定してください。ナレッジ回答が一度もない場合は空配列を設定してください。例: [\"1回目の回答本文\", \"2回目の回答本文\"]"
    }
  },
  "required": [
    "ai_answer"
  ]
}

今回の検証では、Complete ツールの入力スキーマで array は利用できなかったため、typestring として定義しました。

ただし、後続処理では複数の回答を 1 件ずつ扱いたいため、ai_answer には JSON 配列形式の内容が入るように指示しています。

たとえば、回答が 2 件ある場合は、以下のような内容を ai_answer に設定する想定です。

[
  "1回目の回答本文",
  "2回目の回答本文"
]

ナレッジ回答がない場合は、空配列として扱えるように以下の内容を設定します。

[]

この形式にしておくことで、後続の Lambda 関数で JSON としてパースし、配列として扱えるようになります。

Complete ツールの指示テキストを設定する

Complete ツールの指示テキストでは、ツールを使うタイミングと、ai_answer に含める内容を明確にします。

今回の例では、以下のように設定しました。

以下の場合にこのツールを使用してください:
- ナレッジ回答後にユーザーが「他に質問はありません」など会話終了の意思を示した場合
- ナレッジ回答後にユーザーが不満を示したが、エスカレーションを辞退した場合

ツールを使用する前に、以下の固定メッセージを必ずユーザーに伝えてください:
「またのご利用をお待ちしております。」

ai_answerには、会話中にナレッジベースで実際にユーザーへ案内した回答本文のみを含めてください。
ただし、回答末尾の「オペレーターにお繋ぎします。」などは含めないでください。
終了メッセージ、検索中のつなぎ言葉、フェーズ進行の質問文、要約文も含めないでください。
同じ回答を重複して入れてはいけません。

例は以下のように設定しました。

良い例 - 自己解決して終了:
エージェント:(回答内容)ご案内は以上となります。他に質問があればお願いします。
ユーザー:ありません。
<message>
またのご利用をお待ちしております。
</message>

Complete(
  ai_answer=[
    "回答内容1"
  ]
)

このように指示しておくことで、会話の最後に、実際に案内した回答本文だけを ai_answer として取り出しやすくなります。

フローを作成する

フローは、AI エージェントを呼び出したあとに、Lambda 関数を呼び出すブロックを配置する構成です。

以下の画面では、AI エージェント呼び出し後に後続処理を配置していることを確認できます。

cm-hirai-screenshot 2026-04-21 16.21.49

AI エージェントの Complete ツールで出力した ai_answer は、フロー側でコンタクト属性として保存します。

今回の検証では、コンタクト属性の設定ブロックを使い、ログ上では SetAttributes により ai_answer が保存されていることを確認しました。

後続の Lambda 関数では、このコンタクト属性を参照します。ai_answer を JSON としてパースすることで、会話中に案内した回答内容を SMS 送信用の本文として利用できます。

動作確認

今回は、以下の質問で動作を確認しました。

  • クラスメソッド株式会社の住所を教えてくれますか?
  • クラスメソッドメンバーズについて教えて。

会話終了後、各回答が ai_answer として渡されることを確認しました。

ログやコンタクト属性上では、見え方として以下のような JSON 配列に近い形式で確認できました。

[
  "クラスメソッド株式会社の本社住所は、東京都港区西新橋1-1-1、日比谷フォートタワー26階です。郵便番号は1050003です。",
  "クラスメソッドメンバーズは、AWSクラウド環境を総合的に支援するサービスです。主な特徴を説明します。まず、初期費用と月額費用が無料で、AWS利用費の割引が受けられます。一律割引プランでは全サービス全リージョンで7パーセントオフになります。次に、24時間365日の技術サポートが無償で提供されます。日本語と英語で対応しており、障害対応や各種申請代行も受けられます。また、セキュリティ面では、アカウントの初期設定や変更対応、クラウド保険の付帯、高額不正利用防止など、安全にAWSを活用するための設定が標準で提供されます。さらに、4,000社以上の支援実績があり、AWS認定資格を保有したスペシャリストが導入支援やコンサルティング、運用代行などを行います。円建て請求書の無償発行や、管理ポータルの提供なども含まれています。"
]

後続処理では、この値を JSON としてパースし、回答ごとに取り出して利用します。

以下のコンタクト詳細画面でも、ai_answer がコンタクト属性として保存されていることを確認できました。

cm-hirai-screenshot 2026-04-21 9.35.28

この結果から、AI エージェントで案内した複数の回答を、会話終了時に ai_answer としてコンタクト属性へ保存し、後続処理へ渡せることを確認できました。

まとめ

Amazon Connect AI エージェントで案内した内容を SMS 送信などの後続処理に利用したい場合、会話終了時に Complete ツールで回答本文をまとめて出力する構成が便利でした。

今回の検証では、Complete ツールで ai_answer を出力し、フロー側でコンタクト属性に保存できることを確認しました。

実際に導入する場合は、後続の Lambda 関数で ai_answer をパースする処理に加えて、回答本文に含める範囲、重複除外、SMS 送信時の文字数上限や分割方法をあわせて検討するとよさそうです。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事