如何将短信转发到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请求
  • 测试端点:使用应用中的测试按钮验证连接

消息到达缓慢

  • 检查快捷指令自动化:确保自动化无需确认即可运行
  • 后台应用刷新:在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 下载