
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 entrantes con Go
En un post anterior, te mostramos cómo enviar un SMS con Go. Esta publicación te mostrará cómo recibir mensajes SMS con tu número virtual de Vonage.
Se requiere un webhook de acceso público y configurado con tu Account de Vonage para recibir un SMS entrante. Este tutorial cubrirá el proceso de configuración de un webhook de acceso público y la funcionalidad para recibir mensajes SMS entrantes. Puedes 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 recibe un SMS a tu número virtual, verifica si has configurado un webhook para reenviar este SMS. Esta configuración puede ser para toda la cuenta o específica para un número de teléfono virtual.
Si has configurado un webhook, Vonage enviará una GET solicitud. Así que es hora de crear el código que manejará esta solicitud de webhook.
Cree un archivo llamado inbound-sms.go e introduce el siguiente código:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/webhooks/inbound-sms", func(w http.ResponseWriter, r *http.Request) {
params := r.URL.Query()
fmt.Println("From: " + params["msisdn"][0] + ", message: " + string(params["text"][0]))
})
http.ListenAndServe(":8080", nil)
}Este código escuchará cualquier solicitud enviada al endpoint /webhooks/inbound-sms y mostrará los valores msisdn y text del cuerpo de la solicitud.
Exponer el proyecto a Internet
Para que las API de Vonage realicen solicitudes a tu punto final de webhook, éste debe ser accesible públicamente a través de Internet.
Ngrok es nuestra herramienta preferida para ejecutar ejemplos en desarrollo. Como resultado, ngrok es el servicio elegido en este tutorial. Si ngrok no está instalado, una gran introducción a ngrok y cómo instalarlo se puede encontrar en este tutorial.
Inicie Ngrok con el siguiente comando:
Tome nota de las URL públicas que ngrok crea para usted. Estas serán similares (pero diferentes) a las siguientes:
Esta URL será diferente cada vez que ejecutes el comando si utilizas el plan gratuito. Así que tendrá que actualizar la inbound-sms URL en el panel de control cada vez que ejecute el comando.
Comprar un número de Vonage
Si aún no has comprado un número de teléfono virtual de Vonage para seguir este tutorial, compra uno ahora. Puedes hacerlo en el panel del desarrolladorsin embargo, hay otra opción, que es el Nexmo CLI. El CLI puede ayudarle a realizar las tareas de gestión de Account sin tener que salir de su Terminal.
El comando que aparece a continuación busca números de teléfono capaces de enviar y recibir SMS, además de asegurarse de que el número pertenece al país que elijas. El código de país de dos caracteres elige el país; por ejemplo, para EE.UU., sería US.
Elija uno de los números de teléfono de la lista de números de teléfono que aparecen al realizar el comando. Sustituya VONAGE_VIRTUAL_NUMBER en el comando siguiente por el número de teléfono elegido y ejecute el comando.
Configura tu cuenta de Vonage
Tu nuevo número virtual de Vonage y tu URL de Webhook deben estar vinculados para que Vonage sepa dónde enviar los mensajes SMS entrantes.
Al igual que en el paso anterior, podrías agregar tu URL de webhook a tu número virtual de Vonage, pero este tutorial mostrará el ejemplo de cómo realizar este cambio a través del portal web.
Antes de proceder a la instalación, ten en cuenta lo siguiente:
VONAGE_VIRTUAL_NUMBER: El número que intentas utilizar.WEBHOOK_URL: Tu URL de Ngrok, seguido de/webhooks/inbound-smspor lo que debería ser algo comohttps://56feb86007e8.ngrok.io/webhooks/inbound-sms
Ir a la página Página Numbers en tu panel de control.
Haga clic en el icono "Editar" (parece un bolígrafo) bajo la columna "Gestionar". En la ventana emergente bajo SMS > Inbound Webhook URL pega tu WEBHOOK_URL y haz clic en "Guardar".
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 receive-sms.go archivo. Ejecute el siguiente comando:
Ahora desde tu teléfono puedes enviar mensajes de texto a tu VONAGE_VIRTUAL_NUMBER.
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 Inbound SMS:
{
"api-key": "abcd1234",
"msisdn": "447700900001",
"to": "447700900000",
"messageId": "0A0000000123ABCD1",
"text": "Hello world",
"type": "text",
"keyword": "TEST",
"message-timestamp": "2020-01-01 12:00:00 +0000"
} 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 algunos otros tutoriales que hemos escrito relacionados con Go o con la recepción de mensajes SMS:
No olvides que si tienes alguna pregunta, consejo o idea que quieras compartir con la comunidad, no dudes en entrar en nuestro espacio de trabajo espacio de trabajo comunitario Slack. Me encantaría saber si alguien ha implementado este tutorial y cómo funciona su proyecto.
