Conector de notificaciones Twilio - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conector de notificaciones Twilio

aviso

Este conector ha pasado a la fase de vida útil prolongada y AWS IoT Greengrass no lanzará actualizaciones que proporcionen funciones, mejoras de las funciones existentes, parches de seguridad o correcciones de errores. Para obtener más información, consulte AWS IoT Greengrass Version 1política de mantenimiento.

El conector de notificaciones Twilio realiza llamadas telefónicas automatizadas o envía mensajes de texto a través de Twilio. Puede utilizar este conector para enviar notificaciones en respuesta a los eventos en el grupo de Greengrass. Para llamadas telefónicas, el conector puede reenviar un mensaje de voz al destinatario.

Este conector recibe la información de mensaje de Twilio sobre un tema de MQTT y, a continuación, activa una notificación de Twilio.

nota

Para ver un tutorial que muestre cómo utilizar el conector de notificaciones Twilio, consulte Introducción a los conectores de Greengrass (consola) o Introducción a los conectores de Greengrass (CLI).

Este conector tiene las siguientes versiones.

Versión

ARN

5

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5

4

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4

3

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/3

2.

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/2

1

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/1

Para obtener información sobre los cambios de versión, consulte el Registro de cambios.

Requisitos

Este conector exige los siguientes requisitos:

Version 4 - 5
  • Software AWS IoT Greengrass Core versión 1.9.3 o posterior. AWS IoT Greengrass debe configurarse para admitir secretos locales, como se describe en los Requisitos de secretos.

    nota

    Este requisito incluye permitir el acceso a sus secretos de Secret Manager. Si utiliza el rol de servicio predeterminado de Greengrass, Greengrass tiene permiso para obtener los valores de los secretos cuyos nombres empiecen por greengrass-.

  • Python versión 3.7 o 3.8 instalado en el dispositivo principal y añadido a la variable de entorno PATH.

    nota

    Para usar Python 3.8, ejecute el siguiente comando para crear un enlace simbólico desde la carpeta de instalación predeterminada de Python 3.7 a los binarios de Python 3.8 instalados.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Esto configura su dispositivo para que cumpla con el requisito de Python para AWS IoT Greengrass.

  • Un SID de una cuenta de Twilio, un token de autenticación y un número de teléfono habilitado para Twilio. Después de crear un proyecto de Twilio, estos valores están disponibles en el panel del proyecto.

    nota

    Puede utilizar una cuenta de prueba de Twilio. Si utiliza una cuenta de prueba, debe añadir números de teléfono de destinatarios que no sean de Twilio a una lista de números de teléfono verificados. Para obtener más información, consulte Cómo trabajar con su cuenta de prueba gratuita de Twilio.

  • Un secreto de tipo de texto en AWS Secrets Manager que almacena el token de autenticación de Twilio. Para obtener más información, consulte Creación de un secreto básico en la Guía del usuario de AWS Secrets Manager.

    nota

    Para crear el secreto en la consola de Secrets Manager, introduzca su token en la pestaña Plaintext. No incluya comillas ni ningún otro formato. En la API, especifique el token como valor de la propiedad SecretString.

  • Se crea un recurso de secretos en el grupo de Greengrass que hace referencia al secreto de Secrets Manager. Para obtener más información, consulte Implementación de secretos en el núcleo de AWS IoT Greengrass.

Versions 1 - 3
  • AWS IoT Greengrass Software Core versión 1.7 o posterior. AWS IoT Greengrass debe configurarse para admitir secretos locales, como se describe en los Requisitos de secretos.

    nota

    Este requisito incluye permitir el acceso a sus secretos de Secret Manager. Si utiliza el rol de servicio predeterminado de Greengrass, Greengrass tiene permiso para obtener los valores de los secretos cuyos nombres empiecen por greengrass-.

  • Versión 2.7 de Python instalada en el dispositivo principal y añadida a la variable de entorno PATH.

  • Un SID de una cuenta de Twilio, un token de autenticación y un número de teléfono habilitado para Twilio. Después de crear un proyecto de Twilio, estos valores están disponibles en el panel del proyecto.

    nota

    Puede utilizar una cuenta de prueba de Twilio. Si utiliza una cuenta de prueba, debe añadir números de teléfono de destinatarios que no sean de Twilio a una lista de números de teléfono verificados. Para obtener más información, consulte Cómo trabajar con su cuenta de prueba gratuita de Twilio.

  • Un secreto de tipo de texto en AWS Secrets Manager que almacena el token de autenticación de Twilio. Para obtener más información, consulte Creación de un secreto básico en la Guía del usuario de AWS Secrets Manager.

    nota

    Para crear el secreto en la consola de Secrets Manager, introduzca su token en la pestaña Plaintext. No incluya comillas ni ningún otro formato. En la API, especifique el token como valor de la propiedad SecretString.

  • Se crea un recurso de secretos en el grupo de Greengrass que hace referencia al secreto de Secrets Manager. Para obtener más información, consulte Implementación de secretos en el núcleo de AWS IoT Greengrass.

