
Compartilhar:
Julia está empenhada em capacitar outros desenvolvedores por meio da criação de tutoriais, guias e recursos práticos. Com experiência em divulgação e educação, ela busca tornar a tecnologia mais acessível e aprimorar a experiência geral dos desenvolvedores. É comum encontrá-la em eventos da comunidade local.
Envio de notificações em grupo com o Google Sheets e o Node-RED
Observação: algumas das ferramentas ou métodos descritos neste artigo podem não ter mais suporte ou estar desatualizados. Para obter conteúdo atualizado ou suporte, consulte nossas postagens mais recentes ou nossa Documentação
Você já recebeu um telefonema às 7h59 da manhã avisando que a escola do seu filho estava fechada? Foi bem prático, já que você estava a apenas algumas milhas de distância — a caminho de casa, depois de deixá-lo na escola.
Atualmente, o processo de comunicação na maioria das escolas ainda é manual, o que funciona na maioria dos casos. No entanto, quando algo inesperado acontece, como a escola ficar isolada pela neve, um pequeno grupo de pessoas se esforça para ligar para centenas de pais. Você pode receber a notificação a tempo ou pode fazer parte do grupo de sortudos que acabou ficando na última leva, às 7h59.
Neste tutorial, vamos criar um fluxo no Node-RED que envia notificações programaticamente para uma lista de contatos, usando o Google Sheets e a SMS API da Vonage.
Que tal acompanhar tudo e apresentar a ideia ao diretor? Assim, você evita ficar preso no trânsito num dia de neve.
Pré-requisitos
Antes de começar, você precisará de algumas coisas:
A instalação do Node-RED , seja uma versão hospedada ou instalada no seu computador
Um account da Vonage
Uma maneira de expor seu servidor à internet. Isso significa que você está executando uma versão hospedada do Node-RED ou usando um serviço de tunelamento como ngrok — confira este guia Tutorial de Introdução ao Ngrok no Node-RED tutorial
Configurando seu editor
Ao abrir o Editor do Node-RED, certifique-se de que os seguintes pacotes estejam instalados:
Para fazer isso, clique no menu de hambúrguer e selecione Gerenciar paleta. Verifique se há pacotes já instalados em Nóse baixe novos no guia .
Quando terminar, não se esqueça de reiniciar o Node-RED e pronto!
Como configurar seu Account do Google
Para interagir com a API do Google Sheets, você precisará usar uma conta de serviço — uma identidade que uma instância pode usar para executar solicitações de API em seu nome. Ela será usada para identificar os aplicativos em execução na sua instância perante outros serviços do Google Cloud.
Nesse caso, seu fluxo que lê uma planilha do Google Sheets precisa primeiro se autenticar na API do Google Sheets.
Você precisará criar uma conta de serviço e conceder a ela acesso à API do Google Sheets. Em seguida, atualize seu aplicativo para passar as credenciais da conta de serviço para a API do Google Sheets. Dessa forma, seu fluxo se autentica de maneira integrada na API, sem a necessidade de incorporar chaves secretas ou credenciais de usuário.
Etapa 1: Criar uma nova conta de serviço
Vamos começar criando um novo projeto na página de contas de serviço do Google Cloud Platform. Clique em CRIAR para começar.

Em seguida, dê um nome ao seu projeto, selecione uma organização ou deixe esse campo em branco e, depois, pressione CRIAR.

Em breve, você verá uma notificação informando que seu projeto foi criado.

Agora que você já tem um projeto, vamos adicionar uma conta de serviço a ele!


Em seguida, você precisará criar uma chave que será usada para se autenticar no nó GSheet do seu fluxo. Clique em Criar chavee, em seguida, selecione JSON como tipo de chave. Salve esse arquivo quando solicitado — mantenha-o à mão, pois você precisará dele em breve — e, em seguida, clique em Concluído.

Etapa 2: Ativar a API do Google Sheets para o seu projeto
No menu de hambúrguer, selecione APIs e Serviços -> Painele, em seguida, clique no botão ATIVAR APIs E SERVIÇOS . Procure a API do Google Sheets na Biblioteca de APIs, abra-a e clique em Ativar.

