Tutorial: Envío de notificaciones por correo electrónico sobre eventos de Azure IoT Hub mediante Event Grid y Logic Apps

Azure Event Grid permite reaccionar a los eventos en IoT Hub mediante el desencadenamiento de acciones en las aplicaciones empresariales de bajada.

En este artículo se ofrece orientación mediante una configuración de ejemplo que usa IoT Hub y Event Grid. Al final, tendrá una aplicación lógica de Azure configurada para enviar una notificación por correo electrónico cada vez que un dispositivo se conecta o se desconecta del centro de IoT. Se puede utilizar Event Grid para recibir notificaciones puntuales sobre la desconexión de los dispositivos críticos. Las métricas y diagnósticos pueden tardar varios minutos (por ejemplo, 20 minutos o más) en aparecer en registros o alertas. Los tiempos de procesamiento más largos pueden ser inaceptables para una infraestructura crítica.

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

  • Una cuenta de correo electrónico de cualquier proveedor de correo electrónico que sea compatible con Azure Logic Apps, como Office 365 Outlook u Outlook.com. Esta cuenta de correo electrónico se usa para enviar las notificaciones de eventos.

Creación de un centro de IoT

Puede crear rápidamente un nuevo centro de IoT mediante el terminal de Azure Cloud Shell en el portal.

  1. Inicie sesión en Azure Portal.

  2. En la parte superior derecha de la página, seleccione el botón Cloud Shell.

    Screenshot of how to open the Azure Cloud Shell from the Azure portal.

  3. Ejecute el comando siguiente para crear un nuevo grupo de recursos:

    az group create --name {your resource group name} --location westus
    
  4. Ejecute el comando siguiente para crear un centro de IoT:

    az iot hub create --name {your iot hub name} --resource-group {your resource group name} --sku S1 
    
  5. Minimice el terminal de Cloud Shell. Volverá al shell más adelante en el tutorial.

Creación de una aplicación lógica

A continuación, cree una aplicación lógica y agregue un desencadenador HTTP de Event Grid que procese las solicitudes de IoT Hub.

Creación de un recurso de aplicación lógica

  1. En Azure Portal, seleccione Crear un recurso y, a continuación, escriba "aplicación lógica" en el cuadro de búsqueda y presione Entrar. Seleccione Aplicación lógica en los resultados.

    Screenshot of how to select the logic app from a list of resources.

  2. En la pantalla siguiente, seleccione Crear.

  3. Asigne un nombre único a la aplicación lógica en su suscripción; después, seleccione la misma suscripción, el grupo de recursos y la ubicación en que se encuentra la instancia de IoT Hub. Elija el tipo de plan de Consumo.

    Screenshot of how to configure your logic app.

  4. Seleccione Revisar + crear.

  5. Compruebe la configuración y, a continuación, seleccione Crear.

  6. Cuando se cree el nuevo recurso, seleccione Ir al recurso.

  7. En el diseñador de aplicaciones lógicas, desplácese hacia abajo para ver Plantillas. Elija Aplicación lógica en blanco para que pueda crear la aplicación lógica desde el principio.

    Screenshot of the Logic App Designer templates.

Selección de un desencadenador

