【Amazon Connect Customer】入力してもらった電話番号の登録有無を AWS Lambda で判定して処理を分岐してみた

【Amazon Connect Customer】入力してもらった電話番号の登録有無を AWS Lambda で判定して処理を分岐してみた

Amazon Connect Customer で顧客から入力された電話番号の登録有無を AWS Lambda で判定し、処理を分岐させる方法を実装してみました。サンプルコードと実行結果をもとに、その流れをご紹介します。
2026.07.24

はじめに

こんにちは、フニです。
本記事では、Amazon Connect Customer で入力してもらった電話番号の登録有無を AWS Lambda で判定して処理を分岐する方法についてご紹介します。

やってみた

前提

  • Amazon Connect Customer インスタンス構築済み
  • インスタンス内に利用可能な電話番号が設定されていること
  • AWS Lambda は Python 3.14 を利用

フローの全体像

今回の検証には、以下のフローを利用します。

  • ①:お客様から電話番号を入力してもらい、属性として保存します
  • ②:AWS Lambda にパラメータとして渡し、登録有無によって処理分岐します
  • ③:result の値が TRUE か FALSE かによって異なるアナウンスを再生します

CleanShot 2026-07-24 at 11.33.49@2x.png

①:お客様から電話番号を入力してもらい、属性として保存します

お客様から電話番号を入力してもらいます。
今回は 09012345678 のような11桁の電話番号を入力してもらうように設定しました。
入力してもらった電話番号は、$.Attributes.PhoneNumber 属性に保存します。

こちらは以下のブログに詳しく解説されていますので、ご参照ください。

https://dev.classmethod.jp/articles/amazon-connect-lambda-customer-input/

②:AWS Lambda にパラメータとして渡し、登録有無によって処理分岐します

① で保存した $.Attributes.PhoneNumber 属性を tel というパラメータで Lambda 側に渡します。

CleanShot 2026-07-24 at 11.48.04@2x.png

tel パラメータの値によって、result に値を付与します。

- 登録された電話番号の場合:result = "TRUE"
- 未登録の電話番号の場合:result = "FALSE"

以下はサンプルコードです。
今回は REGISTERED_PHONE_NUMBER という変数に直接指定してますが、
ユースケースとして、DB と連携して処理する場合にも活用いただけると思います。

import json

# 照合対象の電話番号(登録済みとみなす番号)
REGISTERED_PHONE_NUMBER = "09012345678"

def lambda_handler(event, context):
    # Amazon Connect から渡された内容全体をログに出力(デバッグ用)
    print("Received event:", json.dumps(event, ensure_ascii=False))

    # フローの LambdaInvocationAttributes で設定したパラメータ "tel" を取得
    #   tel = $.Attributes.PhoneNumber
    params = event["Details"]["Parameters"]
    tel = params.get("tel")

    print(f"入力された電話番号 (tel): {tel}")

    # 電話番号が一致すれば "TRUE"、一致しなければ "FALSE"
    # ★重要★ Connect の属性は文字列のみ。フロー側 Compare ブロックは
    #   $.External.result を "TRUE"(大文字) と Equals で比較しているため、
    #   bool ではなく大文字の文字列 "TRUE"/"FALSE" を返す
    result = "TRUE" if tel == REGISTERED_PHONE_NUMBER else "FALSE"

    print(f"照合結果 (result): {result}")

    # STRING_MAP 形式で返却(値はすべて文字列のフラットな辞書)
    return {
        "result": result,
    }

③:result の値が TRUE か FALSE かによって異なるアナウンスを再生します

result の値によって異なるアナウンスを流します。

- TRUE:登録されている電話番号です
- FALSE:未登録の電話番号です

CleanShot 2026-07-24 at 11.54.48@2x.png

結果

CloudWatch Logs でログを確認して一部抜粋しています。
以下のように問題なく処理分岐できていることがわかります。

TRUE の場合

{
    "Results": "09012345678",
    "ContactFlowModuleType": "StoreUserInput",
}

{
    "ExternalResults": {
        "result": "TRUE"
    },
    "Parameters": {
        "Parameters": {
            "tel": "09012345678"
        },
    }
}

{
    "ContactFlowModuleType": "PlayPrompt",
    "Parameters": {
        "Text": "登録されている電話番号です",
    }
}

FALSE の場合

{
    "Results": "09011112222",
    "ContactFlowModuleType": "StoreUserInput",
}

{
    "ExternalResults": {
        "result": "FALSE"
    },
    "Parameters": {
        "Parameters": {
            "tel": "09011112222"
        },
    }
}

{
    "ContactFlowModuleType": "PlayPrompt",
    "Parameters": {
        "Text": "未登録の電話番号です",
    }
}

さいごに

今回は、Amazon Connect Customer で入力してもらった電話番号の登録有無を AWS Lambda で判定して処理を分岐する方法についてご紹介しました。
外部データベースなどと連携して複雑な処理分岐が必要になったとしても、AWS Lambda で実装できます。

この記事が、誰かの助けになれば幸いです。

この記事をシェアする

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

関連記事