Usar un desencadenador de sondeo para Microsoft Power Automate

Un desencadenador de sondeo es básicamente un evento que realiza una llamada a su servicio periódicamente para buscar datos nuevos. Los desencadenadores de sondeo difieren de los webhooks en que un desencadenador de sondeo inicia un evento para determinar si hay nuevos datos disponibles, mientras que los webhooks responden a una inserción de datos nuevos del servicio. Una vez que el flujo determina que hay nuevos datos disponibles, puede realizar una acción con esos datos. En este tutorial se muestra cómo usar un desencadenador de sondeo para recuperar datos nuevos de forma proactiva.

Requisitos previos

Funcionamiento de los desencadenadores de sondeo

En primer lugar, un desencadenador de sondeo establece un estado y, a continuación, comprueba periódicamente si hay actualizaciones durante un intervalo. A continuación, el desencadenador solicita todos los datos nuevos desde la última actualización de estado. Además, el desencadenador también mantiene el contexto de estado entre las solicitudes.

En el ejemplo siguiente se proporciona información general básica sobre cómo un desencadenador de sondeo adquiere nuevos datos.

Adquisición de datos de los desencadenadores de sondeo

  1. El tiempo de ejecución de flujo invoca una llamada inicial en el desencadenador a la API del conector.

  2. A continuación, el conector llamará al servicio back-end.

  3. A continuación, el servicio back-end devuelve todos los datos actuales al conector.

  4. A su vez, el conector devuelve un mensaje 202 Aceptado, un intervalo de reintento y un encabezado de ubicación que incluye el estado actual. El intervalo de reintento es en segundos. Esta primera llamada se utiliza siempre para establecer el estado preliminar de los datos.

  5. Una vez que el intervalo de reintento ha agotado el tiempo de espera, el tiempo de ejecución de flujo realiza otra llamada al conector utilizando el encabezado de ubicación y el estado actual, que en este ejemplo es igual a 1.

  6. Dado que este estado es ahora igual a 1, el conector ya sabe llamar a la API correcta que realizará el filtrado adecuado para que se devuelva el conjunto de datos correcto. En este ejemplo, el conector lo traduce a una consulta filtrada que indica que la fecha de creación es mayor que una marca de tiempo determinada.

  7. En este ejemplo, no hay datos nuevos desde la fecha de creación, por lo que se devuelve un conjunto vacío de valores al conector.

  8. A continuación, el conector devuelve un mensaje 202 Aceptado, un intervalo de reintento y un encabezado de ubicación en el que no ha cambiado el estado.

  9. Una vez que el intervalo de reintento vuelve a agotar el tiempo de espera, el tiempo de ejecución de flujo realiza otra llamada al conector con el mismo encabezado de ubicación y estado.

  10. De nuevo, el conector realiza el filtrado adecuado utilizando la fecha de creación.

  11. Esta vez, los nuevos datos están disponibles desde la fecha de creación, por lo que el back-end devuelve los valores de todos los datos nuevos al conector.

  12. A continuación, el conector devuelve un mensaje 200 Correcto, un intervalo de reintento, la ubicación con un nuevo valor de estado y una matriz de valores que contiene todos los datos nuevos disponibles después de la fecha de creación. En este punto, se iniciará el flujo.

Creación de desencadenadores de sondeo en la interfaz de usuario

En esta sección se muestra cómo crear un desencadenador de sondeo en la interfaz de usuario de Power Automate. En este procedimiento, se usará el servicio TripPin de ejemplo como punto de partida. El servicio TripPin es una API REST muy simple que contiene una lista de personas y los viajes que han realizado.

Para usar el servicio TripPin, primero deberá crear dinámicamente las direcciones URL requeridas para el servicio. Escriba https://services.odata.org/TripPinRESTierService en la barra de direcciones del explorador. Esto devolverá los metadatos necesarios para esta demostración. Copie y guarde los metadatos en un archivo para su uso posterior.

