Integracje formularzy z wieloma serwisami zewnętrznymi
Klient
Enea
Branża
Energetyka
Technologie
Główna korzyść
Automatyzacja przepływu formularzy między serwisami

Z jakim wyzwaniem mierzył się klient?
Przed wdrożeniem klient nie posiadał elastycznego mechanizmu do integracji formularzy z serwisami zewnętrznymi. Sytuację komplikował fakt, że każdy z systemów miał inną specyfikację API i własne wymagania co do struktury pól. Wynikało z tego kilka problemów:
- brak możliwości dynamicznego mapowania danych (w tym opcji z pól wielokrotnego wyboru),
- wysoki koszt utrzymania – nowa integracja wymagała stworzenia customowego modułu dla każdego formularza,
- brak odpowiedniej obsługi błędów z zewnętrznych API, co stwarzało ryzyko utraty zapytań i negatywnie wpływało na UX.
Klient potrzebował globalnego rozwiązania, które wyeliminuje sztywne kodowanie i umożliwi szybką integrację kolejnych serwisów bez konieczności pisania customowych modułów.
Rozwiązanie
Stworzyliśmy mechanizm, który automatycznie rozpoznaje konfigurowany formularz. Jeśli administrator przypisywał już do niego zewnętrzne serwisy, system od razu wczytuje zapisane ustawienia. Jeśli łączy go po raz pierwszy, wyświetla czysty panel.
Rozwiązanie jest bardzo intuicyjne – pozwala wybierać z listy docelowe serwisy, do których ma trafić zapytanie (może wskazać kilka naraz). Następnie formularz wczytuje pola wymagane przez dane API. Każde z nich wyświetla się jako lista rozwijana, z której administrator może wybrać odpowiadające mu pole z formularza. Dzięki takiemu rozwiązaniu integracje nie są przypisane do konkretnego formularza, a klient może wybrać, który serwis zewnętrzny zintegrować.
Zabezpieczyliśmy również system przed skutkami awarii po stronie zewnętrznych API i stworzyliśmy rozwiązanie do logowania żądań i odpowiedzi. Oznacza to, że jeśli po wysłaniu formularza nastąpił błąd, odpowiedź i tak jest zapisywana w bazie danych Drupala, a użytkownik zobaczy podziękowanie za wypełnienie formularza. Administrator ma wgląd w logi błędów i może jednym kliknięciem ręcznie ponowić wysyłkę danych.
Co zyskała Enea?
Klient może teraz samodzielnie zdecydować, który formularz zintegrować z danym serwisem zewnętrznym. Proces stał się skalowalny, a ryzyko utraty danych z powodu np. awarii API wyeliminowane. Rozwiązanie automatyzuje pracę i odciąża administratorów oraz zmniejsza koszty rozwoju i utrzymania – kolejne integracje wymagają jedynie rozszerzenia modułu, a nie pisanie nowego, indywidualnego kodu.

Kluczową decyzją było zaprojektowanie systemu integracji w taki sposób, żeby dodanie kolejnych serwisów nie było problematyczne. Dlatego oprogramowanie potraktowaliśmy jako wtyczkę, co pozwala na swobodne skalowanie modułu bez naruszania wcześniejszych integracji. Kiedy trzeba zintegrować formularz z nowym serwisem, wystarczy napisać nową wtyczkę.
Kiedy warto wdrożyć takie rozwiązanie w swoim projekcie?

Kiedy przesyłasz dane z wielu formularzy do systemów zewnętrznych o odmiennych specyfikacjach API.
Kiedy potrzebujesz systemu, który w razie awarii zewnętrznego API zachowa dane z formularza w bazie.
Potrzebujesz niestandardowej integracji z formularzami w Drupalu?