Recepción y respuesta a llamadas HTTPS entrantes a flujos de trabajo en Azure Logic Apps

Se aplica a: Azure Logic Apps (consumo + estándar)

En esta guía paso a paso se muestra cómo crear un flujo de trabajo de aplicación lógica que pueda recibir y controlar una solicitud HTTPS entrante o una llamada desde otro servicio mediante el desencadenador integrado Solicitud. Cuando el flujo de trabajo usa este desencadenador, puede responder a la solicitud HTTPS mediante la acción integrada Respuesta.

Nota:

La acción Respuesta solo funciona cuando se usa el desencadenador Solicitud.

Por ejemplo, en esta lista se describen algunas tareas que el flujo de trabajo puede realizar al usar la acción Solicitar desencadenador y Respuesta:

  • Reciba una solicitud HTTP de datos en una base de datos local, y responda a ella.

  • Reciba y responda a una solicitud HTTPS enviada desde otro flujo de trabajo de aplicación lógica.

  • Desencadene una ejecución de flujo de trabajo cuando se produzca un evento de webhook externo.

En su lugar, para ejecutar el flujo de trabajo mediante el envío de una solicitud saliente o una salida, use el desencadenador integrado HTTP o la acción integrada HTTP.

Requisitos previos

  • Una cuenta y una suscripción de Azure. Si no tiene una suscripción, puede registrarse para obtener una cuenta de Azure gratuita.

  • Flujo de trabajo de la aplicación lógica donde quiere recibir la solicitud HTTPS entrante. Para iniciar el flujo de trabajo mediante un desencadenador de solicitud, deberá empezar con un flujo de trabajo en blanco. Para usar la acción Respuesta, el flujo de trabajo debe comenzar con el desencadenador de solicitud.

Adición de un desencadenador de solicitud

