如何將簡訊轉發到webhook API端點?

指南 2 分鐘閱讀
複製連結 分享

快速解答: Forward SMS可以將您的簡訊作為JSON webhook發送到任何HTTP端點。在應用程式中建立Webhook目的地,輸入您的端點URL,並設定捷徑自動化。您的端點將收到包含訊息內容、發送者和時間戳記的POST請求。

什麼是Webhook簡訊轉發?

Webhook簡訊轉發可自動將您的簡訊發送到您控制的任何HTTP端點。與平台特定的整合(Slack、Discord、Teams)不同,webhook讓您完全控制訊息的處理方式。這對於建立自訂整合、日誌系統或自動化工作流程的開發人員來說是理想的選擇。

當訊息到達時,Forward SMS會向您的端點發送包含結構化JSON負載的POST請求,其中包含訊息內容、發送者資訊和中繼資料。

為什麼使用Webhook

Webhook提供了預建整合無法比擬的靈活性:

  • 自訂自動化:收到簡訊時觸發任何工作流程 - 更新資料庫、發送通知、執行腳本或與任何服務整合
  • 資料日誌:將所有收到的訊息儲存在您自己的資料庫中,用於合規性、分析或備份目的
  • 多服務路由:使用您自己的邏輯處理訊息,根據內容或發送者將其路由到不同的目的地
  • 內部工具:在您的內部儀表板和工具中建立簡訊功能
  • IoT整合:將簡訊警報連接到您的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

始終使用HTTPS端點來加密傳輸中的webhook負載。Forward SMS要求webhook URL使用HTTPS。

優雅地處理錯誤

您的端點應傳回2xx狀態碼以確認收到。如果Forward SMS收到錯誤回應,它將記錄失敗。

疑難排解

Webhook未收到訊息

  • 檢查URL:確保端點URL正確且可從網際網路存取
  • 驗證HTTPS:URL必須使用HTTPS,而不是HTTP
  • 檢查防火牆規則:您的伺服器必須接受傳入的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端點中實作過濾邏輯來忽略不需要的訊息。

我可以使用HTTP而不是HTTPS嗎?

不可以,基於安全原因,Forward SMS要求使用HTTPS端點。這確保您的訊息資料在傳輸過程中被加密。

Forward SMS 圖示

Forward SMS

將簡訊自動轉寄到電子郵件、Slack、Teams、Discord

在 App Store 下載