Automatyzacja wysyłania SMS za pomocą n8n za pośrednictwem API OVHcloud
Wprowadzenie
Ten przewodnik wyjaśnia, jak zintegrować API SMS OVHcloud z n8n, aby automatycznie wysyłać SMS z poziomu swoich workflowów. Nauczysz się, jak skonfigurować podpisany wywołania HTTP za pomocą API OVHcloud, aby uruchomić wysyłkę wiadomości.
Dowiedz się, jak wysyłać SMS z n8n, korzystając z API OVHcloud.
Wymagania początkowe
- Posiadanie konta SMS OVHcloud oraz walidnego nadawcy SMS.
- Posiadanie VPS OVHcloud, serwera lub lokalnego komputera z zainstalowanym i dostępnych n8n.
W praktyce
Jeśli jeszcze nie zainstalowałeś n8n na swoim VPS, postępuj zgodnie z instrukcjami w naszym przewodniku "Instalacja n8n na VPS OVHcloud".
Krok 1 – Wygenerowanie identyfikatorów API OVHcloud
Przed wysłaniem SMS za pomocą API OVHcloud musisz mieć do dyspozycji trzy następujące identyfikatory:
- Application key
- Application secret
- Consumer key
Aby tego dokonać, odwiedź sekcję Zaawansowane wykorzystanie: łączenie API OVHcloud z aplikacją w naszym przewodniku "Pierwsze kroki z API OVHcloud", a następnie skopiuj i zapisz trzy identyfikatory Application key, Application secret i Consumer key.
Krok 2 — Tworzenie workflowu i węzłów
Zaloguj się do swojej interfejsu n8n i kliknij przycisk Create Workflow.
Utwórz następujące węzły (puste na razie):
Set - Credentials: typu Edit Fields (Set).Set - Request Details: typu Edit Fields (Set).Merge: typu Merge.Sign - Generate Signature: typu Code.SMS - Send: typu HTTP Request.
Aby uzyskać więcej informacji na temat tworzenia węzłów, odwiedź oficjalną dokumentację n8n.
Połącz węzły w tej kolejności:

