【Amazon Connect Customer】入力してもらった電話番号の登録有無を AWS Lambda で判定して処理を分岐してみた
はじめに
こんにちは、フニです。
本記事では、Amazon Connect Customer で入力してもらった電話番号の登録有無を AWS Lambda で判定して処理を分岐する方法についてご紹介します。
やってみた
前提
- Amazon Connect Customer インスタンス構築済み
- インスタンス内に利用可能な電話番号が設定されていること
- AWS Lambda は Python 3.14 を利用
フローの全体像
今回の検証には、以下のフローを利用します。
- ①:お客様から電話番号を入力してもらい、属性として保存します
- ②:AWS Lambda にパラメータとして渡し、登録有無によって処理分岐します
- ③:result の値が TRUE か FALSE かによって異なるアナウンスを再生します

①:お客様から電話番号を入力してもらい、属性として保存します
お客様から電話番号を入力してもらいます。
今回は 09012345678 のような11桁の電話番号を入力してもらうように設定しました。
入力してもらった電話番号は、$.Attributes.PhoneNumber 属性に保存します。
こちらは以下のブログに詳しく解説されていますので、ご参照ください。
②:AWS Lambda にパラメータとして渡し、登録有無によって処理分岐します
① で保存した $.Attributes.PhoneNumber 属性を tel というパラメータで Lambda 側に渡します。

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:未登録の電話番号です

結果
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 で実装できます。
この記事が、誰かの助けになれば幸いです。







