Connecteur Twilio Notifications - AWS IoT Greengrass

AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connecteur Twilio Notifications

Avertissement

Ce connecteur a été déplacé dans lePhase de vie, etAWS IoT Greengrassne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations à des fonctionnalités existantes, des correctifs de sécurité ou des corrections de bogues. Pour plus d'informations, consultez AWS IoT Greengrass Version 1politique de maintenance.

Les notifications Twilioconnecteurfait des appels téléphoniques automatisés ou envoie des SMS via Twilio. Vous pouvez utiliser ce connecteur pour envoyer des notifications en réponse à des événements dans le groupe Greengrass. Pour les appels téléphoniques, le connecteur peut transmettre un message vocal au destinataire.

Ce connecteur reçoit les informations du message Twilio dans une rubrique MQTT, puis déclenche une notification Twilio.

Note

Pour obtenir un didacticiel qui montre comment utiliser le connecteur Twilio Notifications, consultezMise en route avec les connecteurs Greengrass (console)ouDémarrage avec les connecteurs Greengrass (CLI).

Ce connecteur a les versions suivantes.

Version

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

Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le Journal des modifications.

Prérequis

Ce connecteur possède les critères suivants :

Version 4 - 5
  • AWS IoT GreengrassLogiciel Core 1.9.3 ou version ultérieure.AWS IoT Greengrassdoit être configuré pour prendre en charge les secrets locaux, comme décrit dansExigences relatives aux secrets.

    Note

    Cette exigence inclut l'autorisation d'accès à vos secrets Secrets Manager. Si vous utilisez le rôle de service Greengrass par défaut, Greengrass possède l'autorisation d'obtenir les valeurs des secrets dont les noms commencent pargreengrass..

  • Pythonversion 3.7 ou 3.8 installée sur l'appareil principal et ajoutée à la variable d'environnement PATH.

    Note

    Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique entre le dossier d'installation de Python 3.7 par défaut et les binaires Python 3.8 installés.

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

    Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.

  • Un SID de compte Twilio, un jeton d'authentification et un numéro de téléphone Twilio. Une fois que vous avez créé un projet Twilio, ces valeurs sont disponibles sur le tableau de bord du projet.

    Note

    Vous pouvez utiliser un compte d'essai Twilio. Si vous utilisez un compte d'essai, vous devez ajouter des numéros de téléphone qui ne sont pas des destinataires Twilio à une liste de numéros de téléphone vérifiés. Pour de plus amples informations, veuillez consulterComment utiliser votre compte d'essai Twilio gratuit.

  • Un secret de type texte dans AWS Secrets Manager qui stocke le jeton d'authentification Twilio. Pour de plus amples informations, veuillez consulterCréation d'un secret basiquedans leAWS Secrets ManagerGuide de l'utilisateur.

    Note

    Pour créer le secret dans la console Secrets Manager, entrez votre token sur letexte brutOnglet ats N'incluez pas de guillemets ni d'autres mises en forme Dans l'API, spécifiez le jeton en tant que valeur pourSecretStringpropriété.

  • Une ressource du secret dans le groupe Greengrass qui référence le secret du Secrets Manager. Pour plus d'informations, consultez Déployer des secrets sur AWS IoT Greengrass Core.

Versions 1 - 3
  • AWS IoT GreengrassLogiciel Core v1.7 ou version ultérieure.AWS IoT Greengrassdoit être configuré pour prendre en charge les secrets locaux, comme décrit dansExigences relatives aux secrets.

    Note

    Cette exigence inclut l'autorisation d'accès à vos secrets Secrets Manager. Si vous utilisez le rôle de service Greengrass par défaut, Greengrass possède l'autorisation d'obtenir les valeurs des secrets dont les noms commencent pargreengrass..

  • Pythonversion 2.7 installée sur l'appareil principal et ajoutée à la variable d'environnement PATH.

  • Un SID de compte Twilio, un jeton d'authentification et un numéro de téléphone Twilio. Une fois que vous avez créé un projet Twilio, ces valeurs sont disponibles sur le tableau de bord du projet.

    Note

    Vous pouvez utiliser un compte d'essai Twilio. Si vous utilisez un compte d'essai, vous devez ajouter des numéros de téléphone qui ne sont pas des destinataires Twilio à une liste de numéros de téléphone vérifiés. Pour de plus amples informations, veuillez consulterComment utiliser votre compte d'essai Twilio gratuit.

  • Un secret de type texte dans AWS Secrets Manager qui stocke le jeton d'authentification Twilio. Pour de plus amples informations, veuillez consulterCréation d'un secret basiquedans leAWS Secrets ManagerGuide de l'utilisateur.

    Note

    Pour créer le secret dans la console Secrets Manager, entrez votre token sur letexte brutOnglet ats N'incluez pas de guillemets ni d'autres mises en forme Dans l'API, spécifiez le jeton en tant que valeur pourSecretStringpropriété.

  • Une ressource du secret dans le groupe Greengrass qui référence le secret du Secrets Manager. Pour plus d'informations, consultez Déployer des secrets sur AWS IoT Greengrass Core.