Un desencadenador es un evento específico que inicia la aplicación lógica. Para este tutorial, el desencadenador que activa el flujo de trabajo recibe una solicitud a través de HTTP.

  1. En la barra de búsqueda de conectores y desencadenadores, escriba HTTP.

  2. Desplácese por los resultados y seleccione Solicitud: Cuando se recibe una solicitud HTTP como desencadenador.

    Select HTTP request trigger

  3. Seleccione Utilizar la carga útil de muestra para generar el esquema.

    Use sample payload

  4. Copie el json siguiente y reemplace los valores <> de marcador de posición por los suyos propios.

  5. Pegue el código JSON del esquema del evento dispositivo conectado en el cuadro de texto y, después, seleccione Listo:

      [{  
       "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
       "topic": "/SUBSCRIPTIONS/<azure subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
       "subject": "devices/LogicAppTestDevice",
       "eventType": "Microsoft.Devices.DeviceConnected",
       "eventTime": "2018-06-02T19:17:44.4383997Z",
       "data": {
           "deviceConnectionStateEventInfo": {
             "sequenceNumber":
               "000000000000000001D4132452F67CE200000002000000000000000000000001"
           },
         "hubName": "<hub name>",
         "deviceId": "LogicAppTestDevice",
         "moduleId" : "DeviceModuleID"
       }, 
       "dataVersion": "1",
       "metadataVersion": "1"
     }]
    

    Importante

    Asegúrese de pegar el fragmento de código JSON en el cuadro proporcionado por el vínculo Usar carga de ejemplo para generar el esquema y no directamente en el cuadro Esquema JSON del cuerpo de la solicitud. El vínculo de carga de ejemplo proporciona una manera de generar el contenido JSON basado en el fragmento de código JSON. El JSON final que termina en el cuerpo de la solicitud es diferente al fragmento de código JSON.

    este evento se publica cuando un dispositivo se conecta a un centro de IoT.

Nota

Puede recibir una notificación emergente que indique: Recuerde incluir un encabezado Content-Type establecido en application/json en la solicitud. Puede ignorar esta sugerencia sin ningún problema y pasar a la sección siguiente.

Creación de una acción

Las acciones son los pasos que se producen después de que el desencadenador inicia el flujo de trabajo de la aplicación lógica. En este tutorial, la acción consiste en enviar una notificación por correo electrónico desde su proveedor de correo electrónico.

  1. Seleccione Nuevo paso. Aparece una ventana que le pide que elija una acción.

  2. Busque Outlook.

  3. En función de su proveedor de correo electrónico, busque y seleccione el conector correspondiente. Este tutorial usa Outlook.com. Los pasos para otros proveedores de correo electrónico son similares. Como alternativa, use Office 365 Outlook para omitir el paso de inicio de sesión.

    Select email provider connector

  4. Seleccione la acción Enviar correo electrónico (V2).

  5. Seleccione Iniciar sesión e inicie sesión en su cuenta de correo electrónico. Seleccione para permitir que la aplicación acceda a su información.

  6. Compile su plantilla de correo electrónico.

    • Para: escriba la dirección de correo electrónico para recibir los correos electrónicos de notificación. En este tutorial, use una cuenta de correo electrónico a la que pueda acceder para realizar pruebas.

    • Firmante: Rellene el texto del asunto. Al hacer clic en el cuadro de texto Asunto, puede seleccionar contenido dinámico para incluirlo. Por ejemplo, en este tutorial se usa IoT Hub alert: {eventType}. Si no puede ver Contenido dinámico, seleccione el hipervínculo Agregar contenido dinámico para activar o desactivar la vista de Contenido dinámico.

    Después de seleccionar eventType, verá la salida del formulario de correo electrónico hasta ahora. Seleccione Enviar y enviar correo electrónico (V2) para editar el cuerpo del correo electrónico.

    Screenshot of the condensed body output form.

    • Cuerpo: escriba el texto del correo electrónico. Seleccione las propiedades JSON de la herramienta del selector para incluir contenido dinámico basado en los datos de los eventos. Si no puede ver el contenido dinámico, seleccione el hipervínculo Agregar contenido dinámico situado en el cuadro de texto Cuerpo. Si no aparecen los campos que desea, haga clic en el signo más en la pantalla Contenido dinámico para que se incluyan los campos de la acción anterior.

    La plantilla de correo electrónico puede tener un aspecto similar al de este ejemplo:

    Screenshot of how to create an event email in the template.

  7. Seleccione Guardar en el Diseñador de aplicaciones lógicas.

Copia de la dirección URL HTTP

