Efetue um pedido HTTP a partir de Shopify Flow

Por que razão utilizar isto para pedidos HTTP?

Shopify Flow inclui uma ação integrada para enviar pedidos HTTP, mas esta só está disponível em determinados planos do Shopify. Se a sua loja estiver no plano Básico, poderá, mesmo assim, aceder a APIs externas utilizando, em vez disso, Workflow Transactional Email.

Cria a solicitação uma vez na aplicação e, em seguida, seleciona-a no seu fluxo de trabalho utilizando a ação «Solicitação HTTP». Manter a solicitação na aplicação, em vez de no fluxo de trabalho, significa também que as credenciais nunca ficam armazenadas na configuração do Shopify Flow e que obtém, gratuitamente, um registo completo das solicitações e respostas.

O que irá desenvolver

Um fluxo de trabalho que é executado a cada 10 minutos, identifica os produtos que ainda não se encontram no Airtable e os envia para lá.

Isto utiliza:

  • Segredos para guardar o token e o ID da base do Airtable
  • Pedidos HTTP para definir o modelo de pedido
  • A ação «Pedido HTTP» disponível em Shopify Flow para a executar
  • Histórico para verificar o resultado

Guia em vídeo

Todo o processo: a criação dos segredos, o pedido HTTP e o fluxo de trabalho. O vídeo não tem som.

Antes de começar

  • Workflow Transactional Email está instalado.
  • Tem acesso a Shopify Flow.
  • Dispõe de um ID de base do Airtable e de uma tabela pronta para receber dados de produtos.
  • Dispõe de um token de acesso ao Airtable do com as permissões adequadas.

Passo 1: Armazene as credenciais como segredos

Em vez de introduzir as credenciais na solicitação, guarde-as uma vez como «segredos» e faça referência a elas como {{ secrets.yourKeyName }}. Estas ficam encriptadas quando não estão a ser utilizadas, podem ser reutilizadas em várias solicitações e são ocultadas do seu histórico.

Aceda a «Segredos abertos» e clique em «Criar segredo».

A página «Secretos» com o botão «Criar segredo»

Introduza a chave, o valor e uma descrição e, em seguida, guarde.

Introdução de uma chave secreta, um valor e uma descrição

Este exemplo armazena dois dados confidenciais: o token de acesso pessoal e o ID da base do Airtable.

Passo 2: Criar o pedido

Este exemplo utiliza o endpoint «create-records» do Airtable, disponível em .

Aceda a «Pedidos HTTP» e clique em «Criar pedido».

A página «Pedidos HTTP» com o botão «Criar pedido»

Atribua-lhe um nome claro, como «Criar registo de produto no Airtable» - é este o nome que irá procurar mais tarde em Shopify Flow.

Defina o método. Para criar registos no Airtable, esse método é o POST.

Introduza o ponto final no campo URL. O prefixo https:// é fixo, pelo que deve introduzir o resto:

api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products

Esta imagem mostra como o ponto de extremidade do Airtable se corresponde à sua base, para que possa adaptá-lo à sua situação:

Como é que o URL do ponto final do Airtable se corresponde com a base

Adicione os cabeçalhos exigidos pelo Airtable:

Authorization: Bearer {{ secrets.airtableAccessToken }}
Content-Type: application/json

No corpo do pedido, utilize uma variável para os registos, para que o Shopify Flow os possa fornecer:

{
  "records": {{ variables.records }}
}

A Airtable espera que essa variável resulte num array com a seguinte estrutura:

"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
    }
  }
]

Iremos criar esse array no fluxo de trabalho no próximo passo.

O pedido final tem o seguinte aspeto:

O pedido HTTP completo do Airtable

A página «Pedidos HTTP», que apresenta um pedido guardado com o respetivo método e URL
A opção «Pedidos HTTP» apresenta uma lista de todos os pedidos guardados; a opção «Criar pedido» permite iniciar um novo pedido.
O editor de pedidos HTTP com método, URL, cabeçalhos e corpo
O pedido: método, URL, cabeçalhos e corpo, podendo cada um deles utilizar variáveis e dados confidenciais.