Parámetros de conector

Este conector proporciona los siguientes parámetros:

Version 5
TWILIO_ACCOUNT_SID

El SID de cuenta de Twilio que se utiliza para invocar a la API de Twilio.

Nombre para mostrar en la consola AWS IoT: SID de la cuenta de Twilio

Obligatorio: true

Escriba: string

Patrón válido: .+

TwilioAuthTokenSecretArn

El ARN del secreto del Secrets Manager que almacena el token de autenticación de Twilio.

nota

Este se usa para obtener acceso al valor del secreto local en el núcleo.

Nombre para mostrar en la consola AWS IoT: ARN del secreto del token de autenticación de Twilio

Obligatorio: true

Escriba: string

Patrón válido: arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

El ID del recurso de secreto del grupo de Greengrass que hace referencia al secreto del token de autenticación de Twilio.

Nombre para mostrar en la consola AWS IoT: Recurso del token de autenticación de Twilio

Obligatorio: true

Escriba: string

Patrón válido: .+

DefaultFromPhoneNumber

El número de teléfono predeterminado habilitado para Twilio que Twilio utiliza para enviar mensajes. Twilio utiliza este número para iniciar el mensaje o la llamada.

  • Si no configura un número de teléfono predeterminado, debe especificar un número de teléfono en la propiedad from_number en el cuerpo del mensaje de entrada.

  • Si efectivamente configura un número de teléfono predeterminado, tiene la opción de anular el predeterminado especificando la propiedad from_number en el cuerpo del mensaje de entrada.

Nombre para mostrar en la consola AWS IoT: Predeterminado a partir del número de teléfono

Obligatorio: false

Escriba: string

Patrón válido: ^$|\+[0-9]+

IsolationMode

El modo de creación de contenedores para este conector. El valor predeterminado es GreengrassContainer, lo que significa que el conector se ejecuta en un entorno de tiempo de ejecución aislado dentro del contenedor de AWS IoT Greengrass.

nota

La configuración de creación de contenedores predeterminada para el grupo no se aplica a los conectores.

Nombre para mostrar en la consola AWS IoT: Modo de aislamiento en contenedores

Obligatorio: false

Escriba: string

Valores válidos: GreengrassContainer o NoContainer

Patrón válido: ^NoContainer$|^GreengrassContainer$

Version 1 - 4
TWILIO_ACCOUNT_SID

El SID de cuenta de Twilio que se utiliza para invocar a la API de Twilio.

Nombre para mostrar en la consola AWS IoT: SID de la cuenta de Twilio

Obligatorio: true

Escriba: string

Patrón válido: .+

TwilioAuthTokenSecretArn

El ARN del secreto del Secrets Manager que almacena el token de autenticación de Twilio.

nota

Este se usa para obtener acceso al valor del secreto local en el núcleo.

Nombre para mostrar en la consola AWS IoT: ARN del secreto del token de autenticación de Twilio

Obligatorio: true

Escriba: string

Patrón válido: arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

El ID del recurso de secreto del grupo de Greengrass que hace referencia al secreto del token de autenticación de Twilio.

Nombre para mostrar en la consola AWS IoT: Recurso del token de autenticación de Twilio

Obligatorio: true

Escriba: string

Patrón válido: .+

DefaultFromPhoneNumber

El número de teléfono predeterminado habilitado para Twilio que Twilio utiliza para enviar mensajes. Twilio utiliza este número para iniciar el mensaje o la llamada.

  • Si no configura un número de teléfono predeterminado, debe especificar un número de teléfono en la propiedad from_number en el cuerpo del mensaje de entrada.

  • Si efectivamente configura un número de teléfono predeterminado, tiene la opción de anular el predeterminado especificando la propiedad from_number en el cuerpo del mensaje de entrada.

Nombre para mostrar en la consola AWS IoT: Predeterminado a partir del número de teléfono

Obligatorio: false

Escriba: string

Patrón válido: ^$|\+[0-9]+

Ejemplo de creación de conector (AWS CLI)