Etapa 3: Compartilhando o Google Sheets com sua conta de serviço
Acesse as página Contas de serviço e anote o endereço de e-mail associado à conta de serviço que você acabou de criar. Você precisará usar esse endereço de e-mail para compartilhar suas planilhas com a conta de serviço.

Envio de notificações em grupo com o Google Sheets e o Node-RED
Criar uma planilha
Caso você ainda não tenha uma planilha do Google pronta, vá em frente e crie uma agora.
O Google Sheets utiliza um sistema de matriz de células, no qual cada coluna é identificada por uma letra (começando com A na primeira coluna) e as linhas são numeradas (sendo 1 a primeira linha). Caso você queira selecionar o segundo elemento da primeira linha, seria assim: B1.
Você também pode selecionar intervalos de células usando o notação TOP_LEFTMOST_CELL:BOTTOM_RIGHTMOST_CELL . Por exemplo, para selecionar o segundo e o terceiro elemento das linhas 1 a 5, use B1:C5.
Depois de criar uma planilha, você verá uma guia “Folha1” na parte inferior da tela, que é a planilha em que você está no momento. Você pode renomeá-la ou adicionar mais planilhas à sua planilha.
Para este tutorial, estou usando uma planilha com 4 colunas: Nome, Sobrenome, Telefone e E-mail — você precisará de pelo menos 2 linhas de dados para acompanhar.
Certifique-se de adicionar um número de telefone ao qual você tenha acesso, para que possa testar seu fluxo mais tarde.
Quando sua planilha estiver pronta, é hora de compartilhá-la com sua conta de serviço.

Como obter os dados da sua planilha do Google
Comece seu fluxo adicionando um nó GSheet ao seu espaço de trabalho. Configure esse nó para importar os dados da sua planilha do Google preenchendo os seguintes campos conforme necessário:
| PARAMETERS | DESCRIPTION |
|---|---|
| Creds | Press the edit button to provide your Service Account key. Remember the JSON file you downloaded earlier? Copy and paste this JSON key in the text field. |
| Method | Select Get Cells from the drop-down menu. This will grab the data from the Google Sheet and pull it into your flow. |
| SpreadsheetID | You can figure out your spreadsheet ID from the URL of your Google Sheet. For example, if the URL is https://docs.google.com/spreadsheets/d/1mmXhj40aeSooxmtku3ma4auLyrHhO8xCSQsklZ1_BU/edit#gid=0, the SpreadsheetID will be the string found in between d/ and /edit: 1mmXhj40aeSooxmtku3ma4auLyrHhO8xCSQsklZ1_BU. Have a look at your spreadsheet URL and find your SpreadSheetID. Then paste this string in the SpreadSheetID field. |
| Cells | Select the cells where your data is located on the spreadsheet. In the example below, this value will be: Sheet1!A2:D30, as the data is found on the worksheet named "Sheet1", in columns A-D on rows 2-30. Note that we're not including the table headers. |
Quando terminar de editar a nó do GSheet , pressione Concluído.

A seguir, vamos dar uma olhada nos dados que estamos obtendo da API do Google Sheets.
Adicione um injetar e um nó de depuração ao seu espaço de trabalho e conecte-os ao GSheet . Clique em “Implantar”, clique no inject e, em seguida, dê uma olhada na sua barra lateral de depuração.

Você vai perceber que a resposta em msg.payload é uma matriz de matrizes, sendo que cada uma dessas matrizes possui 4 elementos — o equivalente a uma linha de dados.
Dividir a matriz msg.payload
Essa estrutura de dados não é ideal para processamento posterior; portanto, vamos dividir a matriz de matrizes em matrizes individuais.
Felizmente, já existe um nó padrão na sua paleta que fará o trabalho pesado por você.
Encontre a nó no sequência na sua paleta de nós, no lado esquerdo da tela. Adicione-o à sua área de trabalho e conecte-o após o GSheet , seguido por um debuge, em seguida, pressione Deploy e execute seu fluxo novamente.
Dê uma olhada na barra lateral de depuração e observe que a resposta é exibida como uma sequência de matrizes individuais. Dessa forma, podemos processá-las uma por uma, à medida que vão chegando.

