Compartir a través de


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

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

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

Nota:

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

Por ejemplo, el flujo de trabajo puede realizar las siguientes tareas 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

  • Instale o use una herramienta que pueda enviar solicitudes HTTP para probar la solución, por ejemplo:

    Precaución

    En escenarios en los que tiene datos confidenciales, como credenciales, secretos, tokens de acceso, claves de API y otra información similar, asegúrese de usar una herramienta que proteja los datos con las características de seguridad necesarias. La herramienta debe funcionar sin conexión o localmente y no requerir el inicio de sesión en una cuenta en línea o sincronizar datos en la nube. Cuando se usa una herramienta con estas características, se reduce el riesgo de exponer datos confidenciales al público.

Adición de un desencadenador de solicitud

Este desencadenador de Solicitud crea un punto de conexión al que se puede llamar manualmente que controla solo 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 información sobre cómo llamar a este activador, consulte Llamar, activar o anidar flujos de trabajo con puntos de conexión HTTPS en Azure Logic Apps.

  1. En Azure Portal, abra el recurso de la aplicación lógica de consumo.

  2. En el menú de la barra lateral, en Herramientas de desarrollo, seleccione el diseñador para abrir el flujo de trabajo en blanco.

  3. Agregue el desencadenador integrado Request denominado Cuando se recibe una solicitud HTTP a su flujo de trabajo siguiendo los pasos generales para agregar un desencadenador.

  4. Una vez que aparezca el cuadro de información del desencadenador, proporcione la siguiente información:

    Nombre de propiedad Nombre de la propiedad JSON Obligatorio Descripción
    HTTP URL {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:

    Captura de pantalla que muestra el flujo de trabajo de consumo y el desencadenador de solicitud con un esquema JSON de ejemplo.

    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 introduces un esquema JSON, el diseñador podría mostrar un recordatorio para incluir el encabezado Content-Type en tu solicitud y establecer ese valor de encabezado en application/json. Para obtener más información, consulte Control de tipos de contenido.

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

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

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

    1. En el desencadenador Solicitud, seleccione Usar una carga de ejemplo para generar el esquema.

      Captura de pantalla que muestra el flujo de trabajo de consumo, el desencadenador de solicitud y la opción

    2. Escriba la carga de ejemplo y seleccione Listo.

      Captura de pantalla que muestra el flujo de trabajo de consumo, el desencadenador de solicitud y la carga de muestra que se ha introducido para generar el esquema.

      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"
            }
         }
      }
      
  5. 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 additionalProperties propiedad 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 el diseñador, seleccione el disparador de petición. En el panel de información que se abre, seleccione la pestaña Configuración.

    3. Expanda Control de datos, y establezca Validación de esquema en Activado.

      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.

  6. En la lista Método , seleccione el método que el desencadenador espera que usen las solicitudes entrantes.

    Captura de pantalla que muestra el flujo de trabajo estándar, el desencadenador de solicitud y la lista Método abiertos con un método seleccionado.

  7. Si existen otros parámetros para el desencadenador, abra la lista Parámetros avanzados y seleccione los parámetros que desee.

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

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

    Captura de pantalla que muestra el flujo de trabajo de consumo, el desencadenador de solicitud y el y botón Copiar URL seleccionado.

    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 autenticación y el cifrado de las llamadas entrantes al flujo de trabajo, como Seguridad de la capa de transporte (TLS),OAuth con el identificador de Entra de Microsoft, firmas de acceso compartido (SAS), exposición del recurso de la aplicación lógica con Azure API Management o restricción de las direcciones IP que originan llamadas entrantes, consulte Acceso para llamadas entrantes a desencadenadores basados en solicitudes.

Salidas del desencadenador

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

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

Adición de una acción de respuesta

Al usar el desencadenador 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 integrada Respuesta , que solo funciona con el desencadenador Solicitud . Esta combinación con el desencadenador de solicitud y la acción Respuesta crea el patrón request-response. A excepción de dentro de los bucles For each y Until, y ramas paralelas, puedes añadir la acción Response en cualquier lugar de tu flujo de trabajo.

Importante

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

    • Allow
    • Encabezados Content-* excepto Content-Disposition, Content-Encoding y Content-Type cuando se usan operaciones POST y PUT, pero no se incluyen para las 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 Azure Portal, abra el recurso de la aplicación lógica de consumo.

  2. En el menú de la barra lateral, en Herramientas de desarrollo, seleccione el diseñador para abrir el flujo de trabajo.

    En este flujo de trabajo de ejemplo se usa el desencadenador request agregado en la sección anterior.

  3. Agregue la acción integrada Respuesta al flujo de trabajo siguiendo los pasos generales para agregar una acción.

  4. En el cuadro de información de la 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, obtendrá las opciones para abrir la lista de contenido dinámico (icono de rayo) o el editor de expresiones (icono de función). Al elegir la lista de contenido dinámico, puede seleccionar salidas disponibles en los pasos anteriores del flujo de trabajo. Si especificó un esquema en el desencadenador Solicitud , las propiedades del esquema también aparecen en la lista de contenido dinámico y están disponibles para su uso en el flujo de trabajo.

    Por ejemplo, en el campo Encabezados, utilice Content-Type como nombre de la llave y establezca el valor de la llave en application/json, mencionado anteriormente en este artículo. En el cuadro Cuerpo, puede abrir la lista de contenido dinámico y seleccionar la salida del cuerpo del desencadenador.

    Captura de pantalla que muestra Azure Portal, el flujo de trabajo de consumo y la información de la acción de respuesta.

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

    Captura de pantalla que muestra Azure Portal, el flujo de trabajo de consumo y los encabezados de acción de respuesta en la vista

  5. Si existen otros parámetros para la acción, abra la lista Parámetros avanzados y seleccione los parámetros que desee.

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

Pruebe el flujo de trabajo

Para desencadenar el flujo de trabajo, envíe una solicitud HTTP a la dirección URL generada para el desencadenador de Solicitud, incluido el método que espera el desencadenador de Solicitud mediante la herramienta de solicitud HTTP y sus instrucciones.

Para más información sobre la definición JSON subyacente del desencadenador y cómo llamar a este desencadenador, consulte estos artículos: Tipo de desencadenador de solicitud y Llamada, desencadenador o anidamiento de flujos de trabajo con puntos de conexión HTTP en Azure Logic Apps.

Seguridad y autenticación

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

Para 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),Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), exponga la aplicación lógica con Azure API Management o restrinja las direcciones IP que originan llamadas entrantes, consulte Acceso para llamadas entrantes a desencadenadores basados en solicitudes.