Paramètres du connecteur

Ce connecteur fournit les paramètres suivants :

Version 5
TWILIO_ACCOUNT_SID

Le SID du compte Twilio qui est utilisé pour appeler l'API Twilio.

Nom d'affichage dans événementAWS IoTConsole  : ACCOUNT du compte Twilio

Obligatoire :true

Type: string

Modèle de Modèle :.+

TwilioAuthTokenSecretArn

L'ARN du secret Secrets Manager qui stocke le jeton d'authentification Twilio.

Note

Il est utilisé pour accéder à la valeur du secret local sur le noyau.

Nom d'affichage dans événementAWS IoTConsole  : ARN du secret du jeton d'authentification Twilio

Obligatoire :true

Type: string

Modèle de Modèle :arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

L'ID de la ressource du secret dans le groupe Greengrass qui référence le secret du jeton d'authentification Twilio.

Nom d'affichage dans événementAWS IoTConsole  : Ressource du jeton d'authentification Twilio

Obligatoire :true

Type: string

Modèle de Modèle :.+

DefaultFromPhoneNumber

Le numéro de téléphone activé par Twilio que Twilio utilise pour envoyer des messages. Twilio utilise ce numéro pour initier le texte ou l'appel.

  • Si vous ne configurez pas un numéro de téléphone par défaut, vous devez spécifier un numéro de téléphone dans la propriété from_number dans le corps du message d'entrée.

  • Si vous configurez un numéro de téléphone par défaut, vous pouvez, si vous le souhaitez, remplacer le numéro par défaut en spécifiant la propriété from_number dans le corps du message d'entrée.

Nom d'affichage dans événementAWS IoTConsole  : À partir de numéro de téléphone

Obligatoire :false

Type: string

Modèle de Modèle :^$|\+[0-9]+

IsolationMode

Mode conteneurisation de ce connecteur. La valeur par défaut est GreengrassContainer, ce qui signifie que le connecteur s'exécute dans un environnement d'exécution isolé à l'intérieur du conteneur AWS IoT Greengrass.

Note

Le paramètre de conteneurisation par défaut pour le groupe ne s'applique pas aux connecteurs.

Nom d'affichage dans événementAWS IoTConsole  : Mode d'isolation du conteneur

Obligatoire :false

Type: string

Valeurs valides : GreengrassContainer ou NoContainer

Modèle de Modèle :^NoContainer$|^GreengrassContainer$

Version 1 - 4
TWILIO_ACCOUNT_SID

Le SID du compte Twilio qui est utilisé pour appeler l'API Twilio.

Nom d'affichage dans événementAWS IoTConsole  : ACCOUNT du compte Twilio

Obligatoire :true

Type: string

Modèle de Modèle :.+

TwilioAuthTokenSecretArn

L'ARN du secret Secrets Manager qui stocke le jeton d'authentification Twilio.

Note

Il est utilisé pour accéder à la valeur du secret local sur le noyau.

Nom d'affichage dans laAWS IoTConsole  : ARN du secret du jeton d'authentification Twilio

Obligatoire :true

Type: string

Modèle de Modèle :arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

L'ID de la ressource du secret dans le groupe Greengrass qui référence le secret du jeton d'authentification Twilio.

Nom d'affichage dans laAWS IoTConsole  : Ressource du jeton d'authentification Twilio

Obligatoire :true

Type: string

Modèle de Modèle :.+

DefaultFromPhoneNumber

Le numéro de téléphone activé par Twilio que Twilio utilise pour envoyer des messages. Twilio utilise ce numéro pour initier le texte ou l'appel.

  • Si vous ne configurez pas un numéro de téléphone par défaut, vous devez spécifier un numéro de téléphone dans la propriété from_number dans le corps du message d'entrée.

  • Si vous configurez un numéro de téléphone par défaut, vous pouvez, si vous le souhaitez, remplacer le numéro par défaut en spécifiant la propriété from_number dans le corps du message d'entrée.

