W kreatorze procesów biznesowych Bitrix24 jest akcja „Kod PHP", która wykonuje dowolny kod wewnątrz procesu. Dostępna jest tylko w wersji pudełkowej — w chmurowym Bitrix24 takiej akcji nie ma na żadnym planie taryfowym. Przy tym typowe zadania, dla których dodaje się PHP do procesu — zapytanie do zewnętrznego API, rozbiór odpowiedzi, wydobycie z tekstu, warunek złożony — w chmurze składa się z gotowych robotów. Omówimy, gdzie przebiega granica i czym zastępuje się każdy scenariusz.

Gdzie dostępna jest akcja „Kod PHP" i dlaczego nie ma jej w chmurze?

„Kod PHP" to akcja edycji pudełkowej: wewnątrz szablonu pisze się dowolny kod, który wykonuje się na serwerze portalu z dostępem do API jądra. W chmurze portal działa na wspólnej infrastrukturze Bitrix24, a wykonywanie kodu użytkownika jest tam zamknięte — to ograniczenie architektoniczne, a nie kwestia planu taryfowego ani ukrytego ustawienia. Dlatego instrukcje z forów „wklej ten PHP do procesu biznesowego" mają zastosowanie tylko do wersji pudełkowej. Jeśli przyjrzeć się, co dokładnie robi kod w takich szablonach, prawie zawsze jest to jedno z czterech: sięgnąć do zewnętrznego systemu, rozebrać jego odpowiedź, wyciągnąć kawałek z ciągu znaków, podjąć decyzję na podstawie kilku warunków. Każdy klaster w chmurze zamyka osobny robot — dalej po jednym na scenariusz.

Jak sięgnąć do zewnętrznego API bez PHP?

Robot „Zapytanie HTTP GET/POST" wykonuje zapytanie prosto z procesu biznesowego: metody GET, POST, PUT, PATCH, DELETE i HEAD, dowolne ciało, nagłówki w formacie JSON — na przykład Authorization dla tokenu — limit czasu od 1 do 60 sekund. Zwraca ciało odpowiedzi, kod statusu HTTP i znacznik powodzenia Y/N (kod 2xx). Przekierowania sprawdza się na każdym kroku, odwołania do wewnętrznych adresów sieci są blokowane, ciało odpowiedzi ograniczone do 1 MB; robot dostępny jest na płatnych planach taryfowych Bitrix24. To wystarcza na integracje poziomu „przekazać dane deala do systemu księgowego i odebrać status zamówienia". Odbiór danych w drugą stronę, z zewnątrz do portalu — przez webhooki.

Jak rozebrać odpowiedź API bez json_decode?

Odpowiedź zewnętrznego systemu prawie zawsze to JSON, a w pudełkowym PHP dalej szła para linii z json_decode. W chmurze to samo robi robot „Wydobądź wartość z JSON po ścieżce": przyjmuje ciąg JSON i ścieżkę przez kropkę — data.user.email, items.0.name — zwraca wartość ciągiem znaków, obiekty i tablice jako JSON do dalszego rozbioru, plus znacznik „Ścieżka znaleziona" (Y/N). Jeśli JSON jest niepoprawny lub ścieżki nie ma, robot zwraca N — po nim proces kieruje błąd do osobnej gałęzi, zamiast zapisywać pustkę do pola deala. Połączenie „zapytanie HTTP → wydobądź wartość → zapisz do pola" zamyka większość scenariuszy integracyjnych, które wcześniej wymagały kodu.

Jak wyciągnąć dane z tekstu bez preg_match?

Druga klasyka PHP w procesach — wyrażenia regularne: wyciągnąć numer zamówienia z tematu wiadomości, znaleźć linki w komentarzu, sprawdzić format artykułu. Robot „Wydobądź wyrażeniem regularnym" stosuje wzorzec do ciągu źródłowego: wzorzec podaje się bez ograniczników, cyrylica i unikod są obsługiwane poprawnie, numer grupy przechwytującej pozwala zwrócić nie całe dopasowanie, lecz konkretną część — na przykład wartość z nawiasów. Zwraca pierwsze dopasowanie, listę wszystkich dopasowań i znacznik „Znaleziono" (Y/N). Typowy przypadek: lead utworzony z wiadomości „Zamówienie ORD-12345: pytanie o dostawę" — wzorzec ORD-\d+ wydobywa numer, a proces znajduje powiązany deal.

Jak zastąpić if z kilkoma warunkami?

Wbudowany „Warunek" kreatora porównuje wartości, ale kombinacja trzech-czterech sprawdzeń zamienia szablon w drabinę zagnieżdżonych gałęzi — dokładnie to, co w wersji pudełkowej chowano w trzy linie kodu. Robot „Złożony warunek (AND / OR / NOT)" składa sprawdzenie w jeden krok: do czterech par „wartość — operator — wartość" z logiką AND lub OR; wśród operatorów — równość, porównanie liczb, contains, is_empty. Dla dowolnego zagnieżdżenia jest tryb JSON z grupami and, or i not. Na wyjściu jeden znacznik Y/N, po którym proces rozgałęzia się zwykłym warunkiem — logika czyta się w kreatorze, a nie w kodzie, który rozumiał tylko autor.

Kiedy bez wersji pudełkowej jednak się nie obejdzie?

Uczciwa granica: roboty pokrywają scenariusze integracyjne i logiczne, ale nie wszystko. Jeśli kod musi pracować z systemem plików serwera, zdarzeniami jądra lub własnymi modułami — to wersja pudełkowa i programista. Jeśli zaś PHP był potrzebny do „zapytaj, rozbierz, zdecyduj" — portal chmurowy zamyka to łańcuchem dwóch-czterech robotów, który przeczyta i poprawi każdy administrator. Zacząć warto od inwentaryzacji: które kroki obecnych regulaminów opierają się o brak kodu — i złożyć je z gotowych akcji, jak opisano w przeglądzie procesów biznesowych.

Podsumowanie

„Kod PHP" — tylko wersja pudełkowa; w chmurze dowolny kod się nie wykonuje. Zamienniki według scenariuszy: zapytanie do API — „Zapytanie HTTP GET/POST", rozbiór odpowiedzi — „Wydobądź wartość z JSON po ścieżce", tekst — „Wydobądź wyrażeniem regularnym", sprawdzenia złożone — „Złożony warunek". Wszystkie cztery są w katalogu Roboteki: darmowa instalacja z Bitrix24.Market, działają i w chmurze, i w wersji pudełkowej. Brak potrzebnej akcji — opisz zadanie, zrobimy robota za darmo.