SMSをwebhook APIエンドポイントに転送する方法

ガイド 2分で読めます
リンクをコピー 共有

簡単な回答: Forward SMSは、テキストメッセージをJSON webhookとして任意のHTTPエンドポイントに送信できます。アプリでWebhook送信先を作成し、エンドポイントURLを入力して、ショートカット自動化を設定します。エンドポイントには、メッセージ内容、送信者、タイムスタンプを含むPOSTリクエストが届きます。

Webhook SMS転送とは?

Webhook SMS転送は、テキストメッセージを管理している任意のHTTPエンドポイントに自動的に送信します。プラットフォーム固有の連携(Slack、Discord、Teams)とは異なり、webhookはメッセージの処理方法を完全に制御できます。これは、カスタム連携、ログシステム、または自動化ワークフローを構築する開発者に最適です。

メッセージが届くと、Forward SMSは構造化されたJSONペイロード(メッセージ内容、送信者情報、メタデータを含む)をエンドポイントにPOSTリクエストとして送信します。

Webhookを使用する理由

Webhookは、既成の連携では対応できない柔軟性を提供します:

  • カスタム自動化:SMSを受信したときに任意のワークフローをトリガー - データベースの更新、通知の送信、スクリプトの実行、または任意のサービスとの連携
  • データログ:コンプライアンス、分析、またはバックアップ目的で、すべての受信メッセージを独自のデータベースに保存
  • マルチサービスルーティング:独自のロジックでメッセージを処理し、内容や送信者に基づいて異なる宛先にルーティング
  • 社内ツール:社内ダッシュボードやツールにSMS機能を組み込む
  • IoT連携:SMSアラートをIoTシステム、ホームオートメーション、または監視インフラに接続

Webhookペイロード形式

メッセージが転送されると、エンドポイントは以下のJSONペイロードを含むPOSTリクエストを受信します:

{
  "timestamp": "2025-01-31T14:30:00Z",
  "content": "Your verification code is 123456",
  "sender": "+1234567890",
  "contact": "Bank of Example"
}

ペイロードフィールド

| フィールド | 型 | 説明 | |-------|------|-------------| | timestamp | string | メッセージが転送されたISO 8601形式のタイムスタンプ | | content | string | テキストメッセージの内容 | | sender | string | 送信者の電話番号(利用可能な場合) | | contact | string | アドレス帳の連絡先名(一致する場合) |

Webhook転送の設定

ステップ1:Forward SMSをダウンロード

App StoreからForward SMSをダウンロードします。

ステップ2:Webhook送信先を作成

アプリを開き、「送信先を追加」をタップして「Webhook」を選択します。エンドポイントURLを入力します。セキュリティのため、URLはHTTPSである必要があります。

ステップ3:エンドポイントをテスト

「テストメッセージを送信」ボタンを使用して、エンドポイントがwebhookを正しく受信することを確認します。サーバーログをチェックして、ペイロードが届いたことを確認してください。

ステップ4:ショートカット自動化を設定

ショートカット設定ガイドに従って、メッセージ転送をトリガーする自動化を作成します。

実装例

以下は、さまざまな言語でwebhookを処理する例です:

Node.js (Express)

const express = require('express');
const app = express();

app.use(express.json());

app.post('/webhook/sms', (req, res) => {
  const { timestamp, content, sender, contact } = req.body;

  console.log(`Received SMS from ${sender}: ${content}`);

  // Process the message (save to database, trigger automation, etc.)

  res.status(200).json({ received: true });
});

app.listen(3000);

Python (Flask)

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/webhook/sms', methods=['POST'])
def handle_sms():
    data = request.json

    sender = data['sender']
    content = data['content']

    print(f"Received SMS from {sender}: {content}")

    # Process the message

    return jsonify({'received': True}), 200

if __name__ == '__main__':
    app.run(port=3000)

PHP

<?php
$payload = json_decode(file_get_contents('php://input'), true);

$sender = $payload['sender'];
$content = $payload['content'];
$timestamp = $payload['timestamp'];

error_log("Received SMS from $sender: $content");

// Process the message

http_response_code(200);
echo json_encode(['received' => true]);
?>

Ruby (Sinatra)

require 'sinatra'
require 'json'

post '/webhook/sms' do
  payload = JSON.parse(request.body.read)

  sender = payload['sender']
  content = payload['content']

  puts "Received SMS from #{sender}: #{content}"

  # Process the message

  content_type :json
  { received: true }.to_json
end

セキュリティに関する考慮事項

HTTPSを使用

webhookペイロードを転送中に暗号化するため、常にHTTPSエンドポイントを使用してください。Forward SMSはwebhook URLにHTTPSを必須としています。

エラーを適切に処理

エンドポイントは受信を確認するために2xxステータスコードを返す必要があります。Forward SMSがエラーレスポンスを受信した場合、失敗がログに記録されます。

トラブルシューティング

Webhookがメッセージを受信しない

  • URLを確認:エンドポイントURLが正しく、インターネットからアクセス可能であることを確認
  • HTTPSを確認:URLはHTTPではなくHTTPSを使用する必要があります
  • ファイアウォールルールを確認:サーバーが受信POSTリクエストを受け入れる必要があります
  • エンドポイントをテスト:アプリのテストボタンを使用して接続を確認

メッセージの到着が遅い

  • ショートカット自動化を確認:自動化が確認を要求せずに実行されることを確認
  • Appのバックグラウンド更新:iOSの設定でForward SMSでこれを有効にする
  • ネットワークの問題:iPhoneとサーバーの両方に安定したインターネット接続が必要

ペイロードが解析できない

  • Content-Type:リクエストはContent-Type: application/jsonを使用します
  • JSON解析:サーバーがJSONボディを正しく解析していることを確認
  • 文字エンコーディング:メッセージはUTF-8でエンコードされています

よくある質問

複数のwebhookエンドポイントに転送できますか?

はい、Forward SMSで複数のWebhook送信先を作成できます。各送信先は異なるエンドポイントURLを持つことができ、すべてが転送されたメッセージを受信します。

エンドポイントがダウンしている場合はどうなりますか?

エンドポイントがエラーを返すか到達不能な場合、メッセージ転送は失敗します。アプリはデバッグ用にこれらの失敗をログに記録します。フォールバックまたは監視システムの実装を検討してください。

Webhookにレート制限はありますか?

Forward SMSからの人為的なレート制限はありません。メッセージは到着次第転送され、エンドポイントで処理できます。

どのメッセージを転送するかフィルタリングできますか?

現在、ショートカット自動化をトリガーするすべてのメッセージが転送されます。webhookエンドポイントにフィルタリングロジックを実装して、不要なメッセージを無視できます。

HTTPSの代わりにHTTPを使用できますか?

いいえ、セキュリティ上の理由から、Forward SMSはHTTPSエンドポイントを必須としています。これにより、転送中のメッセージデータが暗号化されます。

Forward SMS アイコン

Forward SMS

SMSをメール、Slack、Teams、Discordへ自動転送

App Storeでダウンロード