Jak przekazywać SMS-y do punktu końcowego webhook API?
Szybka odpowiedź: Forward SMS może wysyłać Twoje wiadomości tekstowe do dowolnego punktu końcowego HTTP jako webhook JSON. Utwórz miejsce docelowe Webhook w aplikacji, wprowadź adres URL punktu końcowego i skonfiguruj automatyzację Shortcuts. Twój punkt końcowy otrzyma żądanie POST z treścią wiadomości, nadawcą i znacznikiem czasu.
Czym jest Przekazywanie SMS przez Webhook?
Przekazywanie SMS przez webhook automatycznie wysyła Twoje wiadomości tekstowe do dowolnego kontrolowanego przez Ciebie punktu końcowego HTTP. W przeciwieństwie do integracji specyficznych dla platform (Slack, Discord, Teams), webhooki dają Ci pełną kontrolę nad sposobem przetwarzania wiadomości. Jest to idealne rozwiązanie dla programistów tworzących niestandardowe integracje, systemy logowania lub przepływy automatyzacji.
Gdy wiadomość przychodzi, Forward SMS wysyła żądanie POST do Twojego punktu końcowego ze strukturalnym ładunkiem JSON zawierającym treść wiadomości, informacje o nadawcy i metadane.
Dlaczego Warto Używać Webhooków
Webhooki oferują elastyczność, której gotowe integracje nie mogą zapewnić:
- Niestandardowa automatyzacja: Uruchamiaj dowolny przepływ pracy po otrzymaniu SMS-a - aktualizuj bazy danych, wysyłaj powiadomienia, uruchamiaj skrypty lub integruj z dowolną usługą
- Rejestrowanie danych: Przechowuj wszystkie przychodzące wiadomości we własnej bazie danych w celach zgodności, analityki lub kopii zapasowej
- Routing wielousługowy: Przetwarzaj wiadomości własną logiką, aby kierować je do różnych miejsc docelowych na podstawie treści lub nadawcy
- Narzędzia wewnętrzne: Buduj funkcje oparte na SMS-ach w swoich wewnętrznych pulpitach nawigacyjnych i narzędziach
- Integracja IoT: Połącz alerty SMS z systemami IoT, automatyką domową lub infrastrukturą monitoringu
Format Payload Webhooka
Gdy wiadomość jest przekazywana, Twój punkt końcowy otrzymuje żądanie POST z następującym ładunkiem JSON:
{
"timestamp": "2025-01-31T14:30:00Z",
"content": "Your verification code is 123456",
"sender": "+1234567890",
"contact": "Bank of Example"
}
Pola Payload
| Pole | Typ | Opis |
|------|-----|------|
| timestamp | string | Znacznik czasu w formacie ISO 8601 określający moment przekazania wiadomości |
| content | string | Treść wiadomości tekstowej |
| sender | string | Numer telefonu nadawcy (jeśli dostępny) |
| contact | string | Nazwa kontaktu z Twojej książki adresowej (jeśli dopasowano) |
Konfiguracja Przekazywania przez Webhook
Krok 1: Pobierz Forward SMS
Pobierz Forward SMS z App Store.
Krok 2: Utwórz Miejsce Docelowe Webhook
Otwórz aplikację, dotknij "Dodaj miejsce docelowe" i wybierz "Webhook". Wprowadź adres URL punktu końcowego. Adres URL musi używać HTTPS ze względów bezpieczeństwa.
Krok 3: Przetestuj Swój Punkt Końcowy
Użyj przycisku "Wyślij wiadomość testową", aby zweryfikować, czy Twój punkt końcowy poprawnie odbiera webhook. Sprawdź logi serwera, aby potwierdzić, że payload dotarł.
Krok 4: Skonfiguruj Automatyzację Shortcuts
Postępuj zgodnie z naszym przewodnikiem konfiguracji Shortcuts, aby utworzyć automatyzację uruchamiającą przekazywanie wiadomości.
Przykłady Implementacji
Oto przykłady obsługi webhooka w różnych językach:
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
Zagadnienia Bezpieczeństwa
Używaj HTTPS
Zawsze używaj punktów końcowych HTTPS, aby szyfrować payload webhooka podczas transmisji. Forward SMS wymaga HTTPS dla adresów URL webhooków.
Obsługuj Błędy Elegancko
Twój punkt końcowy powinien zwracać kod statusu 2xx, aby potwierdzić odbiór. Jeśli Forward SMS otrzyma odpowiedź z błędem, zapisze niepowodzenie w logach.
Rozwiązywanie Problemów
Webhook Nie Odbiera Wiadomości
- Sprawdź URL: Upewnij się, że adres URL punktu końcowego jest poprawny i dostępny z internetu
- Zweryfikuj HTTPS: URL musi używać HTTPS, nie HTTP
- Sprawdź reguły zapory: Twój serwer musi akceptować przychodzące żądania POST
- Przetestuj punkt końcowy: Użyj przycisku testowego w aplikacji, aby zweryfikować łączność
Wiadomości Docierają Powoli
- Sprawdź automatyzację Shortcuts: Upewnij się, że automatyzacja działa bez wymagania potwierdzenia
- Odświeżanie aplikacji w tle: Włącz to dla Forward SMS w ustawieniach iOS
- Problemy z siecią: Zarówno Twój iPhone, jak i serwer potrzebują stabilnych połączeń internetowych
Payload Nie Jest Parsowany
- Content-Type: Żądanie używa
Content-Type: application/json - Parsowanie JSON: Upewnij się, że Twój serwer poprawnie parsuje ciało JSON
- Kodowanie znaków: Wiadomości są zakodowane w UTF-8
Często Zadawane Pytania
Czy mogę przekazywać do wielu punktów końcowych webhook?
Tak, utwórz wiele miejsc docelowych Webhook w Forward SMS. Każde miejsce docelowe może mieć inny adres URL punktu końcowego, a wszystkie będą otrzymywać przekazywane wiadomości.
Co się stanie, jeśli mój punkt końcowy jest niedostępny?
Jeśli Twój punkt końcowy zwróci błąd lub jest nieosiągalny, przekazywanie wiadomości nie powiedzie się. Aplikacja rejestruje te niepowodzenia do debugowania. Rozważ wdrożenie mechanizmu awaryjnego lub systemu monitoringu.
Czy istnieje limit szybkości dla webhooków?
Nie ma sztucznego limitu szybkości ze strony Forward SMS. Wiadomości są przekazywane tak szybko, jak przychodzą i Twój punkt końcowy może je przetwarzać.
Czy mogę filtrować, które wiadomości są przekazywane?
Obecnie wszystkie wiadomości, które uruchamiają automatyzację Shortcuts, są przekazywane. Możesz zaimplementować logikę filtrowania w swoim punkcie końcowym webhook, aby ignorować niechciane wiadomości.
Czy mogę używać HTTP zamiast HTTPS?
Nie, ze względów bezpieczeństwa Forward SMS wymaga punktów końcowych HTTPS. Zapewnia to, że Twoje dane wiadomości są szyfrowane podczas transmisji.