
Partager:
Ancien développeur éducateur @Vonage. Issu d'une formation PHP, mais pas limité à un seul langage. Joueur passionné et adepte du Raspberry pi. On le trouve souvent en train de faire du bloc dans des salles d'escalade.
Recevoir des SMS entrants avec Go
Dans un article précédent, nous vous avons montré comment envoyer un SMS avec Go. Cet article vous montrera comment recevoir des SMS avec votre numéro virtuel Vonage.
Un webhook accessible au public est nécessaire et configuré avec votre Account Vonage pour recevoir un SMS entrant. Ce tutoriel couvre le processus de configuration d'un webhook accessible au public, et la fonctionnalité de réception de SMS entrants. Vous pouvez trouver le code utilisé dans ce tutoriel sur notre Dépôt d'extraits de code Go.
Conditions préalables
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.
Mise en place du code
Lorsque Vonage reçoit un SMS à votre numéro virtuel, il vérifie si vous avez configuré un webhook pour transférer ce SMS. Cette configuration peut s'appliquer à l'ensemble du compte ou être spécifique à un numéro de téléphone virtuel.
Si vous avez configuré un webhook, Vonage enverra une GET demande. Il est donc temps de créer le code qui traitera cette demande de webhook.
Créez un fichier appelé inbound-sms.go et saisissez le code suivant :
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)
}Ce code écoutera toutes les requêtes envoyées au point de terminaison /webhooks/inbound-sms et produit les valeurs msisdn et text du corps de la requête.
Exposer le projet à l'Internet
Pour que les API de Vonage fassent des demandes à votre point de terminaison webhook, celui-ci doit être accessible publiquement sur Internet.
Ngrok est notre outil de prédilection pour exécuter des exemples dans le cadre du développement. Par conséquent, ngrok est le service de choix dans ce tutoriel. Si ngrok n'est pas installé, une excellente introduction à ngrok et à son installation peut être trouvée dans ce tutoriel.
Lancez Ngrok avec la commande suivante :
Notez les URL publiques que ngrok crée pour vous. Elles seront similaires (mais différentes) des suivantes :
Cette URL sera différente à chaque fois que vous exécuterez la commande si vous utilisez le plan gratuit. Vous devrez donc mettre à jour l inbound-sms dans le tableau de bord à chaque fois que vous exécutez la commande.
Acheter un Numbers Vonage
Si vous n'avez pas encore acheté un numéro de téléphone virtuel Vonage pour suivre ce tutoriel, allez-y et achetez-en un maintenant. Vous pouvez le faire dans le tableau de bord du développeurCependant, il y a une autre option, qui est le CLI Nexmo. Le CLI peut vous aider à effectuer les tâches de gestion des comptes sans avoir à quitter votre terminal.
La commande ci-dessous recherche les numéros de téléphone capables d'envoyer et de recevoir des SMS, tout en s'assurant que le numéro appartient au pays de votre choix. Le code pays à deux caractères permet de choisir le pays ; par exemple, pour les États-Unis, il s'agirait de US.
Choisissez l'un des numéros de téléphone dans la liste des numéros de téléphone répertoriés lors de la commande. Remplacez VONAGE_VIRTUAL_NUMBER dans la commande ci-dessous par le numéro de téléphone choisi et exécutez la commande.
Configurer votre Account Vonage
Votre nouveau numéro virtuel Vonage et l'URL de votre Webhook doivent être liés afin que Vonage sache où envoyer les SMS entrants.
Comme pour l'étape précédente, vous pouvez ajouter l'URL de votre webhook à votre numéro virtuel Vonage, mais ce tutoriel montrera l'exemple sur la façon d'effectuer ce changement via le portail web.
Avant de procéder à l'installation, prenez note des points suivants :
VONAGE_VIRTUAL_NUMBER: Le numéro que vous essayez d'utiliser.WEBHOOK_URL: Votre URL Ngrok, suivi de/webhooks/inbound-smset devrait donc ressembler à quelque chose comme :https://56feb86007e8.ngrok.io/webhooks/inbound-sms
Aller à Page Numbers dans votre tableau de bord.
Cliquez sur l'icône "Edit" (qui ressemble à un stylo) sous la colonne "Manage". Dans le pop up sous SMS > Inbound Webhook URL collez votre WEBHOOK_URL et cliquez sur "Enregistrer".
Le moment de tester
Avec Ngrok déjà en cours d'exécution, dans une nouvelle fenêtre de Terminal, assurez-vous d'avoir navigué jusqu'au répertoire du projet contenant votre fichier receive-sms.go dans le répertoire du projet. Exécutez la commande suivante :
Désormais, depuis votre téléphone, vous pouvez envoyer un SMS à votre VONAGE_VIRTUAL_NUMBER.
Si vous vérifiez la fenêtre du terminal où vous avez exécuté go run ./vous devriez voir apparaître une ligne comme celle que vous voyez ci-dessous :
Le webhook reçoit plus de champs que ceux affichés ci-dessus. Vous trouverez ci-dessous une liste complète de ces champs avec quelques exemples. L'exemple ci-dessous est tiré de la API docs sous 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"
} Pour en savoir plus
Vous pouvez trouver le code présenté dans ce tutoriel sur le dépôt dépôt d'extraits de code Go.
Vous trouverez ci-dessous quelques autres tutoriels que nous avons rédigés concernant Go ou la réception de messages SMS :
N'oubliez pas, si vous avez des questions, des conseils ou des idées à partager avec la communauté, n'hésitez pas à vous rendre sur notre espace de travail Slack de la communauté. Je serais ravi d'entendre les commentaires de tous ceux qui ont mis en œuvre ce tutoriel et de savoir comment leur projet fonctionne.
