https://a.storyblok.com/f/270183/43882/5ab8bf2cc3/sms-receipts_golang_1200x600.png

Receba confirmaciones de entrega de SMS com o Go

Publicado em November 18, 2020

Tempo de leitura: 7 minutos

Em posts anteriores, mostramos a vocês como enviar um SMS com o Go e receber um SMS com o Go. Esta postagem vai mostrar como receber confirmaciones de entrega das mensagens SMS enviadas da sua conta da Vonage.

Este tutorial abordará a configuração de um webhook acessível ao público e a funcionalidade para receber confirmações de entrega por SMS. Você pode encontrar o código utilizado neste tutorial em nosso Repositório de Trechos de Código Go.

Pré-requisitos

Configurar o código

Quando a Vonage envia um SMS da sua conta, ela verifica se você configurou um webhook para o qual os comprovantes de entrega sejam encaminhados. Essa configuração é válida para todo o Account.

Se você tiver configurado um webhook, a Vonage enviará uma POST solicitação para esse webhook; portanto, é hora de criar o código para lidar com essa solicitação do webhook.

Crie um arquivo chamado delivery-receipt.go e insira o seguinte código:

package main

import (
    "fmt"
    "net/http"
)

func main() {

    http.HandleFunc("/webhooks/delivery-receipt", func(w http.ResponseWriter, r *http.Request) {

        if err := r.ParseForm(); err != nil {
            fmt.Fprintf(w, "ParseForm() err: %v", err)
            return
        }

        fmt.Println("Delivery receipt status: " + r.FormValue("status"))
    })

    http.ListenAndServe(":8080", nil)
}

Este código ficará à espera de qualquer solicitação enviada ao /webhooks/delivery-receipt ponto de extremidade e exibe a status parte do corpo da solicitação.

Expor o projeto à Internet

Seu endpoint de webhook precisa estar acessível publicamente pela internet para que as APIs da Vonage possam enviar solicitações a ele.

O Ngrok é a ferramenta que sugerimos para executar exemplos durante o desenvolvimento e é utilizado neste tutorial para expor o endpoint do webhook. Caso você ainda não tenha o Ngrok instalado, você pode encontrar uma ótima introdução a esse serviço e instruções sobre como instalá-lo em este tutorial.

Execute o ngrok com o comando abaixo:

ngrok http 8080

Anote os URLs públicos que o ngrok cria para você; eles serão semelhantes ao exemplo abaixo:

http://abc123.ngrok.io -> http://localhost:8080 https://abc123.ngrok.io -> http://localhost:8080

Observação: Essa URL será diferente toda vez que você executar o comando, caso esteja usando o plano gratuito. Portanto, você precisará atualizar a delivery-receipt URL no painel sempre que executar o comando.

Configure seu Account da Vonage

Sua conta da Vonage precisa ser configurada para saber para onde enviar as solicitações de comprovante de entrega. Você pode adicionar a URL do webhook de comprovante de entrega na sua página de configurações da Vonage, na seção “Confirmações de entrega”. A imagem abaixo mostra um exemplo disso:

An example of the delivery receipts settings in the Vonage DashboardAn example of the delivery receipts settings in the Vonage Dashboard

Hora do teste

Com Ngrok já em execução, em uma nova janela do Terminal, certifique-se de ter navegado até o diretório do projeto que contém seu delivery-receipt.go arquivo. Execute o seguinte comando:

go run ./

Agora, em outra janela do Terminal, execute o comando a seguir, substituindo YOUR_NUMBER pelo seu número de telefone para receber a mensagem SMS de teste.

nexmo sms -f VONAGETEST YOUR_NUMBER "This is a test message."

Se você verificar a janela do Terminal onde executou go run ./, você deverá ver uma linha semelhante à que aparece abaixo:

Delivery receipt status: delivered

O webhook recebe mais campos do que os exibidos acima. Você pode ver uma lista completa desses campos, com alguns exemplos, a seguir. O exemplo abaixo foi retirado da documentação da API na seção Delivery Receipt:

{
  "msisdn": "447700900000",
  "to": "AcmeInc",
  "network-code": "12345",
  "messageId": "0A0000001234567B",
  "price": "0.03330000",
  "status": "delivered",
  "scts": "2001011400",
  "err-code": "0",
  "api-key": "abcd1234",
  "client-ref": "my-personal-reference",
  "message-timestamp": "2020-01-01 12:00:00 +0000",
  "timestamp": "1582650446",
  "nonce": "ec11dd3e-1e7f-4db5-9467-82b02cd223b9",
  "sig": "1A20E4E2069B609FDA6CECA9DE18D5CAFE99720DDB628BD6BE8B19942A336E1C"
}

Leitura complementar

Você pode encontrar o código apresentado neste tutorial no repositório de trechos de código Go.

A seguir, apresentamos alguns outros tutoriais que escrevemos sobre Go:

Não se esqueça de que, se tiver alguma dúvida, sugestão ou ideia que gostaria de compartilhar com a comunidade, fique à vontade para participar do nosso espaço de trabalho do Slack da Comunidade. Adoraria receber feedback de quem já colocou este tutorial em prática e saber como está o seu projeto.

Compartilhar:

https://a.storyblok.com/f/270183/250x250/b052219541/greg-holmes.png
Greg HolmesEx-funcionários da Vonage

Ex-educador de desenvolvedores na @Vonage. Tenho formação em PHP, mas não me limito a uma única linguagem. Sou um jogador ávido e entusiasta do Raspberry Pi. Costumo praticar escalada em rocha em centros de escalada indoor.