如何將簡訊轉發到webhook API端點?
快速解答: 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端點。這確保您的訊息資料在傳輸過程中被加密。