Nom d'affichage dans événementAWS IoTConsole  : À partir de numéro de téléphone

Obligatoire :false

Type: string

Modèle de Modèle :^$|\+[0-9]+

Exemple de création de connecteur (AWS CLI)

L'exemple de commande CLI suivant crée un élémentConnectorDefinitionavec une version initiale qui contient le connecteur Twilio Notifications.

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" } } ] }'

Pour consulter des didacticiels qui expliquent comment ajouter le connecteur Twilio Notifications à un groupe, consultezDémarrage avec les connecteurs Greengrass (CLI)etMise en route avec les connecteurs Greengrass (console).

Données d'entrée

Ce connecteur accepte les informations des messages Twilio dans deux rubriques MQTT. Les messages d'entrée doivent être au format JSON.

  • Informations des SMS dans la rubrique twilio/txt.

  • Informations des messages vocaux dans la rubrique twilio/call.

Note

La charge utile d'un message entrant peut inclure un SMS (message) ou un message vocal (voice_message_location), mais pas les deux.

Filtre des rubriques : twilio/txt
Propriétés des messages
request

Informations sur la notification Twilio.

Obligatoire :true

Type :objectqui inclut les propriétés suivantes :

recipient

Destinataire du message. Un seul destinataire est pris en charge.

Obligatoire :true

Type :objectqui inclut les propriétés suivantes :

name

le nom du destinataire.

Obligatoire :true

Type: string

Modèle de Modèle :.*

phone_number

le numéro de téléphone du destinataire.

Obligatoire :true

Type: string

Modèle de Modèle :\+[1-9]+

message

le contenu du message du SMS. Seuls les SMS sont pris en charge dans cette rubrique. Pour les messages vocaux, utilisez twilio/call.

Obligatoire :true

Type: string

Modèle de Modèle :.+

from_number

Le numéro de téléphone de l'expéditeur. Twilio utilise ce numéro pour initier le message. Cette propriété est obligatoire si le paramètre DefaultFromPhoneNumber n'est pas configuré. Si DefaultFromPhoneNumber est configuré, vous pouvez utiliser cette propriété pour remplacer le numéro par défaut.

Obligatoire :false

Type: string

Modèle de Modèle :\+[1-9]+

retries

Nombre de nouvelles tentatives. La valeur par défaut est 0.

Obligatoire :false

Type: integer

id

ID arbitraire de la demande. Cette propriété est utilisée pour mapper une demande d'entrée à une réponse de sortie.

Obligatoire :true

Type: string

Modèle de Modèle :.+

Exemple d'entrée
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "message": "Hello from the edge" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }
Filtre des rubriques : twilio/call
Propriétés des messages
request

Informations sur la notification Twilio.

Obligatoire :true

Type :objectqui inclut les propriétés suivantes :

recipient

Destinataire du message. Un seul destinataire est pris en charge.

Obligatoire :true

Type :objectqui inclut les propriétés suivantes :

name

le nom du destinataire.

Obligatoire :true

Type: string

Modèle de Modèle :.+

phone_number

le numéro de téléphone du destinataire.

Obligatoire :true

Type: string

Modèle de Modèle :\+[1-9]+

voice_message_location

URL du contenu audio du message vocal. Elle doit être en format TwiML. Seuls les messages vocaux sont pris en charge dans cette rubrique. Pour les SMS, utilisez twilio/txt.

Obligatoire :true

Type: string

Modèle de Modèle :.+

from_number

Le numéro de téléphone de l'expéditeur. Twilio utilise ce numéro pour initier le message. Cette propriété est obligatoire si le paramètre DefaultFromPhoneNumber n'est pas configuré. Si DefaultFromPhoneNumber est configuré, vous pouvez utiliser cette propriété pour remplacer le numéro par défaut.

Obligatoire :false

Type: string

Modèle de Modèle :\+[1-9]+

retries

Nombre de nouvelles tentatives. La valeur par défaut est 0.

Obligatoire :false

Type: integer

id

ID arbitraire de la demande. Cette propriété est utilisée pour mapper une demande d'entrée à une réponse de sortie.

Obligatoire :true

Type: string

Modèle de Modèle :.+

Exemple d'entrée
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "voice_message_location": "https://some-public-TwiML" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }

Données de sortie

Ce connecteur publie des informations d'état sous forme de données de sortie dans une rubrique MQTT.

Filtre de rubrique dans l'abonnement

twilio/message/status

Exemple de sortie : Succès
{ "response": { "status": "success", "payload": { "from_number": "+19999999999", "messages": { "message_status": "queued", "to_number": "+12345000000", "name": "Darla" } } }, "id": "request123" }
Exemple de sortie : Échec
{ "response": { "status": "fail", "error_message": "Recipient name cannot be None", "error": "InvalidParameter", "payload": None } }, "id": "request123" }

La propriété payload dans la sortie est la réponse de l'API Twilio lorsque le message est envoyé. Si le connecteur détecte que les données d'entrée ne sont pas valides (par exemple, elles ne spécifient pas un champ d'entrée obligatoire), le connecteur renvoie une erreur et définit la valeur sur None. Voici quelques exemples de charges utiles :

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

Exemple d'utilisation

Suivez les étapes détaillées suivantes pour configurer un exemple de fonction Lambda Python 3.7 que vous pouvez utiliser pour tester le connecteur.

Note

LeMise en route avec les connecteurs Greengrass (console)etDémarrage avec les connecteurs Greengrass (CLI)les sujets contiennent end-to-end qui montrent comment configurer, déployer et tester le connecteur Twilio Notifications.

  1. Veillez à répondre aux conditions requises pour le connecteur.

  2. Créez et publiez une fonction Lambda qui envoie des données d'entrée au connecteur.

    Enregistrez l'exemple de code en tant que fichier PY. Téléchargez et décompressez le fichierAWS IoT GreengrassKit SDK de chemin d'accès. Ensuite, créez un package zip contenant le fichier PY et le dossier greengrasssdk au niveau racine. Ce package zip correspond au package de déploiement que vous chargez surAWS Lambda.

    Après avoir créé la fonction Lambda Python 3.7, publiez une version de fonction et créez un alias.

  3. Configurez votre groupe Greengrass.

    1. Ajoutez la fonction Lambda par son alias (recommandé). Configurez le cycle de vie Lambda comme long (ou"Pinned": truedans la CLI).

    2. Ajoutez la ressource secrète requise et accordez l'accès en lecture à la fonction Lambda.

    3. Ajoutez le connecteur et configurez ses paramètres.

    4. Ajoutez des abonnements qui permettent au connecteur de recevoir des données d'entrée et d'envoyer des données de sortie sur des filtres de rubrique pris en charge.

      • Définissez la fonction Lambda en tant que source, le connecteur en tant que cible et utilisez un filtre de rubrique d'entrée pris en charge.

      • Définissez le connecteur en tant que source, AWS IoT Core en tant que cible et utilisez un filtre de rubrique de sortie pris en charge. Vous utilisez cet abonnement pour afficher les messages d'état dans laAWS IoTconsole

  4. Déployez le groupe.

  5. DansAWS IoTConsole,Test, abonnez-vous à la rubrique des données de sortie pour afficher les messages d'état du connecteur. L'exemple de fonction Lambda à longue durée de vie commence à envoyer des messages immédiatement après le déploiement du groupe.

    Lorsque vous avez terminé le test, vous pouvez définir le cycle de vie Lambda sur le type « à la demande » ("Pinned": falsedans l'interface de ligne de commande) et déployez le groupe. Cela empêche la fonction d'envoyer des messages.

Exemple

L'exemple de fonction Lambda suivant envoie un message d'entrée au connecteur. Cet exemple déclenche un message texte.

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

Licats

Le connecteur Twilio Notifications inclut les logiciels et licences tiers suivants :

Ce connecteur est relâché sousContrat de licence du logiciel Greengrass Core.

Journal des modifications

Le tableau suivante décrit les modifications apportées à chaque version du connecteur.

Version

Modifications

5

Ajout du paramètre IsolationMode pour configurer le mode de conteneurisation du connecteur.

4

Mise à niveau du moteur d'exécution Lambda vers Python 3.7, ce qui modifie l'exigence d'environnement exécution.

3

Correctif pour réduire la journalisation excessive.

2

Correctifs de bogues mineurs et améliorations.

1

Première version.

Un groupe Greengrass peut contenir une seule version du connecteur à la fois. Pour de plus amples informations sur la mise à niveau d'une version de connecteur, veuillez consulter Mise à niveau des versions du connecteur.

Consulter aussi