Como enviar SMS a partir de Go

A maneira mais simples de enviar SMS a partir de Go é usar a API HTTP/Rest de SMS integrada do Ozeki SMS Gateway. Quando você usa esta API, enviará mensagens SMS fazendo uma requisição HTTP Post para o gateway de SMS. A requisição HTTP Post conterá uma mensagem formatada em formato json. O gateway de SMS enviará este SMS para o telefone do destinatário e retornará uma resposta HTTP 200 OK para a sua requisição.

como enviar sms a partir de go
Figura 1 - Como enviar SMS a partir de Go

Código Go para enviar SMS para celular

O exemplo de código Go para SMS abaixo demonstra como você pode enviar SMS usando a API HTTP Rest de SMS do Ozeki SMS Gateway com o pacote Go github.com/ozekisms/go_send_sms_http_rest_ozeki. Este pacote é fornecido gratuitamente e você pode usá-lo e modificá-lo em qualquer um dos seus projetos.

SendSms.go
package main

import (
	"fmt"
	
	ozeki "github.com/ozekisms/go_send_sms_http_rest_ozeki"
)

func main() {
	configuration := ozeki.NewConfiguration(
		"http_user",
		"qwe123",
		"http://127.0.0.1:9509/api",
	)

	msg := ozeki.NewMessage()
	msg.ToAddress = "+36201111111"
	msg.Text = "Olá mundo!"

	api := ozeki.NewMessageApi(configuration)

	result := api.Send(msg)

	fmt.Println(result)
}
	

Código 1 - SendSms.go

Como usar o exemplo de SMS em Go:

Este exemplo de SMS em Go pode ser usado em qualquer aplicação Go. Para usá-lo, você deve baixar o pacote github.com/ozekisms/go_send_sms_http_rest_ozeki. Após o pacote ser baixado, você precisa adicionar uma referência a ele no seu código-fonte Go. Isso permitirá que você use as classes fornecidas pelo pacote github.com/ozekisms/go_send_sms_http_rest_ozeki. Você pode usar a classe Message para criar o SMS. Você pode usar a classe MessageApi para enviar o SMS para o gateway de SMS. O gateway de SMS encaminhará sua mensagem para a rede móvel através de uma conexão sem fio ou pela Internet.

Baixar SendSms.go

O código-fonte explicado neste artigo pode ser baixado, usado e modificado gratuitamente.
Download: SendSms.go.zip (992B)

O que está no arquivo SendSms.go.zip?

No SendSms.go.zip você encontrará o arquivo SendSms.go, que contém o código de exemplo para mostrar como enviar um SMS. Este código de exemplo está listado abaixo.

Figura 2 - O que está dentro do SendSms.go.zip

Como instalar o pacote github.com/ozekisms/go_send_sms_http_rest_ozeki

go get github.com/ozekisms/go_send_sms_http_rest_ozeki
	

Código 2 - Comando para instalar o pacote github.com/ozekisms/go_send_sms_http_rest_ozeki

Vídeo 1 - Instalando o pacote github.com/ozekisms/go_send_sms_http_rest_ozeki (Tutorial em vídeo)

Como enviar SMS a partir de Go (Passos simples)

Para enviar SMS a partir de Go:

  1. Instale um usuário de API HTTP
  2. Ative "Log communication events" na aba Advanced
  3. Configure o Visual Studio
  4. Baixe e extraia o arquivo SendSms.go.zip
  5. Inicie o aplicativo Ozeki SMS Gateway
  6. Execute o código Go SendSms.go usando o prompt de comando
  7. Verifique os logs para ver se o SMS foi enviado
Instale o Ozeki SMS Gateway e crie um usuário de API HTTP