El desencadenador Request crea un punto de conexión al que se puede llamar manualmente que controla solo las solicitudes entrantes a través de HTTPS. Cuando el autor de la llamada envía una solicitud a este punto de conexión, el desencadenador de solicitud se activa y ejecuta el flujo de trabajo. Para obtener más información sobre cómo llamar a este desencadenador, consulte Llamada, desencadenamiento o anidamiento de flujos de trabajos con puntos de conexión HTTPS en Azure Logic Apps.

  1. En Azure Portal, abra su aplicación lógica de consumo y el flujo de trabajo en blanco en el diseñador.

  2. En el diseñador, siga estos pasos generales para buscar y agregar el desencadenador integrado Request denominado Cuando se recibe una solicitud HTTP.

  3. Una vez que aparezca el cuadro de información del desencadenador, proporcione la siguiente información según sea necesario:

    Nombre de propiedad Nombre de la propiedad JSON Obligatorio Descripción
    URL de HTTP POST {none} La URL del punto de conexión que se genera después de guardar el flujo de trabajo y se usa para enviar una solicitud que desencadene el flujo de trabajo.
    Esquema JSON del cuerpo de la solicitud schema No El esquema JSON que describe las propiedades y los valores del cuerpo de la solicitud entrante. El diseñador usa este esquema para generar tokens para las propiedades de la solicitud. De esa manera, el flujo de trabajo puede analizar, consumir y pasar los resultados del desencadenador de solicitud al flujo de trabajo.

    Si no tiene un esquema JSON, puede generarlo a partir de una carga útil de muestra mediante la capacidad Usar carga útil de muestra para generar esquemas.

    A continuación se muestra un ejemplo de esquema JSON:

    Screenshot showing Consumption workflow and Request trigger with example JSON schema.

    A continuación se muestra un ejemplo de esquema JSON completo:

    {
       "type": "object",
       "properties": {
          "account": {
             "type": "object",
             "properties": {
                "name": {
                   "type": "string"
                },
                "ID": {
                   "type": "string"
                },
                "address": {
                   "type": "object",
                   "properties": {
                      "number": {
                         "type": "string"
                      },
                      "street": {
                         "type": "string"
                      },
                      "city": {
                         "type": "string"
                      },
                      "state": {
                         "type": "string"
                      },
                      "country": {
                         "type": "string"
                      },
                      "postalCode": {
                         "type": "string"
                      }
                   }
                }
             }
          }
       }
    }
    

    Cuando introduce un esquema JSON, el diseñador muestra un recordatorio para incluir el encabezado Content-Type en la solicitud y establecer el valor del encabezado en aplicación/JSON. Para obtener más información, consulte Control de tipos de contenido.

    Screenshot showing Consumption workflow, Request trigger, and reminder to include

    En el siguiente ejemplo se muestra cómo aparece el encabezado Content-Type en formato JSON:

    {
       "Content-Type": "application/json"
    }
    

    Para generar un esquema JSON basado en la carga esperada (datos), puede usar una herramienta como JSONSchema.net o puede seguir estos pasos:

    1. En el desencadenador de solicitud, seleccione Use sample payload to generate schema (Usar una carga de ejemplo para generar el esquema).

      Screenshot showing Consumption workflow, Request trigger, and

    2. Escriba la carga de ejemplo y seleccione Listo.

      Screenshot showing Consumption workflow, Request trigger, and sample payload entered to generate schema.

      En el ejemplo siguiente se muestra la carga de ejemplo:

      {
         "account": {
            "name": "Contoso",
            "ID": "12345",
            "address": {
               "number": "1234",
               "street": "Anywhere Street",
               "city": "AnyTown",
               "state": "AnyState",
               "country": "USA",
               "postalCode": "11111"
            }
         }
      }
      
  4. Para comprobar que la llamada entrante tiene un cuerpo de solicitud que coincide con el esquema especificado, siga estos pasos:

    1. Para exigir que el mensaje entrante tenga exactamente los mismos campos que el esquema describe, en el esquema, agregue la propiedad required y especifique los campos obligatorios. Agregue la propiedad addtionalProperties y establezca el valor en false.

      Por ejemplo, el esquema siguiente especifica que el mensaje entrante debe tener el campo msg y ningún otro:

      {
         "properties": {
           "msg": {
              "type": "string"
           }
         },
         "type": "object",
         "required": ["msg"],
         "additionalProperties": false
      }
      
    2. En la barra de título del desencadenador de solicitud, seleccione el botón de puntos suspensivos (...).

    3. En la configuración del desencadenador, active Validación de esquema y seleccione Listo.

      Si el cuerpo de la solicitud de la llamada entrante no coincide con el esquema, el desencadenador devuelve un error HTTP 400 Solicitud no válida.

  5. Para agregar otras propiedades o parámetros al desencadenador, abra la lista Agregar nuevo parámetro y seleccione los parámetros que quiera agregar.

    Nombre de propiedad Nombre de la propiedad JSON Obligatorio Descripción
    Método method No Método que la solicitud entrante debe usar para llamar a la aplicación lógica
    Ruta de acceso relativa relativePath No Ruta de acceso relativa del parámetro que la URL del punto de conexión de la aplicación lógica puede aceptar

    En el siguiente ejemplo se agrega la propiedad Método:

    Screenshot showing Consumption workflow, Request trigger, and adding the

    La propiedad Method aparece en el desencadenador para que pueda seleccionar un método de la lista.

    Screenshot showing Consumption workflow, Request trigger, and the

  6. Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).

    Este paso genera la URL que puede usar para enviar una solicitud que desencadene el flujo de trabajo.

  7. Para copiar la URL generada, seleccione el icono de copia que se encuentra junto a la URL.

    Screenshot showing Consumption workflow, Request trigger, and URL copy button selected.

    Nota:

    Si quiere incluir el símbolo de hash o de almohadilla (#) en el URI al hacer una llamada al desencadenador de solicitud, use mejor esta versión codificada: %25%23

Ahora, puede seguir compilando el flujo de trabajo mediante la agregación de otra acción como siguiente paso. Por ejemplo, puede responder a la solicitud mediante la agregación de una acción de respuesta, que puede usar para devolver una respuesta personalizada y que se describe más adelante en este tema.

Nota:

El flujo de trabajo solo mantiene abierta una solicitud entrante durante un tiempo limitado. En el supuesto de que el flujo de trabajo también incluya una acción de respuesta, si el flujo de trabajo no devuelve una respuesta al autor de la llamada después de que expire este tiempo, el flujo de trabajo devolverá el estado 504 TIEMPO DE ESPERA DE LA PUERTA DE ENLACE al autor de la llamada. Si el flujo de trabajo no incluye una acción de respuesta, este devolverá inmediatamente el estado 202 ACEPTADO al autor de la llamada.

Para obtener información sobre la seguridad, la autorización y el cifrado de las llamadas entrantes al flujo de trabajo, como Seguridad de la capa de transporte (TLS), anteriormente conocida como Capa de sockets seguros (SSL), Autenticación abierta de Id. de Entra de Microsoft (OAuth de Microsoft Entra ID), exponga el recurso de la aplicación lógica con Azure API Management o restrinja las direcciones IP que originan llamadas entrantes, consulte Acceso seguro y datos: Acceso para llamadas entrantes a desencadenadores basados en solicitudes.

Salidas del desencadenador

En la siguiente tabla se enumeran las salidas del desencadenador de solicitud:

Nombre de la propiedad JSON Tipo de datos Descripción
headers Object Objeto JSON que describe los encabezados de la solicitud
cuerpo Object Objeto JSON que describe el contenido del cuerpo de la solicitud

Adición de una acción de respuesta

Cuando use el desencadenador de solicitud para recibir solicitudes entrantes, puede modelar la respuesta y enviar los resultados de la carga al autor de la llamada mediante la acción de respuesta integrada, que solo funciona con el desencadenador de solicitud. Esta combinación con el desencadenador de solicitud y la acción de respuesta crea el patrón de solicitud-respuesta. Excepto dentro de los bucles Foreach, los bucles Until y las ramas paralelas, se puede agregar una acción de respuesta en cualquier lugar del flujo de trabajo.

Importante

  • Si la acción de respuesta incluye los siguientes encabezados, Azure Logic Apps quitará dichos encabezados del mensaje de respuesta generado sin mostrar ninguna advertencia o error. Azure Logic Apps no incluirá estos encabezados, aunque el servicio no le impedirá guardar flujos de trabajo que tengan una acción de respuesta con estos encabezados.

    • Allow
    • Encabezados Content-*, excepto Content-Disposition, Content-Encoding y Content-Typecuando se usan operaciones POST y PUT, pero no se incluyen en operaciones GET
    • Cookie
    • Expires
    • Last-Modified
    • Set-Cookie
    • Transfer-Encoding
  • Si tiene una o varias acciones de respuesta en un flujo de trabajo complejo con ramas, asegúrese de que el flujo de trabajo procese al menos una acción de respuesta durante el tiempo de ejecución. De lo contrario, si se omiten todas las acciones de respuesta, el autor de la llamada recibe un error 502: Puerta de enlace incorrecta, incluso si el flujo de trabajo finaliza correctamente.

  • En un flujo de trabajo sin estado de aplicación lógica estándar, la acción Respuesta debe aparecer en último lugar en el flujo de trabajo. Si la acción aparece en cualquier otro lugar, Azure Logic Apps todavía no ejecutará la acción hasta que todas las demás acciones terminen de ejecutarse.

  1. En el diseñador de flujos de trabajo, siga estos pasos generales para buscar y agregar la acción integrada Respuesta denominada Respuesta.

    Para simplificar, los ejemplos siguientes muestran un desencadenador de solicitud contraído.

  2. En el cuadro de información de acción, agregue los valores necesarios para el mensaje de respuesta.

    Nombre de propiedad Nombre de la propiedad JSON Obligatorio Descripción
    Código de estado statusCode Código de estado que se devolverá en la respuesta
    Encabezados headers No Objeto JSON que describe uno o más encabezados que se incluirán en la respuesta
    Cuerpo body No Cuerpo de la respuesta

    Al seleccionar dentro de cualquier campo de texto, se abre automáticamente la lista de contenido dinámico. A continuación, puede seleccionar tokens que representen las salidas disponibles de los pasos anteriores del flujo de trabajo. Las propiedades del esquema que especifique también aparecen en esta lista de contenido dinámico. Puede seleccionar estas propiedades para usarlas en el flujo de trabajo.

    Por ejemplo, en el campo Encabezados , incluya Content-Type como nombre de clave y establezca el valor de clave en application/json , como se mencionó anteriormente en este artículo. Para el cuadro Cuerpo, puede seleccionar la salida del cuerpo del desencadenador en la lista de contenido dinámico.

    Screenshot showing Azure portal, Consumption workflow, and Response action information.

    Para ver los encabezados en formato JSON, seleccione Switch to text view (Cambiar a la vista de texto).

    Screenshot showing Azure portal, Consumption workflow, and Response action headers in

  3. Para agregar más propiedades para la acción, como un esquema JSON para el cuerpo de la respuesta, en la lista Agregar nuevo parámetro , seleccione los parámetros que desea agregar.

  4. Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).

