AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connettore notifiche Twilio
avvertimento
Questo connettore è stato spostato nelFase di vitaeAWS IoT Greengrassnon rilascerà aggiornamenti che forniscono funzionalità, miglioramenti alle funzionalità esistenti, patch di sicurezza o correzioni di bug. Per ulteriori informazioni, consulta la pagina AWS IoT Greengrass Version 1politica di manutenzione .
Le notifiche di Twilioconnettoreeffettua automaticamente telefonate o invia messaggi di testo tramite Twilio. Puoi utilizzare questo connettore per inviare notifiche in risposta a eventi nel gruppo Greengrass. Per le telefonate, il connettore è in grado di inoltrare un messaggio vocale al destinatario.
Questo connettore riceve le informazioni sui messaggi Twilio in un argomento MQTT, quindi attiva una notifica Twilio.
Nota
Per un tutorial che mostra come utilizzare il connettore notifiche Twilio Notifications, consultaNozioni di base sui connettori Greengrass (console)oNozioni di base sui connettori Greengrass (CLI).
Questo connettore dispone delle versioni seguenti.
Versione |
ARN |
---|---|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
Per informazioni sulle modifiche di ogni versione, consulta Changelog.
Requisiti
Questo connettore presenta i seguenti requisiti:
Parametri del connettore
Questo connettore fornisce i seguenti parametri.
Esempio di creazione di un connettore (AWS CLI)
Il seguente comando CLI di esempio crea unConnectorDefinition
con una versione iniziale che contiene il connettore notifiche 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" } } ] }'
Per i tutorial che mostrano come aggiungere il connettore notifiche Twilio a un gruppo, consultaNozioni di base sui connettori Greengrass (CLI)eNozioni di base sui connettori Greengrass (console).
Dati di input
Questo connettore accetta le informazioni sui messaggi di Twilio in due argomenti MQTT. I messaggi di input devono essere in formato JSON.
-
Informazioni sui messaggi di testo nell'argomento
twilio/txt
. -
Informazioni sui messaggi vocali nell'argomento
twilio/call
.
Nota
Il payload del messaggio di input può includere un messaggio di testo (message
) o un messaggio vocale (voice_message_location
), ma non entrambi.
- Filtro di argomenti:
twilio/txt
-
- Proprietà dei messaggi
-
request
-
Informazioni sulla notifica Twilio.
Campo: campo.
true
Tipo:
object
con le seguenti proprietà:recipient
-
Il destinatario del messaggio. È supportato solo un destinatario.
Campo: campo.
true
Tipo:
object
con le seguenti proprietà:name
-
Il nome del destinatario.
Campo: campo.
true
Tipo:
string
Modello:
.*
phone_number
-
Il numero di telefono del destinatario.
Campo: campo.
true
Tipo:
string
Modello:
\+[1-9]+
message
-
Il contenuto del messaggio di testo. In questo argomento sono supportati solo i messaggi di testo. Per i messaggi vocali, utilizzare
twilio/call
.Campo: campo.
true
Tipo:
string
Modello:
.+
from_number
-
Il numero di telefono del mittente. Twilio utilizza questo numero di telefono per iniziare il messaggio. Questa proprietà è obbligatoria se il parametro
DefaultFromPhoneNumber
non è configurato. SeDefaultFromPhoneNumber
è stato configurato, puoi utilizzare questa proprietà per ignorare quello predefinito.Campo: campo.
false
Tipo:
string
Modello:
\+[1-9]+
retries
-
Il numero di tentativi. Il valore predefinito è 0.
Campo: campo.
false
Tipo:
integer
id
-
Un ID arbitrario della richiesta. Questa proprietà viene utilizzata per associare una richiesta di input a una risposta di output.
Campo: campo.
true
Tipo:
string
Modello:
.+
- Input di esempio
-
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "message": "Hello from the edge" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }
- Filtro di argomenti:
twilio/call
-
- Proprietà dei messaggi
-
request
-
Informazioni sulla notifica Twilio.
Campo: campo.
true
Tipo:
object
con le seguenti proprietà:recipient
-
Il destinatario del messaggio. È supportato solo un destinatario.
Campo: campo.
true
Tipo:
object
con le seguenti proprietà:name
-
Il nome del destinatario.
Campo: campo.
true
Tipo:
string
Modello:
.+
phone_number
-
Il numero di telefono del destinatario.
Campo: campo.
true
Tipo:
string
Modello:
\+[1-9]+
voice_message_location
-
L'URL del contenuto audio del messaggio vocale. Deve essere in formato TwiML. In questo argomento sono supportati solo i messaggi vocali. Per i messaggi di testo, utilizzare
twilio/txt
.Campo: campo.
true
Tipo:
string
Modello:
.+
from_number
-
Il numero di telefono del mittente. Twilio utilizza questo numero di telefono per iniziare il messaggio. Questa proprietà è obbligatoria se il parametro
DefaultFromPhoneNumber
non è configurato. SeDefaultFromPhoneNumber
è stato configurato, puoi utilizzare questa proprietà per ignorare quello predefinito.Campo: campo.
false
Tipo:
string
Modello:
\+[1-9]+
retries
-
Il numero di tentativi. Il valore predefinito è 0.
Campo: campo.
false
Tipo:
integer
id
-
Un ID arbitrario della richiesta. Questa proprietà viene utilizzata per associare una richiesta di input a una risposta di output.
Campo: campo.
true
Tipo:
string
Modello:
.+
- Input di esempio
-
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "voice_message_location": "https://some-public-TwiML" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }
Dati di output
Questo connettore pubblica le informazioni di stato come dati di output su un argomento MQTT.
- Filtro argomento in sottoscrizione
-
twilio/message/status
- Output di esempio: Riuscito
-
{ "response": { "status": "success", "payload": { "from_number": "+19999999999", "messages": { "message_status": "queued", "to_number": "+12345000000", "name": "Darla" } } }, "id": "request123" }
- Output di esempio: Errore
-
{ "response": { "status": "fail", "error_message": "Recipient name cannot be None", "error": "InvalidParameter", "payload": None } }, "id": "request123" }
La proprietà
payload
nell'output è la risposta dall'API Twilio al momento dell'invio del messaggio. Se il connettore rileva che i dati di input non sono validi (ad esempio, non è specificato un campo di input obbligatorio), il connettore restituisce un errore e imposta il valore suNone
. Di seguito vengono riportati payload di esempio:{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'undelivered' } }
{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'queued' } }
Esempio di utilizzo
Utilizza i seguenti passaggi di alto livello per impostare un esempio di funzione Lambda Python 3.7 che puoi utilizzare per provare il connettore.
Nota
LaNozioni di base sui connettori Greengrass (console)eNozioni di base sui connettori Greengrass (CLI)gli argomenti contengono end-to-end passaggi che mostrano come configurare, distribuire e testare il connettore notifiche Twilio Notifications.
Assicurarsi di soddisfare i requisiti per il connettore.
-
Crea e pubblica una funzione Lambda che invia i dati di input al connettore.
Salvare il codice di esempio come file PY. Scarica e decomprimi il fileAWS IoT GreengrassSDK di base per Python. Quindi, crea un pacchetto zip che contiene il file PY e la cartella
greengrasssdk
a livello root. Questo pacchetto zip è il pacchetto di distribuzione caricato suAWS Lambda.Dopo aver creato la funzione Lambda Python 3.7, pubblica una versione della funzione e crea un alias.
-
Configurare il gruppo Greengrass.
-
Aggiungi la funzione Lambda con il suo alias (scelta consigliata). Configura il ciclo di vita Lambda su lunga durata (o
"Pinned": true
nella CLI). -
Aggiungi la risorsa segreta richiesta e concedi l'accesso in lettura alla funzione Lambda.
-
Aggiungere il connettore e configurarne i relativi parametri.
-
Aggiungere sottoscrizioni che consentono al connettore di ricevere i dati di input e inviare i dati di output nei filtri degli argomenti supportati.
Imposta la funzione Lambda come origine, il connettore come destinazione e utilizza un filtro per l'argomento di input supportato.
Imposta il connettore come origine, AWS IoT Core come destinazione e utilizza un filtro per l’argomento di output supportato. Utilizza questa sottoscrizione per visualizzare i messaggi di stato inAWS IoTConsole.
-
-
Distribuisci il gruppo.
-
NellaAWS IoTconsole, sulTest, sottoscrivi l'argomento dei dati di output per visualizzare i messaggi di stato dal connettore. La funzione Lambda di esempio ha una lunga durata e inizia a inviare messaggi immediatamente dopo la distribuzione del gruppo.
Al termine del test, puoi impostare il ciclo di vita Lambda su «on demand» (o
"Pinned": false
nella CLI) e distribuire il gruppo. Ciò impedisce alla funzione di inviare messaggi.
Esempio
La funzione Lambda di esempio seguente invia un messaggio di input al connettore. Questo esempio attiva un messaggio di testo.
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
Licenze
Il connettore notifiche Twilio include il software e le licenze di terze parti indicati di
twilio-python
/MIT
Questo connettore viene rilasciato sotto ilAccordo di licenza del software Greengrass Core
Changelog
La tabella seguente descrive le modifiche apportate a ogni nuova versione del connettore.
Versione |
Modifiche |
---|---|
5 |
Aggiunto il parametro |
4 |
Aggiornato il runtime Lambda a Python 3.7, che modifica il requisito di runtime. |
3 |
Correggere per ridurre l'eccessiva registrazione di log. |
2 |
Miglioramenti e correzioni di bug minori. |
1 |
Versione iniziale. |
Un gruppo Greengrass può contenere una sola versione del connettore alla volta. Per informazioni sull'aggiornamento di una versione del connettore, consulta Aggiornamento delle versioni dei connettori.