Para poder enviar SMS a partir de Go, primeiro você precisa instalar o Ozeki SMS Gateway. O gateway de SMS pode ser instalado no mesmo computador onde você desenvolve seu código Go em qualquer editor de texto, como o Bloco de Notas do Windows. Após a instalação, o próximo passo é conectar o Ozeki SMS Gateway à rede móvel. Você pode enviar um SMS de teste a partir da interface gráfica do Ozeki para verificar se a sua conexão com a rede móvel está funcionando. O passo final para preparar o seu ambiente é criar um usuário de API HTTP para SMS. Crie um usuário com o nome "http_user" e senha "qwe123" para fazer o exemplo funcionar sem modificações.

Após o ambiente estar configurado, você pode executar o seu código Go.

URL da API HTTP para enviar SMS a partir de Go

Para enviar SMS a partir de Go, o seu código Go terá que fazer uma requisição HTTP para o gateway de SMS. A URL da API é mostrada abaixo. Observe que o endereço IP (127.0.0.1) deve ser substituído pelo endereço IP do seu gateway de SMS. Se o Ozeki SMS Gateway estiver instalado no mesmo computador onde a aplicação Go está sendo executada, pode ser 127.0.0.1. Se estiver instalado em um computador diferente, deve ser o endereço IP desse computador.

http://127.0.0.1:9509/api?action=rest
	

Autenticação HTTP para enviar SMS a partir de Go

Para autenticar o cliente de SMS em Go, você precisa enviar o nome de usuário e senha em uma string codificada em base64 para o servidor em uma requisição HTTP. O formato utilizado é: base64(nome de usuário+":"+senha). Em Go, você pode usar o seguinte código para fazer essa codificação:

import b64 "encoding/base64"

func (api *MessageApi) createAuthorizationHeader(username string, password string) string {
	var usernamePassword string = username + ":" + password
	var usernamePasswordEncoded string = b64.StdEncoding.EncodeToString([]byte(usernamePassword))
	return "Basic " + usernamePasswordEncoded
}
	

Por exemplo, se você codificar o nome de usuário 'http_user' e a senha 'qwe123', você obterá a seguinte string codificada em base64: aHR0cF91c2VyOnF3ZTEyMw==. Para enviar

Cabeçalho da requisição HTTP para enviar SMS a partir de Go

Para enviar as mensagens SMS, você precisa incluir as seguintes linhas como cabeçalhos na requisição HTTP. Observe que incluímos um tipo de conteúdo e um cabeçalho de Autorização.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

Requisição HTTP para enviar SMS a partir de Go

Para submeter o SMS, sua aplicação em Go enviará uma requisição HTTP semelhante à mostrada abaixo. Observe que esta requisição contém uma parte de cabeçalho HTTP e uma parte de corpo HTTP. O corpo HTTP é uma string de dados codificada em JSON. Ela contém o número do destinatário e o texto da mensagem.

POST /api?action=sendmsg HTTP/1.1
Content-Length: 434
Content-Type: application/json
Accept-Encoding: gzip
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
User-Agent: Go-http-client/1.1

{
	"messages":	[
		{
			"message_id": "60ce97a2-dff6-11eb-990e-74d4355e997d",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36201111111",
			"to_station": "",
			"text": "Olá mundo!",
			"create_date": "2021-07-08T16:11:24",
			"valid_until": "2021-07-15T16:11:24",
			"time_to_send": "2021-07-08T16:11:24",
			"submit_report_requested": true,
			"view_report_requested": true,
			"delivery_report_requested": true,
			"tags": [],
			"status": ""
		}
	]
}
	

Resposta HTTP recebida pelo exemplo de SMS em Go

Assim que o gateway SMS receber esta requisição, ele gerará uma resposta HTTP. A resposta HTTP conterá um código de status, para indicar se a requisição de envio de SMS foi bem-sucedida ou não. Ela também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre o envio da mensagem.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.123 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Thu, 08 Jul 2021 16:08:52 GMT
Server: 10/10.3.123
Transfer-Encoding: chunked