El siguiente ejemplo de comando de la CLI crea un parámetro ConnectorDefinition con una versión inicial que contiene el conector de notificaciones Twilio.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyTwilioNotificationsConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5", "Parameters": { "TWILIO_ACCOUNT_SID": "abcd12345xyz", "TwilioAuthTokenSecretArn": "arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash", "TwilioAuthTokenSecretArn-ResourceId": "MyTwilioSecret", "DefaultFromPhoneNumber": "+19999999999", "IsolationMode" : "GreengrassContainer" } } ] }'

Para ver tutoriales que muestran cómo añadir el conector de notificaciones de Twilio a un grupo, consulte Introducción a los conectores de Greengrass (CLI) y Introducción a los conectores de Greengrass (consola).

Datos de entrada

Este conector acepta la información de mensaje de Twilio en dos temas de MQTT. Los mensajes de entrada deben tener un formato JSON válido.

  • La información del mensaje de texto en el tema twilio/txt.

  • La información del mensaje de teléfono en el tema twilio/call.

nota

La carga de mensajes de entrada puede incluir un mensaje de texto (message) o un mensaje de voz (voice_message_location), pero no ambos.

Filtro de temas: twilio/txt
Propiedades de mensajes
request

Información sobre la notificación de Twilio.

Obligatorio: true

Escriba: object que incluye las siguientes propiedades:

recipient

El destinatario del mensaje. Solo se admite un destinatario.

Obligatorio: true

Escriba: object que incluya las siguientes propiedades:

name

El nombre del destinatario.

Obligatorio: true

Escriba: string

Patrón válido: .*

phone_number

El número de teléfono del destinatario.

Obligatorio: true

Escriba: string

Patrón válido: \+[1-9]+

message

El contenido de texto del mensaje de texto. Solo los mensajes de texto se admiten en este tema. Para mensajes de voz, utilice twilio/call.

Obligatorio: true

Escriba: string

Patrón válido: .+

from_number

El número de teléfono del remitente. Twilio utiliza este número de teléfono para iniciar el mensaje. Esta propiedad es necesaria si el parámetro DefaultFromPhoneNumber no está configurado. Si DefaultFromPhoneNumber está configurado, puede utilizar esta propiedad para anular el valor predeterminado.

Obligatorio: false

Escriba: string

Patrón válido: \+[1-9]+

retries

El número de reintentos. El valor predeterminado es 0.

Obligatorio: false

Escriba: integer

id

Un ID arbitrario para la solicitud. Esta propiedad se usa para asignar una solicitud de entrada a una respuesta de salida.

Obligatorio: true

Escriba: string

Patrón válido: .+

Ejemplo de entrada
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "message": "Hello from the edge" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }
Filtro de temas: twilio/call
Propiedades de mensajes
request

Información sobre la notificación de Twilio.

Obligatorio: true

Escriba: object que incluya las siguientes propiedades:

recipient

El destinatario del mensaje. Solo se admite un destinatario.

Obligatorio: true

Escriba: object que incluya las siguientes propiedades:

name

El nombre del destinatario.

Obligatorio: true

Escriba: string

Patrón válido: .+

phone_number

El número de teléfono del destinatario.

Obligatorio: true

Escriba: string

Patrón válido: \+[1-9]+

voice_message_location

La URL del contenido de audio para el mensaje de voz. Esta debe estar en formato TwiML. Solo los mensajes de voz se admiten en este tema. Para mensajes de texto, utilice twilio/txt.

Obligatorio: true

Escriba: string

Patrón válido: .+

from_number

El número de teléfono del remitente. Twilio utiliza este número de teléfono para iniciar el mensaje. Esta propiedad es necesaria si el parámetro DefaultFromPhoneNumber no está configurado. Si DefaultFromPhoneNumber está configurado, puede utilizar esta propiedad para anular el valor predeterminado.

Obligatorio: false

Escriba: string

Patrón válido: \+[1-9]+

retries

El número de reintentos. El valor predeterminado es 0.

Obligatorio: false

Escriba: integer

id

Un ID arbitrario para la solicitud. Esta propiedad se usa para asignar una solicitud de entrada a una respuesta de salida.

Obligatorio: true

Escriba: string

Patrón válido: .+

Ejemplo de entrada
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "voice_message_location": "https://some-public-TwiML" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }

Datos de salida

Este conector publica información de estado como datos de salida en un tema MQTT.

Filtro de temas en la suscripción

twilio/message/status