Para configurar el servicio TripPin y crear el desencadenador de sondeo:

  1. En Power Automate, seleccione la pestaña Datos > Conectores personalizados.

  2. En el panel Conectores personalizados, seleccione Nuevo conector personalizado y, a continuación, Crear desde cero.

  3. En el cuadro de diálogo Crear un conector personalizado, escriba el nombre del conector personalizado (en este ejemplo, puede usar Prueba de sondeo) y, a continuación, seleccione Continuar.

  4. En la página General, especifique una descripción y un host. En este ejemplo, usará la dirección URL services.odata.org que se devolvió en los metadatos de TripPin como host.

    Parámetro Value
    Descripción "TripPin is an example travel website."
    Host "services.odata.org"

    Adición de descripción y host

  5. En la página Seguridad, seleccione Sin autenticación como tipo de autenticación.

    Autenticación de sondeo

  6. En la página Definición, elija + Nuevo disparador y complete la descripción del desencadenador. En este ejemplo, creará un desencadenador que se activará cuando se agregue un nuevo viaje al itinerario de una persona.

    Creación de un nuevo desencadenador

    Parámetro Value
    Resumen "Se desencadena cuando se agrega un nuevo viaje"
    Descripción "Se desencadena cuando se agrega un nuevo viaje"
    Id. de operación "OnNewTrip"
    Visibilidad "ninguno" (consulte la siguiente lista para ver más información)
    Tipo de desencadenador "Polling"

    La propiedad Visibilidad para operaciones y parámetros en un flujo tiene las siguientes opciones:

    • ninguna : se muestra normalmente en el flujo
    • avanzada: oculta en un menú adicional
    • interna: oculta al usuario
    • Importante: se muestra siempre primero al usuario
  7. El área Solicitud muestra información basada en la solicitud HTTP de la acción. elija Importar desde ejemplo.

    Página Definición: importar desde ejemplo

  8. En el panel Importar desde ejemplo, definirá la solicitud para el desencadenador de sondeo. Para el verbo, seleccione GET. De los metadatos que ha recibido al crear dinámicamente las direcciones URL necesarias para el servicio, copie la dirección URL de los metadatos en URL en el panel Importar desde ejemplo. Después de la dirección, agregue /People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc. Por ejemplo:

    https://services.odata.org/TripPinRESTierService/(S(<service number>))/People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc

    Nota

    Asegúrese de usar el número real de los metadatos en lugar de <service number> en la dirección URL.

    En esta dirección URL de ejemplo, está creando una solicitud para una persona individual y {Person} es una variable de tiempo de ejecución que un usuario puede especificar en el flujo. A continuación, especificará que desea obtener los viajes para la persona determinada que el usuario especifica.

    Sin embargo, no desea obtener todos los viajes; solo aquellos viajes que son nuevos desde la última vez que se sondearon. La expresión $filter=TripId gt 0 obtiene los nuevos viajes devolviendo los valores de TripId de todos los viajes que sean mayores que los valores de TripId sondeados anteriormente. El número 0 que se usa aquí se actualizará automáticamente cada vez que se produzca un desencadenador de sondeo.

    Además, la expresión $orderby=TripId desc indica que el orden de los datos se devuelve como TripId en orden descendente. El desencadenador requiere que se devuelvan en orden descendente. Es decir, los resultados devueltos por el servicio back-end deben ordenarse inversamente en el parámetro del desencadenador para que el parámetro más reciente (como TripId en este ejemplo) sea el primer valor devuelto en la matriz de datos.

    Importación desde el menú de ejemplo

    Seleccione el botón Importar para importar los datos de ejemplo. El área de solicitud muestra ahora el verbo, la dirección URL, la ruta de acceso y los parámetros de consulta.

  9. En el área de solicitud, seleccione el parámetro de consulta $filter y, a continuación, elija Editar para abrir el cuadro de diálogo Parámetro.

    Edición del parámetro filter

  10. En el cuadro de diálogo Parámetro de $filter, establezca la selección de Visibilidad en interno. Este parámetro solo lo usa internamente el conector, lo que impide que el usuario realice cambios. Para más información sobre la configuración de visibilidad, consulte la extensión x-ms-visibility de OpenAPI.

    Seleccione Atrás para volver al área de solicitud.

    Edición del parámetro filter

  11. En el área de solicitud, seleccione el parámetro de consulta $orderby y, a continuación, elija Editar para abrir el cuadro de diálogo Parámetro.

  12. En el cuadro de diálogo Parámetro de $orderby, establezca la selección de ¿Es obligatorio? en y la selección de Visibilidad en interno. De nuevo, estos ajustes impedirá que el usuario realice cambios en este parámetro.

    Además, escriba TripId desc como valor en el cuadro Valor predeterminado. Estos ajustes garantizará que los resultados se proporcionan en orden inverso.

    Seleccione Atrás para volver al área anterior.

    Edición del parámetro orderby

  13. El área Respuesta muestra información basada en la respuesta HTTP de la acción. Seleccione Agregar respuesta predeterminada.

    Adición de respuesta de sondeo predeterminada

  14. Defina la respuesta para el desencadenador de sondeo y, a continuación, elija Importar. Use el ejemplo que se proporciona a continuación para el cuerpo de respuesta, que generará automáticamente un esquema para la respuesta.

    Adición del cuerpo de respuesta de sondeo

    
    {
        "@odata.context":"https://services.odata.org/TripPinRESTierService/(S(<service number>))/$metadata#Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Trip)",
        "value":[
            {
                "TripId":2,
                "ShareId":"9ce142c3-5fd6-4a71-848e-220ebf1e9f3",
                "Name":"Honeymoon",
                "Budget":2650,
                "Description":"Happy honeymoon trip",
                "Tags":[
                    "Travel",
                    "honeymoon"
                ],
                "StartsAt":"2014-02-01T00:00:00Z",
                "EndsAt":"2014-02-04T00:00:00Z"
            },
            {
                "TripId":1,
                "ShareId":"f94e9116-8bdd-4dac-ab61-08438d0d9a71",
                "Name":"Trip in Beijing",
                "Budget":2000,
                "Description":"Trip from Shanghai to Beijing",
                "Tags":[
                    "Travel",
                    "Beijing"
                ],
                "StartsAt":"2014-02-01T00:00:00Z",
                "EndsAt":"2014-02-04T00:00:00Z"
            }
        ]
    }   
    

    Nota

    Asegúrese de usar el número real de los metadatos en lugar de <service number> en la dirección URL.

  15. En el área Configuración de desencadenador, seleccione el parámetro que se usa para supervisar el cambio de estado de TripPin. En este ejemplo, el parámetro que se especifica es $filter.

    En este ejemplo, use la siguiente expresión en Especifique el valor que se va a pasar al parámetro de consulta seleccionado:

    TripId gt @{triggerBody().value[0].TripId}

    Esta expresión se utiliza para obtener los resultados más recientes cada vez que se ejecuta el desencadenador. En la expresión que está usando aquí, cuando TripId es mayor que el valor devuelto por el resto de la expresión, se ejecutará el desencadenador. Si TripId no es mayor que el valor devuelto por el resto de la expresión, no se producirá ningún desencadenador.

    En la selección Seleccione la colección que contiene los datos del desencadenador, elija @triggerBody().value. Esta es la matriz que contiene los datos del desencadenador devueltos por el servicio back-end.

    Configuración del desencadenador de sondeo

  16. En la parte superior del asistente, haga clic en Crear conector.

