Twórz Własne Automatyzacje
3 godz. 14 min · Make · Biznes i Automatyzacje
Adam GospodarczykKorzystając z różnych narzędzi, na przykład do obsługi mailingu, masz do dyspozycji na ogół kilka wbudowanych integracji - przykładowo połączenie z kalendarzem czy bramką płatności. Wyobraź sobie, że takie narzędzie możesz połączyć praktycznie z dowolnym innym, nawet jeśli nie ma go na liście. To właśnie potencjał Make, które umożliwi takie automatyzacje.
Jeśli znasz Zapier, Make to podobna koncepcja, ale daje dużo bardziej zaawansowane możliwości, jest dużo tańsza (lub darmowa) a dodatkowo, ma naszym zdaniem bardziej przyjazny i czytelny interfejs zwłaszcza przy tworzeniu rozgałęzionych scenariuszy. Tworzenie automatyzacji z Make to czysta przyjemność i zdrowa porcja dopaminy!
Co najważniejsze, Make umożliwia tworzenie automatyzacji bez użycia ani jednej linii kodu! To jak programowanie 2.0, gdzie rezultaty widzisz i testujesz w prostym, wizualnym edytorze. To najłatwiejszy sposób aby zacząć przygodę z programowaniem i nowoczesnym podejściem do technologii no-code i low-code.
Mimo, że Make jest natywnym środowiskiem no-code, osoby, które nieco lepiej rozumieją zasady działania protokołu HTTP i API i mają podstawy programowania w JS, otrzymują zupełnie nowe możliwości tworzenia oprogramowania, w sposób wizualny i prostszy niż kiedykolwiek. Jeśli osoby początkujące z Make stają się programistami, programiści stają się superbohaterami!
Wyjątkowe w Make jest podejście do tworzenia automatyzacji wizualnie, gdzie bardzo czytelne jest całe flow scenariusza i to, jak przepływają w nim dane. Zaawansowane możliwości jak stosowanie filtrów czy funkcji sprawia, że w tak prostym interfejsie w zasadzie nie ma zadań niemożliwych!
Z dowolnego narzędzia możesz wysłać dane w postaci Webhooka do Make, które zostaną natychmiastowo odebrane. Następnie możesz łatwo przekazać je w dowolne miejsce i do dowolnego narzędzia - na przykład Airtable, z którego często korzystamy aby gromadzić dane, HubSpot'a, Asany czy wysłać powiadomienie SMS, e-mail, Slack. Całość zajmie Ci kilka minut.
Ten kurs jest przeznaczony dla każdej osoby, która chce pracować wydajniej i zatrudnić roboty (automatyzacje), które wykonają za nią powtarzalne zadania. Dzięki temu, zwiększysz efektywność swojej pracy oraz zostaniesz bohaterem automatyzacji w swojej firmie. Osoby, które przerobiły kurs HTTP i API, a także programiści, mogą wycisnąć z tego kursu jeszcze więcej, na dobre zmieniając swoje podejście do automatyzacji. Polecamy wcześniejsze przerobienie przynajmniej kursu HTTP i API, aby lepiej zrozumieć omawiane zagadnienia.
Cześć!
W tej i nadchodzących lekcjach pokażę Ci, w jaki sposób obsługiwać Integromat na nieco
bardziej zaawansowanym poziomie niż dotychczas.
Chodzi o to, że do tej pory wykorzystywaliśmy już automatyzację i
tworzyliśmy moduły, natomiast wiele z nich posiada opcje, które albo warto lepiej
zrozumieć, albo po prostu jeszcze o nich nie mówiliśmy.
Zaczniemy od prawdopodobnie
najważniejszego modułu Integromatu, czyli webhook'ów.
Mówię najważniejszego głównie z tego powodu, że wykorzystujemy je praktycznie
na każdym kroku i warto wiedzieć o nich wystarczająco dużo.
Przede wszystkim dodajemy sobie tutaj nowy webhook, nadając jego nazwę.
Do tej pory po prostu kupowaliśmy jego adres
natomiast nic więcej nie robiliśmy.
Jednocześnie jeżeli zapiszemy zmiany, a
następnie ponownie wczytamy moduł, to jak widzisz mamy tutaj przycisk umożliwiający
nam określenie struktury danych, która może zostać przesłana na ten webhook.
Oznacza to, że jeżeli wykorzystam insomnie do tego, aby przesłać zapytanie typu POST
zawierający jakiś obiekt JSON, no to wykorzystując ten przycisk mogę to zrobić testowo.
Dzięki temu dane zostaną tutaj wysłane i już po chwili.
Jeżeli przejdziemy do kolejnego modułu np.
Compose a string, czyli modułu, który umożliwia nam utworzenie ciągu znaków.
Jak widzisz mamy tutaj dostępne właściwości, które możemy wykorzystać.
Jednocześnie chciałbym zwrócić Twoją uwagę tutaj na fakt, że mamy do dyspozycji opcje
zaawansowane, które tak naprawdę nie są bardzo zaawansowane, ponieważ możemy tutaj
co najwyżej ograniczyć liczbę wyników, które będą przyjmowane jednorazowo.
Ale w dodatku jeżeli przyjrzymy się tutaj
opisowi, to widzimy, że jeżeli webhook zostanie uruchomiony w trybie odpowiadania
natychmiastowego, to oczywiście ta opcja nie będzie miała tutaj zastosowania.
Ma to jak najbardziej logiczny sens, ale na tym konfiguracja webhook'ów się nie kończy.
Mianowicie jeżeli przejdziemy do jego
edycji to zobaczymy, że mamy tutaj dostępne opcje zastrzeżenia określonych
adresów IP, które możemy podać po przecinku i w ten sposób ograniczymy
możliwość kontaktowania się z naszym webhook'iem.
Poza tym tutaj poniżej mamy również opcje
zaawansowane, które dają nam nieco większe możliwości niż te poprzednie.
Mianowicie możemy tutaj określić strukturę
danych, którą spodziewamy się otrzymać na nasz webhook.
I tutaj możemy skorzystać z edytora do
tego, aby ją zbudować lub też z generatora, co też bardzo Ci rekomenduję,
ponieważ jego wykorzystanie jest niesamowicie proste.
Wystarczy tutaj skopiować docelowy obiekt JSON a następnie zapisać zmiany.
Struktóra zostanie wygenerowana i mamy pewność, że nic nie zostanie pominięta,
ani też nie pomylimy się przy jej konfiguracji.
A w dodatku możemy tutaj zaznaczyć opcję strict.
Opcja strict mówi tutaj mniej więcej
tyle, że na dany webhook zostaną dopuszczone tylko dane o określonej strukturze.
Jeżeli pojawi się tutaj jakakolwiek inna właściwość lub inny rodzaj danych,
zapytanie nie zostanie przyjęte i aby Ci to udowodnić, zapiszemy sobie teraz
zmiany, a następnie przełączymy nasz webhook w tryb nasłuchiwania.
Jeżeli teraz wyśle zapytanie, to wszystko powinno wykonać się poprawnie.
I rzeczywiście mamy tutaj tego potwierdzenie.
A już w sytuacji gdybyśmy dodali tutaj np.
mój numer telefonu.
Oczywiście nie będziemy tutaj podawać mojego numeru telefonu.
No to można byłoby się tutaj spodziewać dwóch zachowań albo sytuacji, w której dodatkowe
dane zostaną pominięte, albo sytuacji, która faktycznie będzie miała miejsce.
Czyli jak widzisz zapytanie w ogóle nie zostało przyjęte, a dodatkowo otrzymaliśmy
informację zwrotną informującą nas o tym, co dokładnie tutaj poszło nie tak.
W tym przypadku pojawił się dodatkowy parametr, który nie był oczekiwany.
Jednak tutaj trzeba uważać na to, że jeżeli będziemy mieć sytuację, w której
nie dostarczymy pełnego zestawu danych, to zapytanie zostanie przyjęte i obsługa
ewentualnych brakujących danych będziemy musieli przygotować samodzielnie.
No ale załóżmy, że przywrócimy sobie te dane i
będziemy chcieli sprawić, aby wyświetlić przesłane imię w takim małym powitaniu.
Jednocześnie jeżeli przyjrzymy się jeszcze opcjom zaawansowanym, które dostępne są
przy konfiguracji webkook'a, to zobaczymy, że możemy do przechwytywania tych danych
dołączyć nagłówki zapytania, metodę jaką zostało to zapytanie wykonane oraz
dodatkowo zaznaczyć opcję, która sprawi, że nawet jeżeli na weebhook prześlemy
zapytanie zawierające obiekt JSON, to i tak zostanie on potraktowany jako string.
Szczerze mówiąc nie przychodzą mi do głowy
przypadki, w których mogłoby się okazać coś takiego przydatne.
Tak czy inaczej, jeżeli zapiszemy sobie teraz te
ustawienia, a następnie ponownie włączymy nasz scenariusz i wykonamy zapytanie, no
to jeżeli podejżymy sobie dane, które zostały wysłane, to oprócz danych z
obiektu JSON mamy tutaj również nagłówki, a dodatkowo również informacje
na temat metody, która została tutaj wykonana.
Coś takiego może nam posłużyć do tego, aby przygotować filtry,
o których nieco więcej będziemy mówić sobie w kolejnych lekcjach.
Natomiast do tej pory spotkaliśmy się już z sytuacjami, w której blokujemy wykonanie
scenariusza poprzez umieszczenie na łączeniu modułów tzw. filtra.
Załóżmy, że chcielibyśmy w jakiś sposób sprawdzić, czy użytkownik, który wykonuje
zapytanie rzeczywiście ma do tego odpowiednie uprawnienia.
Zatem dodaję tutaj filtr o nazwie Authorization,
aczkolwiek nazwa czy też etykieta jest tutaj całkowicie dowolna i zależy mi
na tym, aby sprawdzić czy z zapytaniem został przesłany nagłówek Authorization.
I teraz co ciekawe, coś takiego robiliśmy już w przypadku zapytań do API Key,
które wymagały przekazania jakiegoś klucza API.
Tutaj jednak ten klucz definiujemy sobie sami, ponieważ to my ustalamy jakie klucze
zostanie przesłany i jednocześnie jaki zostaje przyjmowany.
Oczywiście w tym miejscu warto zaznaczyć, aby ciąg znaków, który jest tutaj
przekazywany był jakimś skomplikowanym, wygenerowanym ciągiem znaków.
Przykładowo mogę wykorzystać tutaj
Alfreda, a konkretnie dostępne w nim rozszerzenie będące właśnie takim
generatorem losowych ciągów znaków czy też generatorem haseł.
Wywołujemy je z pomocą polecenia pw.
Gdzie jak widzisz, mogę po prostu podać, że chcę wygenerować hasło.
Natychmiast otrzymuję tutaj losowe ciągi znaków, które po prostu kopiuję, a
następnie wklejam zarówno do insomni oraz do naszego filtra.
Pytanie jednak, w jaki sposób odwołać się tutaj do odpowiedniego nagłówka?
Aby się tego dowiedzieć, musimy zwrócić
uwagę na strukturę danych, która zostaje tutaj dostarczona.
I tutaj jeszcze zanim do tego przejdziemy, to wykonam zapytanie ponownie, aby
przesłać ten nagłówek i upewnić się, że rzeczywiście zostaje on tutaj dostarczony.
Faktycznie mamy tutaj nagłówek authorization pisany z małej litery.
I to jest ważne, ponieważ mamy tutaj nieoczekiwaną transformację danych.
No i oczywiście wartość naszego klucza do webhook'a.
Aby odwołać się do tego konkretnego elementu, tak jak powiedziałem, musimy
zwrócić uwagę na strukturę danych, która została tutaj dostarczona.
W tej sytuacji mamy tutaj tablicę kolekcji czy też tablicę obiektów.
Ponieważ w Integromacie obiekty noszą nazwę kolekcji.
Jak wiemy, do tablicy możemy odwoływać się poprzez indeks, natomiast do
poszczególnych właściwości obiektu poprzez ich klucz.
Problem jednak tutaj polega na tym, że w
Integromacie nie możemy zrobić sobie czegoś takiego, że podamy sobie tutaj nazwę
indeksu, a następnie nazwę klucza, tylko musimy w tym celu wykorzystać metodę map.
I teraz skąd wiem, że akurat chodzi o mapowanie?
Ano stąd, że wiem, że mapowanie dotyczy
procesów wykorzystywania danych, które są przechowywane w jakiejś strukturze.
Takie dane możemy albo odczytywać, albo np. modyfikować.
Czyli ogólnie chodzi tutaj po prostu o ich wykorzystywanie.
W naszej sytuacji zadanie jest nieco
bardziej skomplikowane, ponieważ mamy tutaj zagnieżdżoną strukture danych.
Z tego względu musimy w pierwszej
kolejności przyjrzeć się temu, jak możemy wykorzystać metodę map.
Zatem jako pierwszy argument przekazujemy tutaj jakąś złożoną tablicę.
Następnie wskazujemy klucz, który chcemy uzyskać, a w dalszej kolejności
opcjonalnie przekazujemy klucz, który wykorzystamy do filtrowania danych.
No i oczywiście, aby takie filtrowanie było możliwe, musimy również przekazać
wartości, które zostaną wykorzystane w tym filtrowaniu.
Zatem w praktyce oznacza to mniej więcej
tyle, że jako pierwszy argument przekazujemy tutaj naszą tablicę
nagłówków, wewnątrz których jak wiesz znajdują się kolekcje danych.
Następnie interesuje nas to, aby wyciągnąć z nich wartość
oraz przefiltrować względem nazwę i jako wartość, którą wyszukujemy
przekazujemy nazwę authorization, przy czym pisaną z małej litery, bo jak już
zauważyliśmy, Inetrgromat zamienia wielkie litery na małe w przypadku nagłówków.
W efekcie wykonanie takiej funkcji powinno
nam zwrócić wartość nagłówka authorization i wynika to z faktu, że mapujemy tablicę
wyciągając z jej elementów właściwość value i zależy nam na pobraniu tylko tych
właściwości, które posiadają właściwość name ustawioną na authorization.
Czyli w efekcie otrzymamy tutaj wartość nagłówka authorization.
Jeżeli teraz uruchomimy sobie nasz
scenariusz, a następnie wykonamy zapytanie, to zobaczymy, że nasz filtr
zadziałał tutaj poprawnie, ponieważ nasze klucze się zgadzają, a w związku z tym, że
się zgadzają, nasz drugi moduł został tutaj wykonany.
Jeżeli jednak nasz klucz nie pasowałby do tego zdefiniowanego, no to jak się pewnie
domyślasz zapytanie teraz zostanie zablokowane.
I rzeczywiście nasz filtr zadziałał i
zablokował tym samym wykonanie tego scenariusza.
W ten sposób zabezpieczyliśmy się na wypadek, gdyby ktoś poznał adres naszego
webhook'a i próbował wykonać na niego jakieś zapytanie.
Ale oczywiście coś takiego by się nie
powiodło, ponieważ wykorzystaliśmy tutaj sprytny filtr.
Dodam tylko, że jeżeli chodzi o
wykorzystanie takich funkcji, to podobnie jak pokazywałem Ci w przypadku Airtable,
przy ich budowaniu możesz wykorzystać po prostu moduł np.
Compose a string do tego aby sprawdzić zwracaną przez nie wartość.
Jeżeli teraz wyłączymy sobie nasz filtr a
następnie ponownie wykonamy scenariusz, no to zostanie on wykonany w całości.
Natomiast w wyniku działania tego drugiego
modułu poznamy wartość, która została zwrócona przez naszą funkcję.
Muszę tutaj przyznać, że wykorzystanie w
ten sposób funkcji map jest dość zaawansowane.
Natomiast nic nie stoi Ci na przeszkodzie,
aby skopiować po prostu napisaną przeze mnie funkcję i wykorzystać ją do swoich
potrzeb, do tego, aby sprawdzać poszczególne nagłówki czy jakieś inne
dane, które będą posiadały podobną strukturę.
Tak czy inaczej, raz jeszcze zapamiętaj jako pierwszy argument przekazujemy jakąś
złożoną tablicę, następnie wskazujemy element, który chcemy z niej wyciągnąć i
ewentualnie przekazujemy tutaj klucz, względem którego chcemy filtrować dane, a
następnie przekazujemy wartości, które mają zostać uwzględnione.
Co ciekawe, jeżeli podejrzymy sobie dokumentacje tej funkcji, to zobaczymy, że
tych danych możemy podać więcej, podając je po prostu po przecinku.
Tak czy inaczej doprowadziliśmy teraz do
sytuacji, w której na temat wykorzystania webhook'ów,
wiesz już naprawdę dużo.
Jeżeli teraz połączysz to jeszcze z wiedzą
na temat zwracania odpowiedzi z webhook'a, o czym już sobie mówiliśmy,
więc nie będę się tutaj powtarzał, no to zyskujemy tutaj pełną kontrolę zarówno nad
przychodzącymi danymi oraz danymi, które zostają zwrócone z naszej automatyzacji.
W efekcie na ten moment posiadasz
najważniejszą wiedzę, która pozwoli nam przejść do kolejnych lekcji.
I swoją drogą, jeżeli na ten moment Ci to umknęło, to dosłownie przed chwilą
przytrzymałem klawisz Shift, a następnie zaznaczyłem kilka modułów do tego, aby w
tym przypadku po prostu je usunąć i tym samym przygotować nasz scenariusz do
kolejnej lekcji, do której serdecznie Cię zapraszam.