Antes de cerrar el Diseñador de aplicaciones lógicas, copie la dirección URL en la que se realizan las escuchas de un desencadenador de aplicación lógica. Use esta dirección URL para configurar Event Grid.

  1. Haga clic en el cuadro de configuración del desencadenador Cuando se recibe una solicitud HTTP para expandirlo.

  2. Seleccione el botón de copia que se encuentra junto al valor Dirección URL de HTTP POST para copiarlo.

    Copy the HTTP POST URL

  3. Guarde esta dirección URL para poder hacer referencia a ella en la siguiente sección.

Configurar la suscripción de eventos de IoT Hub

En esta sección, va a configurar IoT Hube para publicar eventos cuando se produzcan.

  1. En Azure Portal, vaya hasta el centro de IoT. Para encontrar el centro de IoT, seleccione IoT Hub en el panel de Azure y, después, seleccione la instancia de IoT Hub en la lista de recursos.

  2. Seleccione Eventos.

    Open the Event Grid details

  3. Seleccione Suscripción de eventos.

    Create new event subscription

  4. Cree la suscripción de eventos con los siguientes valores:

    1. En la sección Detalles de suscripciones de eventos:

      1. Especifique un nombre para la suscripción de eventos.
      2. Seleccione Esquema de Event Grid en Esquema de eventos.
    2. En la sección Detalles del tema:

      1. Confirme que en Tipo de tema está seleccionado IoT Hub.
      2. Confirme que el nombre del centro de IoT se establece como valor del campo Recurso de origen.
      3. Escriba el nombre del tema del sistema que se creará. Para obtener información acerca de los temas del sistema, consulte Introducción a los temas del sistema.
    3. En la sección Tipos de evento:

      1. Seleccione el desplegable Filtro para tipos de evento.

      2. Desactive las casillas Dispositivo creado y Dispositivo eliminado, y deje activadas solo las casillas Dispositivo conectado y Dispositivo desconectado.

        select subscription event types

    4. En la sección Detalles del punto de conexión:

      1. En Tipo de punto de conexión, seleccione Webhook.
      2. Haga clic en Seleccionar punto de conexión y pegue la dirección URL que copió de la aplicación lógica y confirme la selección.

      select endpoint url

      Cuando termine, el panel debería tener el mismo aspecto que el ejemplo siguiente:

      Screenshot of your 'Create Event Subscription' page in the Azure portal.

  5. Seleccione Crear.

Simulación de la conexión de un nuevo dispositivo y del envío de datos de telemetría

Pruebe la aplicación lógica mediante la simulación rápida de una conexión de dispositivo mediante la CLI de Azure.

  1. Seleccione el botón Cloud Shell para volver a abrir el terminal.

  2. Ejecute el siguiente comando para crear una identidad de dispositivo simulado:

    az iot hub device-identity create --device-id simDevice --hub-name {YourIoTHubName}
    

    El procesamiento puede tardar un minuto. Verá una impresión JSON en la consola una vez creada.

  3. Ejecute el siguiente comando para simular la conexión del dispositivo a IoT Hub y el envío de datos de telemetría:

    az iot device simulate -d simDevice -n {YourIoTHubName}
    
  4. Cuando el dispositivo simulado se conecte a IoT Hub, recibirá un correo electrónico que le notificará el evento "DeviceConnected".

  5. Cuando finalice la simulación, recibirá un correo electrónico que le notificará el evento "DeviceDisconnected".

    Screenshot of the email you should receive.

Limpieza de recursos

En este tutorial se usaron recursos que generan gastos en su suscripción de Azure. Cuando haya terminado de probar el tutorial y los resultados de las pruebas, deshabilite o elimine los recursos que no desea conservar.

Para eliminar todos los recursos que ha creado en este tutorial, elimine el grupo de recursos.

  1. Seleccione Grupos de recursos y, luego, el grupo de recursos que creó para este tutorial.

  2. En la página del grupo de recursos, seleccione Eliminar grupo de recursos. Se le pedirá que escriba el nombre del grupo de recursos y podrá eliminarlo. También se quitarán todos los recursos que contiene.

Pasos siguientes

Dispone de una lista completa de los conectores de Logic Apps admitidos en el artículo