Uso del desencadenador de sondeo

Ahora que ya se ha configurado todo, puede utilizar el desencadenador de sondeo en un flujo. En esta sección, creará un flujo que sondeará el servicio back-end en busca de cambios cada vez que se registre un nuevo viaje para una persona determinada.

  1. En flow.microsoft.com, en el lado izquierdo de la página, elija Crear.

  2. En Iniciar desde cero, seleccione Flujo instantáneo.

  3. En el cuadro de diálogo Crear un flujo instantáneo, seleccione el botón Omitir.

  4. En el cuadro de búsqueda, escriba desencadenadores cuando se agrega un nuevo viaje.

    Captura de pantalla que muestra el texto de búsqueda en el cuadro de búsqueda.

    Elija el elemento de la lista para usarlo como un desencadenador.

  5. En el cuadro de flujo Persona, escriba russellwhyte para la persona cuyos viajes se van a examinar y, a continuación, seleccione + Nuevo paso.

    Captura de pantalla que muestra el cuadro Persona y el botón Nuevo paso.

  6. En el cuadro de diálogo Elegir una acción, seleccione la pestaña Integrada y, a continuación, Fecha y hora.

    Captura de pantalla que muestra el diálogo Elegir una acción.

  7. En Fecha y hora, seleccione Hora actual.

    Captura de pantalla que muestra el botón Hora actual.

  8. Seleccione Guardar para guardar el nuevo flujo.