Węzeł Merge otrzymuje wyjścia z dwóch węzłów Set - Credentials i Set - Request Details, a następnie zasila Sign - Generate Signature, który zasila SMS - Send.
Krok 3 — Konfiguracja węzła Set – Credentials
Dodaj następujące parametry do swojego węzła Set - Credentials:
- Mode:
Manual Mapping.
| Nazwa | Artość |
|---|---|
| applicationKey | "TWÓJ_APPLICATION_KEY" |
| consumerKey | "TWÓJ_CONSUMER_KEY" |
| serviceName | "TWÓJ_KONTA_SMS_OVHCLOUD" (np. "sms-ab12345-1") |
| applicationSecret | "TWÓJ_APPLICATION_SECRET" |
| timestamp | {{ Math.floor(Date.now() /1000) }} |
Krok 4 — Konfiguracja węzła Set – Request Details
Skonfiguruj węzeł Set - Request Details:
- Mode:
Manual Mapping. - Dodaj pole o nazwie
bodytypuObjectz poniższym zawartością (przykład minimalny).
- Numer odbiorcy (
receivers) musi być w formacie międzynarodowym i zaczynać się np. od "+336" lub "+337" dla francuskiego numeru komórkowego. - Nadawca musi być zdefiniowany w Twoim koncie OVHcloud. Aby przeprowadzić test bez deklaracji nadawcy i używania krótkiego numeru, zastąp
"sender": "Your_sender"przez"senderForResponse": true.
Krok 5 — Konfiguracja węzła Merge
Skonfiguruj węzeł Merge:
- Mode:
Combine. - Combine by:
Position. - Number of Inputs:
2.
Połącz Set - Credentials w Input 1 i Set - Request Details w Input 2.
W wyjściu (output) powinieneś mieć na tym samym poziomie: applicationKey, applicationSecret, consumerKey, serviceName, timestamp i body.
Krok 6 — Konfiguracja węzła Sign – Generate Signature
Skonfiguruj węzeł Sign - Generate Signature:
- Mode:
Run once for each item. - Language:
JavaScript.
Wklej poniższy kod:
Nie używaj HMAC tutaj (OVHcloud oczekuje "$1$" + SHA1(AppSecret + … + Timestamp)). Parametr bodyString jest dokładnie JSON, który zostanie wysłany później (bez dodatkowego stringify). Podpisana URL musi być ściśle identyczna jak URL wysyłki (taki sam host, bez dodatkowego / na końcu).
Krok 7 — Konfiguracja węzła SMS - Send
Skonfiguruj węzeł SMS - Send:
- Method:
POST. - URL:
{{$json.url}}. - Authentication:
None. - Send Headers:
ON. - Specify Headers:
Using fields below.
Dodaj następujące parametry nagłówka:
| Nazwa | Wartość |
|---|---|
| Content-Type | application/json |
| X-Ovh-Application | {{$json.applicationKey}} |
| X-Ovh-Consumer | {{$json.consumerKey}} |
| X-Ovh-Timestamp | {{$json.timestamp}} |
| X-Ovh-Signature | {{$json.signature}} |
Włącz Send Body i dodaj następujące parametry ciała:
| Nazwa | Wartość |
|---|---|
| Body Content Type | Raw |
| Content Type | application/json |
| Body | {{$json.bodyString}} |
Testowanie swojego workflowu
Uruchom swój workflow. Następujące kroki zostaną wykonane:
- Set - Credentials: udostępnia applicationKey, consumerKey, serviceName (i ewentualnie applicationSecret, jeśli nie został zewnętrzny).
- Set - Request Details: przygotowuje obiekt body zawierający treść SMS.
- Merge (Combine/Position): łączy dwa wyjścia z poprzednich węzłów.
- Sign - Generate Signature (Code): oblicza bodyString, timestamp, signature (SHA-1 czysty JavaScript) i URL wywołania.
- SMS - Send (HTTP Request): wysyła POST do URL z ciałem {{$json.bodyString}} i nagłówkami X-Ovh-*.
Wiadomość zostaje następnie przekazana przez API OVHcloud do odbiorcy.
Częste błędy
Invalid_signature (400)
- Podpisana URL różni się od wysłanej URL (inny host, dodatkowy
/na końcu). - Podpisane ciało różni się od wysłanego ciała (ponowne
stringify, spacje, kolejność itp.). - Zegar lokalny jest zbyt odstający. Zamiast tego użyj godziny serwera OVHcloud (patrz sekcja Industrializacja i bezpieczeństwo).
SMS sender ... does not exist (403)
Nadawca sender nie jest zadeklarowany/zweryfikowany w Twoim Panelu klienta OVHcloud. Przetestuj z "senderForResponse": true lub zweryfikuj swojego nadawcę.
Bad Request
- Sprawdź w każdym węźle nazwę i wartość swoich parametrów.
- Upewnij się, że nagłówki i ciała są pełne.
- Sprawdź, czy URL węzła
SMS - Sendspełnia następujący format:https://eu.api.ovh.com/1.0/sms/sms-ab12345-1/jobs
Błędy węzła Code
- Nie używaj
require('crypto')w n8n, ale zamiast tego użyj czystego JavaScript SHA-1 powyżej. - Użyj trybu po jednym elemencie i unikaj wywoływania
$input.all()w swoim kodzie.
Industrializacja i bezpieczeństwo
Jeśli chcesz przemysłowo wykorzystać swój workflow i zwiększyć jego bezpieczeństwo, zastosuj poniższe wskazówki.
Godzina serwera OVHcloud
Dodaj węzeł typu HTTP Request przed podpisem:
GET https://eu.api.ovh.com/1.0/auth/time- Pobierz wartość i zastąp
timestamptą dokładną wartością.
Nie przesyłaj applicationSecret
- Zapisz go jako zmienną środowiskową (np.
OVH_APP_SECRET) i odczytaj w węźle typu Code (Sign - Generate Signature) za pomocą$env.OVH_APP_SECRET, lub za pomocą funkcji Secrets/Credentials w n8n. - W przeciwnym razie nigdy nie zwracaj sekretu w wyjściu węzła.
Zarządzanie znakami
Jeśli wiadomość zawiera emoji/akcenty nie-GSM, użyj "coding": "ucs2".
Sprawdź również
Dołącz do grona naszych użytkowników.