ダイヤルSMSは、契約した電話番号に興味のある人が電話をかけてきたら、情報をSMSで24時間自動で送信するサービス。入電対応も不要なので、人件費もかからず、コスパ◎。
ダイヤルSMSに入電があったら、通知が欲しい…という時には『着信URL』を上手に使いましょう。この着信URLは、少し開発の知識が必要です。初心者の私が設定してみましたので、ぜひお試しください。
URLを準備するのですから、Webサーバーが必要になります。
①サーバー準備→URLを設定
今回、私はRenderというサーバーを使いました。こちらは現在英語のみの対応となっているようですが、料金表では『Hobby』プランが無料となっており、今回のプロジェクトのサポートに十分です。
使い方はこちらが参考になるかもしれません。3. Webhokの設定にて Render.com のサービスのURLをコピーしたら、それを、EZSMSのダイヤルSMS設定画面にて、着信URLとして入力してください。

これで、EZSMSのダイヤルSMSに入電があると、この着信URLへ着信の情報がPOST送信される設定が完了しました。
②サーバー側での準備
着信用URLで受け取った情報を、お好みに処理する設定をしておく必要があります。これには、サーバー側にスクリプトを置くのですが、PHPやPython、Node.js、Rubyなどのバックエンド言語を使います。
私は今回、着信を受けたらメールで通知してもらえるように設定することにしました。
メール送信者として、Gメールを使います。また、Gメールアカウントのアプリパスワードが必要になります。これは、普段ログインに使うパスワードとは違います。詳しくはこちらを参照してください。このページからアプリパスワードの作成も行うことができます。
通知を受信したいメールアドレスも準備してください。
Gメールアドレス、アプリパスワード、そして受信用のメールアドレスが準備できたら、スクリプトを書きます。私の例では、pythonを使いました。
from flask import Flask, request, render_template
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os
import json
import pytz
app = Flask(__name__)
app.secret_key = os.environ.get('SECRET_KEY', 'your_secret_key')
from datetime import datetime
def format_timestamp(timestamp):
try:
dt_utc = datetime.utcfromtimestamp(float(timestamp))
dt_jst = dt_utc.replace(tzinfo=pytz.utc).astimezone(pytz.timezone("Asia/Tokyo"))
return dt_jst.strftime('%Y-%m-%d %H:%M:%S')
except Exception as e:
print(f"⚠️ タイムスタンプ変換エラー: {e}")
return "Unknown"
# 📧 メール送信関数
def send_email(caller, recipient, call_time):
sender_email = "your-gmail-address@gmail.com" # 送信元のGmailアドレス
receiver_email = "your-email-to-receive-notification@email.com" # 受信先のメールアドレス
password = "gmail-app-password" # Gmailの「アプリパスワード」を使う
subject = "📞 新しいWebhook通知"
body = f"""
新しい通話データを受信しました!
📌 Caller: {caller}
📌 Recipient: {recipient}
📌 Call Time: {call_time}
"""
msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain"))
try:
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, msg.as_string())
print("📧 メール送信成功!")
except Exception as e:
print(f"⚠️ メール送信エラー: {e}")
@app.route('/webhook', methods=['POST'])
def webhook():
# 📌 受信したデータの形式をログに記録
print("📌 受信したデータ (リクエストボディ):", request.data)
try:
if request.is_json:
data = request.get_json()
else:
data = request.form.to_dict() # form データを辞書に変換
print("📌 パースしたデータ:", data) # データ構造を確認
# JSON形式の場合、ネストされているかチェック
if "results" in data:
parsed_data = json.loads(data["results"])
caller = parsed_data.get("caller", "Unknown")
recipient = parsed_data.get("recipient", "Unknown")
call_time = parsed_data.get("call_time", "Unknown")
else:
caller = data.get("caller", "Unknown")
recipient = data.get("recipient", "Unknown")
call_time = data.get("call_time", "Unknown")
except Exception as e:
print(f"⚠️ データ取得エラー: {e}")
return "Invalid Data Format", 400
# 🔹 タイムスタンプを変換
formatted_time = format_timestamp(call_time)
print("===== 📞 Webhook Data Received! =====")
print(f"Caller: {caller}")
print(f"Recipient: {recipient}")
print(f"Call Time: {formatted_time}") # 🔹 変換後の時間を表示
print("======================================")
# 📧 メール送信(変換後の時間を使う)
send_email(caller, recipient, formatted_time)
return "Data received!", 200
@app.route('/display')
def display_data():
return render_template(
'display.html',
caller=request.args.get('caller', 'No Data'),
recipient=request.args.get('recipient', 'No Data'),
call_time=request.args.get('call_time', 'No Data')
)
import os
app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
25行目から27行目は、準備したものに置き換えてください。
これを、app.py という名前で保存します。私は、Githubアカウントに連携したVS Codeを使って準備し、GithubからRender(サーバー) へ繋いでデプロイさせました。
③テストしてみる
さぁ、契約したダイヤルSMS番号へ電話をかけてみましょう。電話が応答されると、まず、Renderのサービス内のログ画面に、ダイヤルSMSの着信データがPOST送信されたことが表示されます。
"POST /webhook HTTP/1.1" 200 -
そして、受信用に設定したメールアドレスへ、メールが届いているはずです。
件名は『📞 新しいWebhook通知』
本文は『 新しい通話データを受信しました!
📌 Caller: (架電者の電話番号)
📌 Recipient: (契約したダイヤルSMS番号)
📌 Call Time: (入電日時)』です。
便利なダイヤルSMSの機能を、最大限に活かしてください。