Як пересилати SMS на webhook API endpoint?
Швидка відповідь: Forward SMS може надсилати ваші текстові повідомлення на будь-який HTTP endpoint як JSON webhook. Створіть призначення Webhook у додатку, введіть URL вашого endpoint та налаштуйте автоматизацію Shortcuts. Ваш endpoint отримає POST запит із вмістом повідомлення, відправником та часовою міткою.
Що таке пересилання SMS через webhook?
Пересилання SMS через webhook автоматично надсилає ваші текстові повідомлення на будь-який HTTP endpoint, який ви контролюєте. На відміну від інтеграцій, специфічних для платформ (Slack, Discord, Teams), webhooks дають вам повний контроль над обробкою повідомлень. Це ідеально підходить для розробників, які створюють власні інтеграції, системи логування або автоматизовані робочі процеси.
Коли надходить повідомлення, Forward SMS надсилає POST запит на ваш endpoint зі структурованим JSON payload, що містить вміст повідомлення, інформацію про відправника та метадані.
Навіщо використовувати webhooks
Webhooks пропонують гнучкість, яку готові інтеграції не можуть забезпечити:
- Власна автоматизація: Запускайте будь-який робочий процес при отриманні SMS — оновлюйте бази даних, надсилайте сповіщення, виконуйте скрипти або інтегруйтеся з будь-яким сервісом
- Логування даних: Зберігайте всі вхідні повідомлення у власній базі даних для відповідності вимогам, аналітики або резервного копіювання
- Маршрутизація на кілька сервісів: Обробляйте повідомлення за допомогою власної логіки для маршрутизації на різні призначення залежно від вмісту або відправника
- Внутрішні інструменти: Створюйте функції на основі SMS у своїх внутрішніх дашбордах та інструментах
- IoT інтеграція: Підключайте SMS сповіщення до ваших IoT систем, домашньої автоматизації або інфраструктури моніторингу
Формат webhook payload
Коли повідомлення пересилається, ваш endpoint отримує POST запит з наступним JSON payload:
{
"timestamp": "2025-01-31T14:30:00Z",
"content": "Your verification code is 123456",
"sender": "+1234567890",
"contact": "Bank of Example"
}
Поля payload
| Поле | Тип | Опис |
|------|-----|------|
| timestamp | string | Часова мітка у форматі ISO 8601, коли повідомлення було переслано |
| content | string | Вміст текстового повідомлення |
| sender | string | Номер телефону відправника (якщо доступний) |
| contact | string | Ім'я контакту з вашої адресної книги (якщо знайдено) |
Налаштування пересилання через webhook
Крок 1: Завантажте Forward SMS
Завантажте Forward SMS з App Store.
Крок 2: Створіть призначення Webhook
Відкрийте додаток, натисніть "Додати призначення" та виберіть "Webhook". Введіть URL вашого endpoint. URL повинен бути HTTPS для безпеки.
Крок 3: Протестуйте ваш endpoint
Використовуйте кнопку "Надіслати тестове повідомлення", щоб переконатися, що ваш endpoint правильно отримує webhook. Перевірте логи сервера, щоб підтвердити отримання payload.
Крок 4: Налаштуйте автоматизацію Shortcuts
Дотримуйтесь нашого посібника з налаштування Shortcuts, щоб створити автоматизацію, яка запускає пересилання повідомлень.
Приклади реалізації
Ось приклади обробки 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 endpoints для шифрування webhook payload при передачі. Forward SMS вимагає HTTPS для webhook URL.
Обробляйте помилки коректно
Ваш endpoint повинен повертати код статусу 2xx для підтвердження отримання. Якщо Forward SMS отримує відповідь з помилкою, він записує збій у лог.
Усунення неполадок
Webhook не отримує повідомлення
- Перевірте URL: Переконайтеся, що URL вашого endpoint правильний та доступний з інтернету
- Перевірте HTTPS: URL повинен використовувати HTTPS, а не HTTP
- Перевірте правила брандмауера: Ваш сервер повинен приймати вхідні POST запити
- Протестуйте endpoint: Використовуйте тестову кнопку в додатку для перевірки підключення
Повідомлення надходять повільно
- Перевірте автоматизацію Shortcuts: Переконайтеся, що автоматизація виконується без запиту підтвердження
- Оновлення додатків у фоні: Увімкніть цю функцію для Forward SMS у налаштуваннях iOS
- Проблеми з мережею: І ваш iPhone, і сервер повинні мати стабільне інтернет-з'єднання
Payload не парситься
- Content-Type: Запит використовує
Content-Type: application/json - Парсинг JSON: Переконайтеся, що ваш сервер правильно парсить JSON тіло
- Кодування символів: Повідомлення кодуються в UTF-8
Часті запитання
Чи можна пересилати на кілька webhook endpoints?
Так, створіть кілька призначень Webhook у Forward SMS. Кожне призначення може мати свій URL endpoint, і всі вони будуть отримувати пересилані повідомлення.
Що станеться, якщо мій endpoint недоступний?
Якщо ваш endpoint повертає помилку або недоступний, пересилання повідомлення не вдасться. Додаток записує ці збої для налагодження. Розгляньте можливість реалізації резервної системи або моніторингу.
Чи є обмеження швидкості для webhooks?
Forward SMS не має штучних обмежень швидкості. Повідомлення пересилаються так швидко, як вони надходять і як швидко ваш endpoint може їх обробити.
Чи можна фільтрувати, які повідомлення пересилаються?
Наразі всі повідомлення, які запускають автоматизацію Shortcuts, пересилаються. Ви можете реалізувати логіку фільтрації у вашому webhook endpoint для ігнорування небажаних повідомлень.
Чи можна використовувати HTTP замість HTTPS?
Ні, з міркувань безпеки Forward SMS вимагає HTTPS endpoints. Це гарантує, що ваші дані повідомлень зашифровані при передачі.