“NodeRed: servizi di notifica (Alexa/GoogleHome/Telegram)”

Benvenuti al terzo articolo dedicato a NodeRed e la sua integrazione con Home Assistant; questa volta ci occuperemo di una parte importante delle automazioni: i servizi di notifica; in dettaglio vedremo come inviare messaggi ad un BOT di telegram e notifiche vocali tramite TTS sia ai nostri device Google Home che Amazon Alexa.
NOTIFICHE GOOGLE HOME:
Sono le notifiche più semplici da creare in quanto basta che i device siano stati integrati in HA per richiamare il servizio tramite appunto un nodo “call service” specificando i seguenti parametri:
- ⦁ Name: il nome del nodo per identificazione
⦁ Domain: tts
⦁ Service: google_say
⦁ EntityId: uno o più dei device GH a cui vogliamo indirizzare il messaggio
⦁ Data: JSON con la seguente struttura:
{
“message”: “testo da far pronunziare”,
“language”: “it”
}

Qualora volessimo rendere “dinamico” il messaggio o altri parametri e non fissati all’interno del nodo possiamo lasciarli vuoti e mandare al nodo le seguenti variabili:
- payload.domain
⦁ contentente la stringa “tts” - payload.service
⦁ contentente la stringa “google_say” - payload.data
⦁ contentente il JSON strutturato come spiegato prima
⦁ nel JSON potrete inserire anche il campo “entityid”: “nome device”a<Z
NOTIFICHE AMAZON ALEXA:
Anche in questo caso il servizio è facilmente richiamabile ma si presuppone che abbiate installato il custom component adatto alla sua abilitazione che si trova al seguente link https://github.com/keatontaylor/alexa_media_player . Una volta fatto ciò potete richiamare il servizio in maniera molto simile al precedente con la differenza che il dominio deve essere “media_player” ed il servizio “alexa_tts”, Entity Id conterrà una o più entità che identificheranno il/i device da utilizzare come player ad in fine il JSON dovrà contenere solo il parametro “message” in quanto la lingua andrà specificata nella configurazione del custom component.

NOTIFICHE TELEGRAM:
Questo servizio di notifica è un po’ più complesso da settare ma il tutto va fatto solo la prima volta; innanzitutto installiamo il set di nodi che ci serviranno per interagire con il nostro BOT di Telegram e che si chiamano “node-red-contrib-telegrambot” (se non ricordate come installare nodi aggiuntivi vi esorto a rileggere il paragrafo relativo nella precedente lezione). Una volta aggiunti i nodi dovremo configurare il BOT, e per far ciò aggiungiamo un nodo “telegram sender” su un qualunque flow:

Quindi facciamo doppio click sul nodo e vedremo che l’unica opzione disponibile è “Add new Telegram Bot”, facciamo click sulla matita per configurare il ns. BOT e ci ritroveremo in questa finestra dove dovremo dare un nome al nostro BOT ed incollare il Token che abbiamo ottenuto da @botfather quando abbiamo creato il BOT stesso (se non siete familiari di questa procedura vi invito a cercare su Google, io personalmente ho usato questa pagina ); gli altri parametri sono facoltativi quindi potete al momento ignorarli a meno che non vi serva settarli per situazioni specifiche.

Per inviare al BOT un messaggio dovrete prepararlo ed inserirlo nel “msg.payload” in formato JSON; per fare ciò possiamo usare un nodo di tipo “function” e collegarlo come l’immagine in basso.

Facciamo doppio click sul nodo Function ed inseriamo le seguenti linee di codice che devono rispettare la sintassi Javascript (che è il linguaggio in cui vanno scritte le funzioni aggiuntive in NodeRed); in chatID dovremo inserire il valore numerico che identifica la ns. chat e che otteniamo sempre da @botfather, e nella variabile “content” inseriamo invece il testo del messaggio che vogliamo inviare al nostro BOT. La variabile “type” è settata su “message” perché stiamo inviando un messaggio di testo ma possiamo usare questi altri valori: message, photo, audio, location, video, voice, contact che richiederanno un diverso contenuto del campo “content” ma che vi permetteranno di inviare foto, video, audio, etc.

In questo caso abbiamo solo utilizzato il nodo per inviare un messaggio al nostro BOT ma come avrete visto esistono altri nodi nello stesso pacchetto che ci consentono di interagire con il BOT, rispondere a determinati comandi e creare complesse interazioni con esso; essendo questo un soggetto molto più complesso vi rimando alla documentazione dei nodi in questione dove troverete tanti esempi di utilizzo se volete creare questo tipo di flow https://flows.nodered.org/node/node-red-contrib-telegrambot
Anche stavolta siamo arrivati alla fine della lezione, stavolta breve, e spero che adesso sappiate come generare notifiche sia testuali (Telegram) che vocali (Google/Alexa) da utlizzare nelle vostri flow di NodeRed; e non dimenticate che con NodeRed non serve riavviare nulla, non appena avrete fatto il deploy dei vostri flows essi saranno subito attivi ed utilizzabili in Home Assistant.
Se volete specifici argomenti, flussi o automazioni trattati nei prossimi tutorial lasciate pure un messaggio qui, se invece avete dubbi, domande o non riuscite a far funzionare qualcosa relativa a NodeRed vi invito a chiedere sul canale telegram oppure aprire un thread nel forum.
Buon lavoro e al prossimo articolo!
5 risposte
quando a vado a configurare alexa su node red, seguendo la guida. mi da l’errore che “Call-service API error. Error Message: Service not found.”
eppure ho installato il custom component https://github.com/keatontaylor/alexa_media_player.
come potrei risolvere?
stesso problema anche io
Il Jason della call service è cambiato.
è possibile inserire 2 chatid a cui mandare il messaggio?
Certo che si, devi formattare la stringa CHAT ID con i numeri delle chat tra parentesi e con una virgola che le separi.
Ad esempio:
“chatId”: [n° prima chat, n°seconda chat]