Realice una solicitud HTTP desde Shopify Flow

¿Por qué utilizar esto para las solicitudes HTTP?

Shopify Flow Incluye una acción integrada para enviar solicitudes HTTP, pero solo está disponible en determinados planes de Shopify. Si su tienda tiene el plan «Básico», puede seguir llamando a API externas utilizando Workflow Transactional Email en su lugar.

Usted crea la solicitud una vez en la aplicación y, a continuación, la selecciona dentro de su flujo de trabajo mediante la acción «Solicitud HTTP». Mantener la solicitud en la aplicación en lugar de en el flujo de trabajo también implica que las credenciales nunca quedan almacenadas en la configuración de Shopify Flow, y que dispone de un registro completo de las solicitudes y respuestas de forma gratuita.

Lo que va a desarrollar

Un flujo de trabajo que se ejecuta cada 10 minutos, busca productos que aún no figuran en Airtable y los envía allí.

Esto utiliza:

  • Secretos para conservar el token y el ID de base de Airtable
  • Solicitudes HTTP para definir la plantilla de solicitud
  • La acción «Solicitud HTTP» en Shopify Flow para ejecutarla
  • Historial para consultar el resultado

Guía en vídeo

Todo el proceso: la creación de las claves secretas, la solicitud HTTP y el flujo de trabajo. El vídeo no tiene sonido.

Antes de empezar

  • Workflow Transactional Email está instalado.
  • Tiene acceso a Shopify Flow.
  • Dispone de un ID de base de Airtable y de una tabla preparada para recibir datos de productos.
  • Dispone de un token de acceso de Airtable de con los permisos adecuados.

Paso 1: Guarde las credenciales como secretos

En lugar de introducir las credenciales en la solicitud, guárdelas una vez como «secretos» y haga referencia a ellas mediante {{ secrets.yourKeyName }}. Quedan cifradas en reposo, se pueden reutilizar en distintas solicitudes y no aparecen en su historial.

Acceda a «Secretos» y haga clic en «Crear secreto».

La página «Secretos», con el botón «Crear secreto»:

Introduzca la clave, el valor y una descripción; a continuación, guarde los datos.

Introducción de una clave secreta, un valor y una descripción

En este ejemplo se almacenan dos datos confidenciales: el token de acceso personal y el identificador de la base de Airtable.

Paso 2: Crear la solicitud

En este ejemplo se utiliza , el punto final «create-records» de Airtable:.

Seleccione «Solicitudes HTTP» y haga clic en «Crear solicitud».

La página «Solicitudes HTTP» con el botón «Crear solicitud»:

Asigne un nombre claro, como «Crear registro de producto en Airtable»; este será el nombre que buscará más adelante en Shopify Flow.

Establezca el método. Para crear registros en Airtable, se trata del método POST.

Introduzca el punto final en el campo «URL». El prefijo https:// es fijo, por lo que debe escribir el resto:

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

Esta imagen muestra cómo se asigna el punto final de Airtable a su base de datos, para que pueda adaptarlo a sus necesidades:

Cómo se asigna la URL del punto final de Airtable a la base

Añada los encabezados que requiere Airtable:

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

En el cuerpo de la solicitud, utilice una variable para los registros, de modo que Shopify Flow pueda proporcionarlos:

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

Airtable espera que dicha variable se resuelva en una matriz con la siguiente estructura:

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

Crearemos ese array en el flujo de trabajo en el siguiente paso.

La solicitud final tiene el siguiente aspecto:

La solicitud HTTP completa de Airtable:

La página «Solicitudes HTTP», en la que se muestra una solicitud guardada junto con su método y su URL
En «Solicitudes HTTP» se muestran todas las solicitudes guardadas; la opción «Crear solicitud» permite iniciar una nueva.
El editor de solicitudes HTTP con método, URL, encabezados y cuerpo
La solicitud: método, URL, encabezados y cuerpo, cada uno de los cuales puede utilizar variables y claves secretas.