Guarde o pedido. Agora, este pode ser selecionado na ação «Pedido HTTP» em Shopify Flow.

Passo 3: Criar o fluxo de trabalho

Aceda a Shopify Flow e crie um novo fluxo de trabalho.

Escolha um gatilho baseado numa programação. Este exemplo é executado a cada 10 minutos para fins de demonstração - escolha um intervalo adequado para o ambiente de produção.

Um gatilho agendado no Shopify Flow

Recupere os produtos que ainda não se encontram no Airtable. Os produtos já enviados recebem a etiqueta added-to-airtable na etapa final, pelo que esta consulta os exclui. Consulte a referência aos argumentos de consulta do Shopify em.

Recuperação de produtos sem etiquetas em Shopify Flow

Agora, formate os dados. O corpo do pedido espera uma variável do tipo records, pelo que deve utilizar a ação «Executar código» do Shopify Flow para organizar os produtos obtidos nessa matriz.

Adicionar a ação «Executar código»

Configure o passo da seguinte forma:

Configurar a etapa «Executar código»

A consulta:

query {
  getProductData {
    id
    handle
    title
  }
}

O código:

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)
  };
}

O esquema de saída:

"The output of Run Code"
type Output {
  "The message returned by the script"
  records: String
}

Pode visualizar o resultado à direita:

Pré-visualização do resultado da execução do código

Adicione a ação «Pedido HTTP» disponibilizada por esta aplicação.

Adicionar a ação «Pedido HTTP»

Quando lhe for solicitado, selecione o pedido que guardou - Criar registo de produto no Airtable - e, em seguida, guarde e regresse ao fluxo de trabalho.

Selecionar o pedido HTTP guardado

No campo «Variáveis» da ação, introduza os registos que acabou de formatar:

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

Envio dos registos formatados para o pedido

Por fim, percorra os produtos recuperados e tag-os com a tag added-to-airtable para que a próxima execução não os volte a incluir.

Etiquetagem dos produtos após o envio de

Guarde e ative o fluxo de trabalho.

Passo 4: Confirme se funcionou

Na secção «Histórico», pode verificar se o pedido foi bem-sucedido e qual foi a resposta enviada pelo Airtable.

A lista de histórico que apresenta o pedido

Abra a entrada para analisar os dados do pedido, os dados da resposta e os tempos.

A página de detalhes do pedido

A partir da página de edição do pedido, o botão «Histórico do pedido» leva-o diretamente para o histórico filtrado de acordo com esse pedido específico.

Para quem a aplicação não lhe permite ligar

Os pedidos configurados pelo lojista passam por um mecanismo de segurança. São recusados os pedidos dirigidos a endereços de rede interna ou privada, incluindo localhost, pontos finais de metadados na nuvem e qualquer endereço que resolva para um intervalo privado - mesmo que seja através de um redirecionamento. Se observar um erro que mencione SSRF blocked, o destino encontra-se nessa lista. As solicitações também seguem, no máximo, 5 redirecionamentos e têm um limite de resposta de 10 MB.

Shopify Flow O próprio sistema limita o tamanho de uma resposta de ação a 50 KB. Se uma resposta de teste for maior do que isso, a aplicação bloqueia o processo de gravação, em vez de permitir que a etapa falhe no âmbito de um fluxo de trabalho ativo.

Melhores práticas

  • Utilize nomes de pedidos claros, para que sejam fáceis de encontrar em Shopify Flow.
  • Armazene os tokens da API como segredos, em vez de os introduzir nos cabeçalhos.
  • Mantenha o corpo focado nos campos de que o destino realmente necessita.
  • Verifique o histórico após qualquer alteração, para confirmar se o pedido continua a ser bem-sucedido.
  • Adicione uma condição antes do pedido, para que este não seja executado em ciclos vazios.

Relacionado