Как пересылать SMS на webhook API endpoint?

Гайд 5 мин чтения
Скопировать ссылку Поделиться

Быстрый ответ: 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. Это гарантирует, что ваши данные сообщений зашифрованы при передаче.

Иконка Forward SMS

Forward SMS

Автоматически пересылайте SMS в Email, Slack, Teams и Discord

Скачать в App Store