Ejemplo de salida: Correcto
{ "response": { "status": "success", "payload": { "from_number": "+19999999999", "messages": { "message_status": "queued", "to_number": "+12345000000", "name": "Darla" } } }, "id": "request123" }
Ejemplo de salida: Error
{ "response": { "status": "fail", "error_message": "Recipient name cannot be None", "error": "InvalidParameter", "payload": None } }, "id": "request123" }

La propiedad payload en la salida es la respuesta de la API de Twilio al enviar el mensaje. Si el conector detecta que los datos de entrada no son válidos (por ejemplo, no especifica un campo de entrada requerido), el conector devuelve un error y establece el valor en None. A continuación se muestran cargas de ejemplo:

{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'undelivered' } }
{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'queued' } }

Ejemplo de uso

Utilice los siguientes pasos de alto nivel para configurar una función de Lambda de Python 3.7 de ejemplo que puede utilizar para probar el conector.

nota

Los temas Introducción a los conectores de Greengrass (consola) y Introducción a los conectores de Greengrass (CLI) contienen pasos de extremo a extremo que muestran cómo configurar, implementar y probar el conector de notificaciones de Twilio.

  1. Asegúrese de cumplir los requisitos para el conector.

  2. Cree y publique una función de Lambda que envíe datos de entrada al conector.

    Guarde el código de ejemplo como un archivo PY. Descargue y descomprima el SDK de AWS IoT Greengrass Core para Python. A continuación, cree un paquete zip que contenga el archivo PY y la carpeta greengrasssdk en el nivel raíz. Este paquete zip es el paquete de implementación que se carga en AWS Lambda.

    Después de crear la función de Lambda de Python 3.7, publique una versión de característica y cree un alias.

  3. Configuración del grupo de Greengrass.

    1. Agregue la función de Lambda por su alias (recomendado). Configure el ciclo de vida de Lambda como de larga duración (o "Pinned": true en la CLI).

    2. Agregue el recurso secreto requerido y conceda acceso de lectura a la función de Lambda.

    3. Agregue el conector y configure sus parámetros.

    4. Agregue suscripciones que permitan al conector recibir datos de entrada y enviar datos de salida en filtros de tema compatibles.

      • Establezca la función de Lambda como fuente, el conector como destino y utilice un filtro de tema de entrada compatible.

      • Establezca el conector como origen, AWS IoT Core como destino y utilice un filtro de tema de salida compatible. Utilice esta suscripción para ver los mensajes de estado en la consola de AWS IoT.

  4. Implemente el grupo.

  5. En la consola de AWS IoT, en la página Prueba suscríbase al tema de datos de salida para ver los mensajes de estado del conector. La función de Lambda de ejemplo es de larga duración y comienza a enviar mensajes inmediatamente después de implementar el grupo.

    Cuando haya terminado de probar, puede establecer el ciclo de vida de Lambda en Bajo demanda (o "Pinned": false en la CLI) e implementar el grupo. Esto impide que la función envíe mensajes.

Ejemplo

El siguiente ejemplo de función de Lambda envía un mensaje de entrada al conector. En este ejemplo, se activa un mensaje de texto.

import greengrasssdk import json iot_client = greengrasssdk.client('iot-data') TXT_INPUT_TOPIC = 'twilio/txt' CALL_INPUT_TOPIC = 'twilio/call' def publish_basic_message(): txt = { "request": { "recipient" : { "name": "Darla", "phone_number": "+12345000000", "message": 'Hello from the edge' }, "from_number" : "+19999999999" }, "id" : "request123" } print("Message To Publish: ", txt) client.publish(topic=TXT_INPUT_TOPIC, payload=json.dumps(txt)) publish_basic_message() def lambda_handler(event, context): return

Licencias

El conector de notificaciones Twilio incluye las siguientes licencias y software de terceros:

Este conector se publica bajo el contrato de licencia de software de Greengrass Core.

Registro de cambios

La siguiente tabla describe los cambios en cada versión del conector.

Versión

Cambios

5

Se ha agregado el parámetro IsolationMode para configurar el modo de creación de contenedores del conector.

4

Se actualizó el tiempo de ejecución de Lambda a Python 3.7, lo que cambia el requisito de tiempo de ejecución.

3

Se ha introducido una corrección para reducir el registro excesivo.

2

Pequeñas correcciones de errores y mejoras.

1

Versión inicial.

Un grupo de Greengrass solo puede contener una versión del conector a la vez. Para obtener información sobre cómo actualizar una versión de conector, consulte Actualización de versiones de los conectores.

Véase también