https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receive-inbound-sms-with-go/blog_go_sms_1200x600.png

Recibir SMS entrantes con Go

Publicado el November 3, 2020

Tiempo de lectura: 9 minutos

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:

ngrok http 8080

Tome nota de las URL públicas que ngrok crea para usted. Estas serán similares (pero diferentes) a las siguientes:

http://56feb86007e8.ngrok.io -> http://localhost:8080 https://56feb86007e8.ngrok.io -> http://localhost:8080

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.

vonage numbers:search --features=SMS COUNTRY_CODE

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.

vonage numbers:buy VONAGE_VIRTUAL_NUMBER COUNTRY_CODE

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 como https://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:

go run ./

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:

From: VONAGETEST, message: This is a test message

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.

Compartir:

https://a.storyblok.com/f/270183/250x250/b052219541/greg-holmes.png
Greg HolmesAntiguos alumnos de Vonage

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.