{
	"http_code": 200,
	"response_code": "SUCCESS",
	"response_msg": "Mensagens enfileiradas para entrega.",
	"data": {
	  "total_count": 1,
	  "success_count": 1,
	  "failed_count": 0,
	  "messages": [
	    {
	      "message_id": "60ce97a2-dff6-11eb-990e-74d4355e997d",
	      "from_station": "%",
	      "to_address": "+36201111111",
	      "to_station": "%",
	      "text": "Olá mundo!",
	      "create_date": "2021-07-08 16:11:24",
	      "valid_until": "2021-07-15 16:11:24",
	      "time_to_send": "2021-07-08 16:11:24",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": false,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ],
	      "status": "SUCCESS"
	    }
	  ]
	}
}
	

Conecte seu gateway SMS à rede móvel e crie uma conta de usuário HTTP API

Assumimos que você já instalou o Ozeki SMS Gateway, e que você conectou-o à rede móvel. Para poder enviar SMS para um telefone móvel a partir de Go, você precisa configurar uma conta de usuário HTTP API no Ozeki SMS Gateway.

Vídeo 2 - Como configurar uma conta de usuário HTTP API (Tutorial em vídeo)

Como enviar SMS a partir de Go usando a API de SMS em Go (Tutorial em vídeo)

Este vídeo mostra como baixar o arquivo SendSms.go.zip desta página. Se assistir ao vídeo, você notará que o conteúdo do SendSms.go.zip é colocado na área de trabalho do Windows. Você também verá que executamos o prompt de comando para enviar o SMS.

Vídeo 3 - Como baixar e extrair o projeto de exemplo (Tutorial em vídeo)

Exemplo de SMS em Go: SendSms.go

O código de exemplo abaixo faz parte do SendSms.go.

Figura 3 - Arquivo SendSms.go

Como verificar se o SMS foi aceito pelo usuário HTTP

Após o SMS ter sido submetido, é uma boa ideia verificar seu gateway SMS, para ver o que foi recebido. Você pode verificar o log abrindo os detalhes do usuário HTTP a partir do console de gerenciamento do Ozeki SMS Gateway. O vídeo a seguir mostra o que você deve procurar.

Vídeo 4 - Como enviar SMS com o código em Go acima (Tutorial em vídeo)

Como verificar se o SMS foi enviado para a rede móvel

O passo final para verificar o procedimento é analisar os logs da conexão da rede móvel. Pode ser necessário ativar o registro na configuração da conexão antes de enviar a mensagem para visualizar os logs. Se o registro estiver ativado, você verá o número de telefone e o texto da mensagem que enviou.

Vídeo 5 - Como testar se a solicitação foi aceita pelo cliente SMPP (Tutorial em vídeo)

Como receber SMS em um telefone Android (Tutorial em vídeo)

Neste vídeo, apresentamos como você pode receber mensagens SMS no seu telefone Android. Você verá uma página inicial comum de um telefone Android e uma notificação de mensagem SMS recebida. Você também aprenderá como abrir o SMS. O vídeo tem apenas 18 segundos, mas você pode ver todo o processo nele.

Vídeo 6 - Como receber SMS em um telefone Android (Tutorial em vídeo)

Conclusão

O objetivo deste artigo foi explicar o envio de SMS em Go com a ajuda do Ozeki SMS Gateway. Com esta solução, você pode enviar mensagens com códigos Go, todo o conhecimento e as ferramentas são fornecidos no guia acima. O Ozeki SMS Gateway pode ser controlado muito bem com códigos Go, provando que este programa é personalizável e fácil de trabalhar. Também deve ser mencionado que o Ozeki SMS Gateway é executado em um ambiente que você controla, o que significa que a lista de contatos e os dados estão em boas mãos.

Leia mais sobre soluções semelhantes na página de tutoriais da Ozeki, onde mais informações podem ser encontradas sobre tópicos como agendamento de SMS em Go.

A única coisa a fazer agora é baixar o Ozeki SMS Gateway e começar a trabalhar!

More information