Node-Red - Gerando e enviando ÁUDIO para o Telegram

Fala Moçada!

A quem interessar compartilho um Fluxo que gera um ÁUDIO e envia pelo Telegram. O processo é mais fácil do que imaginei.

image

Vamos lá…

Inicialmente você vai precisar instalar o TTS. Acesse o menu MANAGE PALETTE.

Na aba INSTALL procure por “voicersstts” e instale o que aparecer.

No node MENSAGEM eu fiz uma lógica para montar um texto (que será transformado em áudio depois) onde se tem a hora atual.

Lógica:

var message = "";
var time = new Date();
var hour   = time.getHours();
var minute = time.getMinutes();

message += "Agora são ";
if (hour === 0 || hour === 1)
{
    message += hour.toString() + " hora e ";
}
else
{
    message += hour.toString() + " horas e ";
}

if (minute === 0 || minute === 1)
{
    message += minute.toString() + " minuto.";
}
else
{
    message += minute.toString() + " minutos.";
}
msg.payload = message;
return msg;

O próximo passo é o node TTS (que aparece após instalar o Palette que indiquei acima). No campo Voice RSS API Key você precisa colocar a KEY que você vai criar aqui: http://www.voicerss.org/default.aspx - Botão GET STARTED. No campo Cache Location você deve indicar um caminho existente no seu HA para que ele possa salvar o ÁUDIO.

O Prepara Mensagem é a parte final de tratamento da mensagem antes de enviar para o Telegram. Aqui você deve indicar o SEU chat id.

Lógica:

msg.payload = {chatId: "seuchatid", type:"voice", content:msg.payload};
return msg;

Por fim, conectar ao node SENDER do Telegram.

Após isso, faça o DEPLOY e clique no INJECT para testar.
image

Isso me fez lembrar da série “Person of Interest” onde tocava o telefone e a máquina falava o número do CPF de quem poderia ser o assassino ou a vítima! :scream:

Código do Fluxo:

[{"id":"e1e82f49.b2c34","type":"tab","label":"Audio Telegram","disabled":false,"info":""},{"id":"7d3fd03f.098f1","type":"inject","z":"e1e82f49.b2c34","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"00 6 * * *","once":false,"x":110,"y":40,"wires":[["dad16e6.7ff3c9"]]},{"id":"dad16e6.7ff3c9","type":"function","z":"e1e82f49.b2c34","name":"MENSAGEM","func":"var message = \"\";\nvar time = new Date();\nvar hour   = time.getHours();\nvar minute = time.getMinutes();\n\nmessage += \"Agora são \";\nif (hour === 0 || hour === 1)\n{\n    message += hour.toString() + \" hora e \";\n}\nelse\n{\n    message += hour.toString() + \" horas e \";\n}\n\nif (minute === 0 || minute === 1)\n{\n    message += minute.toString() + \" minuto.\";\n}\nelse\n{\n    message += minute.toString() + \" minutos.\";\n}\nmsg.payload = message;\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":40,"wires":[["173b8fdc.889b5"]]},{"id":"f7590f0f.a08a2","type":"function","z":"e1e82f49.b2c34","name":"PREPARA MENSAGEM","func":"msg.payload = {chatId: \"seuchatid\", type:\"voice\", content:msg.payload};\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":40,"wires":[["e2423dd.7f824c"]]},{"id":"173b8fdc.889b5","type":"VoiceRSStts","z":"e1e82f49.b2c34","name":"","apiKey":"seuapikeyaqui","language":"pt-br","rate":"2","codec":"MP3","format":"32khz_16bit_mono","cacheLocation":"/config/www/audios","x":450,"y":40,"wires":[["f7590f0f.a08a2"]]},{"id":"e2423dd.7f824c","type":"telegram sender","z":"e1e82f49.b2c34","name":"","bot":"d64a0e3f.abf5e","x":890,"y":40,"wires":[[]]},{"id":"d64a0e3f.abf5e","type":"telegram bot","z":"","botname":"nomedobotaqui","usernames":"","chatids":"","baseapiurl":"","updatemode":"polling","pollinterval":"300","usesocks":false,"sockshost":"","socksport":"6667","socksusername":"anonymous","sockspassword":"","bothost":"","localbotport":"8443","publicbotport":"8443","privatekey":"","certificate":"","useselfsignedcertificate":false,"verboselogging":false}]

Abraços,
José Henrique.

1 Like

Muito bacana, fiz aqui funcionou de primeira! hehe … :clap:

1 Like