Guarde la solicitud. Ahora podrá seleccionarla en la acción «Solicitud HTTP» en Shopify Flow.

Paso 3: Crear el flujo de trabajo

Acceda a Shopify Flow y cree un nuevo flujo de trabajo.

Elija un activador basado en una programación. En este ejemplo, la tarea se ejecuta cada 10 minutos con fines de demostración; elija una frecuencia adecuada para el entorno de producción.

Un activador programado en Shopify Flow

Recupere los productos que aún no figuran en Airtable. Los productos que ya se han enviado reciben la etiqueta added-to-airtable en el paso final, por lo que esta consulta los excluye. Consulte la referencia de Shopify sobre el argumento de consulta en.

Cómo recuperar productos sin etiquetas en Shopify Flow

Ahora formatee los datos. El cuerpo de la solicitud espera una variable de tipo records, por lo que debe utilizar la acción «Ejecutar código» de Shopify Flow para organizar los productos recuperados en esa matriz.

Cómo añadir la acción «Ejecutar código»

Configure el paso de la siguiente manera:

Configuración del paso «Ejecutar código»

La consulta:

query {
  getProductData {
    id
    handle
    title
  }
}

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

El esquema de salida:

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

Puede ver una vista previa del resultado a la derecha:

Vista previa del resultado de la ejecución del código

Añada la acción «Solicitud HTTP» que ofrece esta aplicación.

Incorporación de la acción «Solicitud HTTP»

Cuando se le solicite, seleccione la solicitud que ha guardado - Crear registro de producto en Airtable - y, a continuación, guarde los cambios y vuelva al flujo de trabajo.

Selección de la solicitud HTTP guardada

En el campo «Variables» de la acción, introduzca los registros que acaba de dar formato:

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

Envío de los registros formateados a la solicitud

Por último, recorra los productos recuperados y etiquételos con la etiqueta added-to-airtable para que, en la siguiente ejecución, no se vuelvan a incluir.

Etiquetado de los productos tras el envío

Guarde y active el flujo de trabajo.

Paso 4: Compruebe que ha funcionado

En el historial puede comprobar si la solicitud se ha realizado correctamente y qué respuesta ha devuelto Airtable.

La lista de historial que muestra la solicitud

Abra la entrada para examinar los datos de la solicitud, los datos de la respuesta y los tiempos.

La vista de detalles de la solicitud

Desde la página de edición de la solicitud, el botón «Historial de la solicitud» le lleva directamente al historial filtrado según esa solicitud concreta.

A quién no le permitirá llamar la aplicación

Las solicitudes configuradas por los comerciantes pasan por un filtro de seguridad. Se rechazan las solicitudes dirigidas a direcciones de red internas o privadas, incluidas localhost, los puntos finales de metadatos en la nube y cualquier dirección que resuelva a un rango privado, incluso a través de una redirección. Si observa un error en el que se menciona SSRF blocked, el destino figura en dicha lista. Además, las solicitudes pueden seguir un máximo de 5 redireccionamientos y el tamaño de la respuesta tiene un límite de 10 MB.

Shopify Flow La propia aplicación limita el tamaño de una respuesta de acción a 50 KB. Si una respuesta de prueba supera ese tamaño, la aplicación bloquea el guardado en lugar de permitir que el paso falle dentro de un flujo de trabajo en ejecución.

Buenas prácticas

  • Utilice nombres de solicitudes claros para que sean fáciles de encontrar en Shopify Flow.
  • Guarde los tokens de la API como secretos, en lugar de introducirlos en los encabezados.
  • Céntrese en los campos que el destino realmente necesita.
  • Compruebe el historial tras cualquier modificación para confirmar que la solicitud sigue realizándose correctamente.
  • Añada una condición antes de la solicitud para que no se ejecute en ciclos vacíos.

Relacionado