Cách chuyển tiếp SMS đến webhook API endpoint?

Huong dan 7 phut doc
Sao chep Lien ket Chia se

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.

Bieu tuong Forward SMS

Forward SMS

Tu dong chuyen tiep tin nhan van ban den Email, Slack, Teams va Discord

Tai tu App Store