Wyślij żądanie HTTP z Shopify Flow

Wyślij żądanie HTTP z Shopify Flow

Skopiuj stronę

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.

Strona „Sekrety” z przyciskiem „Utwórz sekret”

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

Wprowadzanie klucza tajnego, wartości i opisu

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.

Strona HTTP Request z przyciskiem „Utwórz żądanie”

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:

Jak adres URL punktu końcowego Airtable odpowiada bazie

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:

Gotowe żądanie HTTP w serwisie Airtable

Strona „HTTP Requests” zawierająca listę zapisanych żądań wraz z ich metodami i adresami URL
W sekcji „HTTP Requests” wyświetlana jest lista wszystkich zapisanych żądań; opcja „Create request” pozwala utworzyć nowe żądanie.
Edytor żądań HTTP z metodą, adresem URL, nagłówkami i treścią
Żądanie: metoda, adres URL, nagłówki i treść, z których każda może zawierać zmienne i dane poufne.

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ść.

Wyzwalacz zaplanowany w Shopify Flow

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ń.

Pobieranie produktów bez tagów w Shopify Flow

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ę.

Dodawanie akcji „Uruchom kod”

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

Konfiguracja kroku „Uruchom kod”

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:

Podgląd wyników wykonania kodu

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

Dodawanie akcji HTTP Request

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.

Wybór zapisanego żądania HTTP

W polu „Zmienne” tej akcji proszę wprowadzić właśnie sformatowane rekordy:

{
  "records": "{{runCode.records}}"
}

Przekazywanie sformatowanych rekordów do żądania

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

Oznaczanie produktów po wysłaniu

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.

Lista historii zawierająca to zgłoszenie

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

Widok szczegółów żądania

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