Prueba del flujo de trabajo

Para probar el flujo de trabajo, envíe una solicitud HTTP a la dirección URL generada. Por ejemplo, puede usar una herramienta como Postman para enviar la solicitud HTTP. Para obtener más información sobre la definición JSON subyacente del desencadenador y sobre cómo llamar a este desencadenador, vea estos temas: Tipo de desencadenador de solicitud y Llamada, desencadenamiento o anidamiento de aplicaciones lógicas con puntos de conexión HTTP en Azure Logic Apps.

Seguridad y autenticación

En un flujo de trabajo de una aplicación lógica estándar que comienza con el desencadenador de solicitud (pero no un desencadenador de webhook), el aprovisionamiento de Azure Functions se puede usar para autenticar las llamadas entrantes enviadas al punto de conexión creado por el desencadenador mediante una identidad administrada. Este aprovisionamiento también se denomina "Easy Auth". Para información, consulte Desencadenamiento de flujos de trabajo en Aplicaciones lógicas estándar con Easy Auth.

Para obtener más información sobre la seguridad, la autorización y el cifrado de las llamadas entrantes al flujo de trabajo de la aplicación lógica, como Seguridad de la capa de transporte (TLS), anteriormente conocida como Capa de sockets seguros (SSL), Autenticación abierta de Id. de Entra de Microsoft (OAuth de Microsoft Entra ID), exposición de la aplicación lógica con Azure API Management o restricción de las direcciones IP que originan llamadas entrantes, consulte Acceso seguro y datos: Acceso para llamadas entrantes a desencadenadores basados en solicitudes.

Pasos siguientes