Torpedo de voz: como enviar utilizando a API da Zenvia

Confira o nosso passo a passo e aprenda na prática como enviar um torpedo de voz utilizando a API da Zenvia.

Quem nunca passou por aqueles problemas de indisponibilidade no website, seja pelo alto tráfego de acesso, expiração do certificado SSL ou até mesmo em virtude de um commit na branch errada? Sim, isso certamente já aconteceu com você. Convenhamos, é um problema chato que quase sempre o cliente é o primeiro a saber. E, como vamos ver, o torpedo de voz pode ter um papel importante em uma situação como essa.

Que tal receber um alerta de voz em seu celular quando isso ocorrer? Através da API de Voz, conseguimos enviar mensagens por leitura de texto, isto é, o TTS (text-to-speach). Nele, você escreve uma mensagem de texto e o receptor da mensagem receberá uma ligação de voz.

Dito isso, agora é hora de configurar o nosso ambiente de trabalho. Confira alguns pontos importantes antes de começarmos:

  • Pré-requisitos: você precisará de um computador com acesso a internet para fazer download de alguns pacotes.
  • Nota: para utilizar API de Voz, é necessário um token de acesso, o qual será submetido à aprovação da Zenvia.

Torpedo de voz: passo a passo para utilização

Etapa 1: Configurando a Golang

Para fazer a instalação do Golang, sigas as instruções abaixo.

Download da versão mais recente:

➜  ~ curl -LJO https://dl.google.com/go/go1.16.4.linux-amd64.tar.gz

Descompacte o binário go para diretório /usr/local. Depois disso, exporte a variável de ambiente.

➜  ~ sudo tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz
➜  ~ export PATH=$PATH:/usr/local/go/bin

Etapa 2 : Crie um estrutura inicial para trabalhar em cima do script

Neste passo, foi criado um diretório chamado Yoda e depois executado o comando cd Yoda para adentrar no pasta.

➜  ~ mkdir Yoda 
➜  ~ cd Yoda

Na sequência, crie um arquivo chamado main.go e siga os passos para configurar o ambiente.

  • go mod init main = inicializa a diretório com as dependências externas.
➜  Yoda go mod init
➜  Yoda go get github.com/totalvoice/totalvoice-go

Por fim, crie um arquivo log.txt no diretório e liste os arquivos do mesmo.

➜  Yoda touch log.txt
➜  Yoda ls -l
total 8
-rw-rw-r-- 1 zenvia zenvia 113 mai 31 17:44 go.mod
-rw-rw-r-- 1 zenvia zenvia 245 mai 31 17:44 go.sum

Logo abaixo, temos o script que foi criado para gerar os alertas em caso de indisponibilidade da sua aplicação ou website.

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
	"github.com/totalvoice/totalvoice-go"
)

func main() {
	data, err := http.Get("https://zenvia.com")
	if err != nil {
		panic(err)
	}
	defer data.Body.Close()

	if data.StatusCode == 200 {
		fmt.Println("O website está operacional!")

	} else {
		token := totalvoice.NewTotalVoiceClient(os.Getenv("ZENVIA_TOKEN"))
		request, err := token.TTS.Enviar(os.Getenv("NUMBER"), "Olá analista, o website está fora, favor tomar uma ação.", nil)
		if err != nil {
			panic(err)
		}
		fmt.Println("O website não está disponível!")

		file, err := os.OpenFile("log.txt", os.O_APPEND|os.O_WRONLY, 0666)
		if err != nil {
			log.Fatal(err)
		}
		log.SetOutput(file)
		log.Println(request)
	}

}

Como é possível ver no código acima, acabei não expondo o meu token e o meu número de telefone no script. É extremamente recomendado que essas informações sejam exportas via variáveis de ambiente, assim evita-se o vazamento de informações confidenciais.

torpedo de voz
Exportando variáveis de ambiente no shell.

Executando o script.

➜  Yoda go run main.go 
O website está operacional!

Tudo normal visto que o site está operacional no momento. Agora, vamos rodar o script caso o site esteja indisponível.

torpedo de voz
torpedo de voz

Conforme as imagens acima, é possível ver que o site não está mais operacional e o disparo do TTS ficou armazenado no arquivo log.txt.

Com isso, no meu smartphone, recebi o torpedo de voz avisando sobre a indisponibilidade do website.

torpedo de voz

Existe ainda a possibilidade de customizar os parâmetros da chamada e o tipo da voz. Para maiores detalhes sobre torpedo de voz e outros recursos, você pode consultar a nossa documentação.

*William Martin é SRE (Site Realibility Engineer) na ZENVIA | Confira o Blog do William.

Escrito por

William Martin

Fique por dentro e confira as nossas dicas sobre o mercado mobile e interação digital.