Comprobación y solución de problemas

Para comprobar que todo está configurado correctamente, elija Mis flujosy, después, elija el se desencadena cuando se agrega un nuevo viaje: > tiempo actual flujo para ver el historial de ejecuciones. Dado que aún no se ha ejecutado el flujo, no debería aparecer nada en el historial.

Para probar el flujo, deberá abrir la aplicación Postman para agregar nuevos datos a TripPin.

  1. En Postman, seleccione el icono + junto a la pestaña Launchpad.

  2. En la solicitud sin título, seleccione POST en el cuadro desplegable de la izquierda y, a continuación, escriba la siguiente dirección en el cuadro Escribir la dirección URL de la solicitud:

    https://services.odata.org/TripPinRESTierService/(S(<Service number))/People('russellwhyte')/Trips

    Nota

    Asegúrese de usar el número real de los metadatos en lugar de <service number> en la dirección URL.

  3. En la solicitud POST, seleccione la pestaña Cuerpo y, a continuación, elija sin formato. En la lista desplegable situada a la derecha de sin formato, seleccione JSON.

  4. En el cuadro de texto, escriba el texto siguiente:

    {
         "TripId": 190,
         "ShareId": "9d9b2fa0-efbf-490e-a5e3-bac8f7d47354",
         "Name": "Trip in US",
         "Budget": 5000,
         "Description": "Trip from San Francisco to New York City",
         "Tags": [
             "business",
             "New York meeting"
         ],
         "StartsAt": "2014-01-01T00:00:00Z",
         "EndsAt": "2014-01-04T00:00:00Z"
    }
    
  5. Seleccione Enviar para enviar el mensaje POST al sitio de TripPin.

    Envío del mensaje POST

    La respuesta debería devolverse con el estado 201 Created.

Ahora, cuando abra Mis flujos, elija el se desencadena cuando se agrega un nuevo viaje: > hora actual flujo, verá en el historial de ejecución que se ha producido un desencadenador.

Se ha producido un desencadenador

Nota

Si ejecuta otra solicitud POST en Postman para la misma persona, deberá cambiar el valor de TripId en el cuerpo JSON. De lo contrario, se producirá un error de conflicto 409.

Resumen

Si todo está configurado correctamente, ahora recibirá notificaciones de Microsoft Power Automate siempre que se agregue un nuevo viaje a TripPin.

Pasos siguientes

Proporcionar comentarios

Agradecemos enormemente los comentarios sobre problemas con nuestra plataforma de conectores o nuevas ideas de características. Para enviar comentarios, vaya a Enviar problemas u obtener ayuda con los conectores y seleccione el tipo de comentario.