
Compartir:
Antiguo educador de desarrolladores @Vonage. Procedente de PHP, pero no limitado a un solo lenguaje. Un ávido jugador y un entusiasta de Raspberry pi. A menudo se le encuentra practicando escalada en rocódromo.
Recibir SMS con Go
Tiempo de lectura: 7 minutos
En entradas anteriores, te mostramos cómo enviar un SMS con Go y recibir un SMS con Go. Esta publicación te mostrará cómo recibir recibos de entrega de SMS de mensajes SMS enviados desde tu cuenta de Vonage.
Este tutorial cubre la configuración de un webhook de acceso público y la funcionalidad para recibir recibos de entrega de SMS. Puede encontrar el código utilizado en este tutorial en nuestro Repositorio de fragmentos de código Go.
Requisitos previos
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Configurar el código
Cuando Vonage envía un SMS desde tu Account, verifica si has configurado un webhook al cual reenviar cualquier recibo de entrega. Esta configuración es para toda la Account.
Si configuraste un webhook, Vonage enviará una solicitud a este webhook. POST solicitud a este webhook, así que es hora de crear el código para manejar esta solicitud de webhook.
Cree un archivo llamado delivery-receipt.go e introduce el siguiente 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 escuchará cualquier solicitud enviada al endpoint /webhooks/delivery-receipt y mostrará la parte status parte del cuerpo de la solicitud.
Exponer el proyecto a Internet
Tu punto final de webhook debe ser accesible públicamente a través de Internet para que las API de Vonage puedan hacerle solicitudes.
Ngrok es nuestra herramienta sugerida para ejecutar ejemplos en desarrollo y se utiliza en este tutorial para exponer el punto final webhook. Si no tienes ngrok instalado, puedes encontrar una gran introducción a este servicio y cómo instalarlo en este tutorial.
Ejecute ngrok con el siguiente comando:
Tome nota de las URL públicas que ngrok crea para usted; serán similares al ejemplo siguiente:
Nota: Esta URL será diferente cada vez que ejecutes el comando si utilizas el plan gratuito. Así que tendrá que actualizar la delivery-receipt URL en el panel de control cada vez que ejecute el comando.
Configura tu cuenta de Vonage
Es necesario configurar tu Account de Vonage para saber dónde realizar las solicitudes de acuse de recibo. Puedes agregar la URL del webhook de recepción de entrega en tu página de configuración de Vonagedebajo de la etiqueta Recibos de entrega. La siguiente imagen muestra un ejemplo de esto:
An example of the delivery receipts settings in the Vonage Dashboard
Hora de probar
Con Ngrok ya en ejecución, en una nueva ventana de Terminal, asegúrese de que ha navegado hasta el directorio del proyecto que contiene su archivo delivery-receipt.go archivo. Ejecute el siguiente comando:
Ahora, en otra ventana de Terminal, ejecute el siguiente comando, sustituyendo YOUR_NUMBER por su número de teléfono para recibir el mensaje SMS de prueba.
Si comprueba la ventana Terminal donde ejecutó go run ./deberías ver aparecer una línea como la que ves a continuación:
El webhook recibe más campos de los que se muestran arriba. Puede ver una lista completa de estos campos con algunos ejemplos a continuación. El ejemplo siguiente procede de la documentos de la API en 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"
} Lecturas complementarias
Puede encontrar el código mostrado en este tutorial en el repositorio de repositorio de fragmentos de código Go.
A continuación encontrarás otros tutoriales que hemos escrito sobre Go:
No olvides que si tienes alguna pregunta, consejo o idea que quieras compartir con la comunidad, no dudes en acudir a nuestro espacio de trabajo de espacio de trabajo comunitario Slack. Me encantaría saber de cualquiera que haya implementado este tutorial y cómo funciona su proyecto.