Definir atraso
Na maioria dos casos, você não gostaria de enviar mensagens nessa velocidade, seja por e-mail, SMS ou pelo canal de sua preferência.
Por exemplo, a SMS API da Vonage tem um limite de taxa de transferência para SMS de saída — todas as chaves de API são configuradas, por padrão, com uma restrição de 30 solicitações de API por segundo. Além disso, também há restrições ao enviar a partir de determinados números, de modo que você pode ficar limitado a 1 SMS por segundo.
Para garantir que você não atinja os limites de taxa de transferência, é recomendável definir um atraso para cada matriz que passar por msg.payload.
Para fazer isso, encontre o nó no seção “função” da sua paleta de nós e conecte-o após o split . Clique duas vezes nele para abrir as propriedades do nó e defina o atraso para 1 segundo — isso deve atender à maioria dos casos de uso, mas fique à vontade para ajustá-lo conforme necessário.
Preparação da mensagem
Nesse ponto, já temos todas as informações necessárias sobre os destinatários, então vamos passar para a mensagem!
Embora você possa enviar a mesma mensagem a todos os destinatários, é sempre uma boa ideia torná-la um pouco mais pessoal. Receber más notícias já é frustrante o suficiente, e uma experiência ruim para o usuário não vai melhorar a situação.
Incorporar alguns modelos não só dará um toque pessoal à sua mensagem, como também fará com que ela pareça mais profissional.
Adicione um modelo após o delay. Clique duas vezes nele, defina Propriedade como msg.text e dê asas à sua criatividade com a mensagem no campo de texto!
Este campo de texto é compatível com modelos Mustache, então você pode começar cumprimentando o destinatário pelo nome: {{payload.0}}. Essa expressão faz referência ao primeiro elemento do msg.payload , o primeiro nome do destinatário.

Quando terminar de editar, pressione Concluídoe, em seguida, Implantar.
Envio de notificações por SMS
Existem muitos canais disponíveis para enviar suas notificações, mas em condições climáticas adversas o SMS pode ser sua melhor opção; por isso, vamos começar por essa opção.
Para enviar as mensagens SMS, usaremos a API da Vonage SMS API.
Role a página para baixo até o seção “nexmo” da sua paleta de nós e adicione sendsms ao seu espaço de trabalho, conectado após o template .
Configure este nó clicando duas vezes nele e preenchendo os parâmetros abaixo. Você encontrará CHAVE DE API e SEGREDO DA API clicando no botão de edição ao lado de Credenciais da Vonage.
| KEY | DESCRIPTION |
|---|---|
| API KEY | Your Vonage API key, shown in your account overview. |
| API SECRET | Your Vonage API secret, shown in your account overview. |
| TO | The number you are sending the SMS to, {{msg.payload.2}} in this case. |
| FROM | The number or text shown on a handset when it displays your message. You can also set a custom alphanumeric FROM value if this feature is supported in your country. |
| TEXT | The content of your message. Use {{msg.text}} to reference the templated message you've created earlier. |
Certifique-se de que de que a opção “Unicode” esteja marcado para manter a formatação da sua mensagem e, em seguida, pressione Concluído e Implantar.

Execute seu fluxo novamente e veja suas mensagens baseadas em modelos aparecerem na barra lateral de depuração.

Comprovantes de entrega
Quando você faz uma solicitação bem-sucedida à SMS API, ela retorna uma matriz de objetos de mensagem. Idealmente, cada um deles tem um status igual a 0, indicando que sua mensagem foi agendada com sucesso para envio. Esses são os objetos de resposta que você acabou de ver na área de depuração.
Embora analisar essa saída seja bastante útil para determinar o que a SMS API da Vonage fez, não há garantia de que a mensagem tenha chegado ao celular do destinatário. Não é exatamente o que você quer ouvir ao enviar alertas sobre dias de neve, não é mesmo?
Assim que a mensagem chega ao seu destino, o provedor retorna um Confirmação de Entrega à Vonage – então, não entre em pânico! Tudo o que você precisa fazer é configurar um endpoint de webhook para que a Vonage possa encaminhar esses Confirmações de Entrega .
Conecte um http a um nó de resposta http , bem como a um nó de depuração , preencha o URL com /receipt no http no campo de entrada.
Em seguida, você precisará informar à SMS API da Vonage para onde ela deve encaminhar os comprovantes de entrega. Acesse suas configurações da API na seção “Configurações padrão de SMS” . Defina a URL padrão do webhook para os comprovantes de entrega como YOUR_URL/receipt, e então Salve as alterações.

