Wyślij żądanie HTTP z Shopify Flow
Wysyłaj żądania HTTP z Shopify Flow także w planie Basic dzięki Workflow Transactional Email. Przykład z Airtable, sekretami i historią żądań.
Dlaczego warto stosować to rozwiązanie w przypadku żądań HTTP
Shopify Flow zawiera wbudowaną akcję Wyślij żądanie HTTP, jednak jest ona dostępna wyłącznie w ramach niektórych planów Shopify. Jeśli Państwa sklep korzysta z planu Basic, nadal mogą Państwo wywoływać zewnętrzne interfejsy API, korzystając zamiast tego z funkcji Workflow Transactional Email.
Wystarczy raz utworzyć żądanie w aplikacji, a następnie wybrać je w ramach przepływu pracy za pomocą akcji HTTP Request. Przechowywanie żądania w aplikacji, a nie w przepływie pracy, oznacza również, że dane uwierzytelniające nigdy nie są przechowywane w konfiguracji Shopify Flow, a Państwo otrzymują bezpłatny dostęp do pełnego rejestru żądań i odpowiedzi.
Co Państwo stworzą
Proces, który uruchamia się co 10 minut, wyszukuje produkty, których jeszcze nie ma w Airtable, i przesyła je do tej aplikacji.
W tym przypadku wykorzystuje się:
- Sekrety przechowywania tokenu Airtable i identyfikatora bazy
- HTTP Request - w celu zdefiniowania szablonu żądania
- Akcja HTTP Request w Shopify Flow, której należy uruchomić
- Historia - w celu sprawdzenia wyniku
Przewodnik wideo
Cały proces: tworzenie kluczy dostępu, żądanie HTTP oraz przebieg pracy. Film nie zawiera dźwięku.
Zanim zaczną Państwo
- Zainstalowano moduł Workflow Transactional Email.
- Mają Państwo dostęp do Shopify Flow.
- Posiadają Państwo identyfikator bazy danych Airtable oraz tabelę gotową do przyjęcia danych dotyczących produktów.
- Posiada Pan/Pani token dostępu do Airtable z odpowiednimi uprawnieniami.
Krok 1: Proszę zapisać dane uwierzytelniające jako sekrety
Zamiast wpisywać dane uwierzytelniające bezpośrednio w żądaniu, proszę zapisać je jednorazowo jako sekrety i odwoływać się do nich za pomocą {{ secrets.yourKeyName }}. Są one szyfrowane w stanie spoczynku, można je ponownie wykorzystywać w różnych żądaniach, a ponadto nie pojawiają się w historii.
Proszę otworzyć sekcję Sekrety i kliknąć przycisk Utwórz sekret.

Wprowadź klucz, wartość i opis, a następnie zapisz.

W tym przykładzie przechowywane są dwa dane poufne: osobisty token dostępu oraz identyfikator bazy Airtable.
Krok 2: Utworzenie żądania
W tym przykładzie wykorzystano punkt końcowy create-records serwisu Airtable.
Proszę otworzyć sekcję „HTTP Requests” i kliknąć przycisk Create request.

Proszę nadać jej jasną nazwę, na przykład Utwórz rekord produktu w Airtable - właśnie tej nazwy będą Państwo później szukać w Shopify Flow.
Proszę ustawić metodę. W przypadku tworzenia rekordów w Airtable jest to metoda POST.
W polu adresu URL należy wpisać punkt końcowy. Prefiks https:// jest stały, dlatego należy wpisać pozostałą część adresu:
api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products
Na poniższym obrazku przedstawiono, w jaki sposób punkt końcowy Airtable jest powiązany z Państwa bazą danych, dzięki czemu mogą Państwo dostosować go do własnych potrzeb:

Proszę dodać nagłówki wymagane przez Airtable:
Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json
W treści żądania proszę użyć zmiennej dla rekordów, aby usługa Shopify Flow mogła je dostarczyć:
{
"records": {{ variables.records }}
}
Firma Airtable oczekuje, że zmienna ta będzie miała postać tablicy o następującym kształcie:
"records": [
{
"fields": {
"Title": "Classic White T-Shirt",
"Handle": "classic-white-tshirt",
"Product ID": 1001
}
},
{
"fields": {
"Title": "Eco-Friendly Water Bottle",
"Handle": "eco-water-bottle",
"Product ID": 1002
}
}
]
W kolejnym kroku utworzymy tę tablicę w ramach przepływu pracy.
Gotowe żądanie wygląda następująco:



Zapisz żądanie. Teraz można je wybrać w akcji HTTP Request w Shopify Flow.
Krok 3: Stworzenie przepływu pracy
Proszę otworzyć aplikację Shopify Flow i utworzyć nowy przepływ pracy.
Proszę wybrać wyzwalacz oparty na harmonogramie. W tym przykładzie zadanie uruchamia się co 10 minut w celach demonstracyjnych - w środowisku produkcyjnym należy wybrać rozsądną częstotliwość.

Proszę pobrać produkty, których jeszcze nie ma w Airtable. Produkty, które zostały już przesłane, otrzymują w ostatnim kroku tag added-to-airtable, więc niniejsze zapytanie je wyklucza. Proszę zapoznać się z dokumentacją Shopify dotyczącą argumentów zapytań.

Teraz proszę sformatować dane. Treść żądania oczekuje zmiennej records, dlatego proszę skorzystać z akcji Uruchom kod w Shopify Flow, aby przekształcić pobrane produkty w tę tablicę.

Proszę skonfigurować ten etap w następujący sposób:

Zapytanie:
query {
getProductData {
id
handle
title
}
}
Kod:
export default function main(input) {
const records = input.getProductData.map((data) => {
const numericId = parseInt(data.id.replace("gid://shopify/Product/", ""));
return {
fields: {
"Product ID": numericId,
"Title": data.title,
"Handle": data.handle
}
};
});
return {
records: JSON.stringify(records)
};
}
Schemat wyjściowy:
"The output of Run Code"
type Output {
"The message returned by the script"
records: String
}
Wynik można obejrzeć w podglądzie po prawej stronie:

Proszę dodać akcję HTTP Request udostępnianą przez tę aplikację.

Po wyświetleniu monitu proszę wybrać zapisaną prośbę - Utwórz rekord produktu w Airtable - a następnie zapisać i powrócić do przepływu pracy.

W polu „Zmienne” tej akcji proszę wprowadzić właśnie sformatowane rekordy:
{
"records": "{{runCode.records}}"
}

Na koniec należy przejrzeć pobrane produkty i oznaczyć je tagiem added-to-airtable, aby podczas kolejnego uruchomienia nie zostały one ponownie pobrane.

Zapisz i włącz przepływ pracy.
Krok 4: Proszę sprawdzić, czy wszystko działa
W sekcji Historia można sprawdzić, czy żądanie zakończyło się powodzeniem oraz jaką odpowiedź przesłał serwis Airtable.

Proszę otworzyć ten wpis, aby sprawdzić dane żądania, dane odpowiedzi oraz czasy.

Na stronie edycji zgłoszenia przycisk Historia zgłoszenia umożliwia bezpośrednie przejście do historii filtrowanej pod kątem tego konkretnego zgłoszenia.
Do kogo nie będzie można zadzwonić za pomocą tej aplikacji
Żądania skonfigurowane przez sprzedawcę przechodzą przez mechanizm zabezpieczający. Żądania kierowane na adresy sieci wewnętrznej lub prywatnej są odrzucane, w tym na localhost, punkty końcowe metadanych w chmurze oraz wszelkie adresy rozdzielające się na zakres prywatny - nawet w przypadku przekierowania. Jeśli pojawi się błąd z informacją SSRF blocked, oznacza to, że miejsce docelowe znajduje się na tej liście. Żądania mogą również przechodzić maksymalnie przez 5 przekierowań, a rozmiar odpowiedzi jest ograniczony do 10 MB.
Sam Shopify Flow ogranicza rozmiar odpowiedzi na akcję do 50 KB. Jeśli rozmiar odpowiedzi testowej jest większy, aplikacja blokuje zapis, zamiast dopuścić do niepowodzenia tego etapu w ramach rzeczywistego przepływu pracy.
Najlepsze praktyki
- Prosimy o stosowanie jasnych nazw żądań, aby można je było łatwo znaleźć w Shopify Flow.
- Prosimy o przechowywanie tokenów API jako danych poufnych, a nie o wpisywanie ich w nagłówkach.
- Proszę skupić uwagę na obszarach, które są rzeczywiście niezbędne dla osiągnięcia celu.
- Po każdej zmianie proszę sprawdzić historię, aby upewnić się, że żądanie nadal kończy się powodzeniem.
- Proszę dodać warunek przed żądaniem, aby nie było ono wykonywane w pustych cyklach.
Powiązane
- Sekrety - przechowywanie danych uwierzytelniających.
- Zmienne i ciecze - opis zmiennych, w tym nadpisywanie treści.
- Historia i rozwiązywanie problemów - odczytywanie nieudanego żądania.
