Cách chuyển tiếp SMS đến webhook API endpoint?
Trả lời nhanh: Forward SMS có thể gửi tin nhắn văn bản của bạn đến bất kỳ HTTP endpoint nào dưới dạng JSON webhook. Tạo đích Webhook trong ứng dụng, nhập URL endpoint của bạn và thiết lập Shortcuts automation. Endpoint của bạn sẽ nhận POST request chứa nội dung tin nhắn, người gửi và timestamp.
Webhook SMS Forwarding là gì?
Webhook SMS forwarding tự động gửi tin nhắn văn bản của bạn đến bất kỳ HTTP endpoint nào bạn kiểm soát. Không giống như các tích hợp dành riêng cho nền tảng (Slack, Discord, Teams), webhooks cho bạn toàn quyền kiểm soát cách tin nhắn được xử lý. Điều này lý tưởng cho các nhà phát triển xây dựng tích hợp tùy chỉnh, hệ thống ghi log hoặc quy trình tự động hóa.
Khi tin nhắn đến, Forward SMS gửi POST request đến endpoint của bạn với JSON payload có cấu trúc chứa nội dung tin nhắn, thông tin người gửi và metadata.
Tại sao nên sử dụng Webhooks
Webhooks cung cấp sự linh hoạt mà các tích hợp sẵn có không thể sánh được:
- Tự động hóa tùy chỉnh: Kích hoạt bất kỳ quy trình nào khi bạn nhận SMS - cập nhật cơ sở dữ liệu, gửi thông báo, chạy script hoặc tích hợp với bất kỳ dịch vụ nào
- Ghi log dữ liệu: Lưu trữ tất cả tin nhắn đến trong cơ sở dữ liệu của riêng bạn cho mục đích tuân thủ, phân tích hoặc sao lưu
- Định tuyến đa dịch vụ: Xử lý tin nhắn bằng logic của riêng bạn để định tuyến chúng đến các đích khác nhau dựa trên nội dung hoặc người gửi
- Công cụ nội bộ: Xây dựng các tính năng hỗ trợ SMS vào bảng điều khiển và công cụ nội bộ của bạn
- Tích hợp IoT: Kết nối cảnh báo SMS với hệ thống IoT, tự động hóa nhà hoặc cơ sở hạ tầng giám sát của bạn
Định dạng Webhook Payload
Khi tin nhắn được chuyển tiếp, endpoint của bạn nhận POST request với JSON payload sau:
{
"timestamp": "2025-01-31T14:30:00Z",
"content": "Your verification code is 123456",
"sender": "+1234567890",
"contact": "Bank of Example"
}
Các trường Payload
| Trường | Kiểu | Mô tả |
|-------|------|-------------|
| timestamp | string | Timestamp định dạng ISO 8601 khi tin nhắn được chuyển tiếp |
| content | string | Nội dung tin nhắn văn bản |
| sender | string | Số điện thoại của người gửi (nếu có) |
| contact | string | Tên liên hệ từ sổ địa chỉ của bạn (nếu khớp) |
Thiết lập Webhook Forwarding
Bước 1: Tải Forward SMS
Tải Forward SMS từ App Store.
Bước 2: Tạo đích Webhook
Mở ứng dụng, nhấn "Add Destination" và chọn "Webhook". Nhập URL endpoint của bạn. URL phải là HTTPS để đảm bảo an toàn.
Bước 3: Kiểm tra Endpoint của bạn
Sử dụng nút "Send test message" để xác minh endpoint của bạn nhận webhook chính xác. Kiểm tra log máy chủ để xác nhận payload đã đến.
Bước 4: Thiết lập Shortcuts Automation
Làm theo hướng dẫn thiết lập Shortcuts để tạo automation kích hoạt chuyển tiếp tin nhắn.
Ví dụ triển khai
Dưới đây là các ví dụ xử lý webhook trong nhiều ngôn ngữ:
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
Các cân nhắc về bảo mật
Sử dụng HTTPS
Luôn sử dụng HTTPS endpoint để mã hóa webhook payload trong quá trình truyền tải. Forward SMS yêu cầu HTTPS cho các URL webhook.
Xử lý lỗi một cách nhẹ nhàng
Endpoint của bạn nên trả về mã trạng thái 2xx để xác nhận đã nhận. Nếu Forward SMS nhận được phản hồi lỗi, nó sẽ ghi log thất bại.
Khắc phục sự cố
Webhook không nhận được tin nhắn
- Kiểm tra URL: Đảm bảo URL endpoint của bạn chính xác và có thể truy cập được từ internet
- Xác minh HTTPS: URL phải sử dụng HTTPS, không phải HTTP
- Kiểm tra quy tắc firewall: Máy chủ của bạn phải chấp nhận POST request đến
- Kiểm tra endpoint: Sử dụng nút kiểm tra trong ứng dụng để xác minh kết nối
Tin nhắn đến chậm
- Kiểm tra Shortcuts automation: Đảm bảo automation chạy mà không cần xác nhận
- Background App Refresh: Bật tính năng này cho Forward SMS trong Cài đặt iOS
- Vấn đề mạng: Cả iPhone và máy chủ của bạn đều cần kết nối internet ổn định
Payload không parse được
- Content-Type: Request sử dụng
Content-Type: application/json - Parse JSON: Đảm bảo máy chủ của bạn parse body JSON chính xác
- Mã hóa ký tự: Tin nhắn được mã hóa UTF-8
Câu hỏi thường gặp
Tôi có thể chuyển tiếp đến nhiều webhook endpoint không?
Có, tạo nhiều đích Webhook trong Forward SMS. Mỗi đích có thể có URL endpoint khác nhau và tất cả sẽ nhận được tin nhắn được chuyển tiếp.
Điều gì xảy ra nếu endpoint của tôi không hoạt động?
Nếu endpoint của bạn trả về lỗi hoặc không thể truy cập được, việc chuyển tiếp tin nhắn sẽ thất bại. Ứng dụng ghi log các thất bại này để debug. Cân nhắc triển khai hệ thống dự phòng hoặc giám sát.
Có giới hạn tốc độ trên webhooks không?
Không có giới hạn tốc độ nhân tạo từ Forward SMS. Tin nhắn được chuyển tiếp nhanh chóng khi chúng đến và endpoint của bạn có thể xử lý chúng.
Tôi có thể lọc tin nhắn nào được chuyển tiếp không?
Hiện tại, tất cả tin nhắn kích hoạt Shortcuts automation đều được chuyển tiếp. Bạn có thể triển khai logic lọc trong webhook endpoint của bạn để bỏ qua các tin nhắn không mong muốn.
Tôi có thể sử dụng HTTP thay vì HTTPS không?
Không, vì lý do bảo mật Forward SMS yêu cầu HTTPS endpoint. Điều này đảm bảo dữ liệu tin nhắn của bạn được mã hóa trong quá trình truyền tải.