Agora você pode ter certeza de que suas notificações sobre o dia de neve chegaram mesmo a todos da sua lista! Mas não acredite só na minha palavra: acesse a barra lateral de depuração e confira os comprovantes de entrega.

E agora, para onde vamos?
Crédito extra: insira seus comprovantes de entrega na planilha do Google Sheets
Embora a barra lateral de depuração ofereça todas as informações necessárias, às vezes é mais fácil compreender o resultado quando os dados são apresentados de maneira mais organizada.
Nesta seção, vamos ver como registrar seus comprovantes de entrega na mesma planilha, em uma folha de cálculo (aba) diferente.
Escolha seus dados
Os recibos de entrega conterão as seguintes propriedades do objeto msg.payload :
| PROPERTY | DESCRIPTION |
|---|---|
| msisdn | The number the message was sent to. |
| to | Your Vonage number or the SenderID you've set when sending the SMS. |
| network-code | The Mobile Country Code Mobile Network Code (MCCMNC) of the carrier the destination phone number is registered with. |
| messageId | The Vonage ID for this message. |
| price | The cost of this message. |
| status | Will be one of: delivered, expired, failed, rejected, accepted, buffered or unknown, based on where the message is in the delivery process. |
| scts | When the delivery receipt was received from the carrier in YYMMDDHHMM format. For example, 2001011400 is at 2020-01-01 14:00 |
| err-code | The status of the request. Will be a non 0 value in case of an error. See the Delivery Receipt documentation for more details. |
| api-key | Your Vonage API key. |
| message-timestamp | The time when Vonage started to push this Delivery Receipt to your webhook endpoint. |
Decida quais desses parâmetros são importantes para você e, em seguida, use um nó de alteração , defina msg.payload como um array das respectivas propriedades.
Por exemplo, estou interessado no carimbo de data/hora, no número do destinatário, no status, no código de erro e no ID da mensagem; portanto, vou definir msg.payload da seguinte forma expressão:
[payload.\`message-timestamp\`, payload.msisdn, payload.status, payload.\`err-code\`, payload.messageId]Conecte isto alteração nó de alteração /receipt webhook e, em seguida, insira um nó do GSheet .
Grave seus dados na planilha do Google
Adicione outra planilha (aba) à sua planilha do Google e anote o nome dela — por padrão, será “Planilha2”.
Em seguida, volte ao seu editor do Node-RED e abra a propriedades do GSheet . Selecione suas credenciais na seção menu suspenso e selecione “Append Row” como um Método, preencha seu ID da planilhae, em seguida, especifique o intervalo de células onde você deseja que os dados sejam gravados. No meu caso, será Sheet2!A:E, pois gostaria que os dados fossem distribuídos pelas colunas A a E na planilha “Sheet2”.

Quando estiver pronto, clique em Concluído e Implantare, em seguida, execute seu fluxo novamente.
🎉Parabéns! Seus comprovantes de entrega já foram registrados na segunda planilha do seu arquivo. Acesse sua planilha do Google Sheets e confira!

Mais ideias de hacks
Cansado de ter que abrir o Editor do Node-RED para iniciar seu fluxo? Experimente diferentes maneiras de dar início a ele!
Tente substituir o nó por um webhook de SMS de entrada . Envie um SMS para o seu número da Vonage para realizar sua tarefa!
Chamadas recebidas seriam outra ótima opção! Você poderia até mesmo aproveitar essa ideia e configurar um Menu de Resposta Interativa de Voz
Configure uma interface de usuário usando os nós do painel
Recursos
Entenda melhor os os comprovantes de entrega
Experimente outro tutorial
Compartilhar:
Julia está empenhada em capacitar outros desenvolvedores por meio da criação de tutoriais, guias e recursos práticos. Com experiência em divulgação e educação, ela busca tornar a tecnologia mais acessível e aprimorar a experiência geral dos desenvolvedores. É comum encontrá-la em eventos da comunidade local.