
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 accusés de réception par SMS avec Go
Temps de lecture : 8 minutes
Dans les articles précédents, nous vous avons montré comment envoyer un SMS avec Go et recevoir un SMS avec Go. Cet article vous montrera comment recevoir les accusés de réception des SMS envoyés depuis votre Account Vonage.
Ce tutoriel couvre la mise en place d'un webhook accessible au public et la fonctionnalité permettant de recevoir des accusés de réception de SMS. 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 envoie un SMS à partir de votre Account, il vérifie si vous avez configuré un webhook auquel transmettre les accusés de réception. Cette configuration est valable pour l'ensemble du compte.
Si vous avez configuré un webhook, Vonage enverra une demande à ce webhook. POST à ce webhook, il est donc temps de créer le code pour traiter cette demande de webhook.
Créez un fichier appelé delivery-receipt.go et saisissez le code suivant :
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)
}Ce code écoutera toutes les requêtes envoyées au point de terminaison /webhooks/delivery-receipt et produit la partie du corps de la requête status du corps de la requête.
Exposer le projet à l'Internet
Votre point de terminaison webhook doit être accessible publiquement sur Internet pour que les API de Vonage puissent y faire des demandes.
Ngrok est l'outil que nous suggérons pour exécuter des exemples en développement et il est utilisé dans ce tutoriel pour exposer le point de terminaison du webhook. Si vous n'avez pas installé ngrok, vous pouvez trouver une excellente introduction à ce service et comment l'installer dans ce tutoriel.
Lancez ngrok avec la commande ci-dessous :
Notez les URL publiques que ngrok crée pour vous ; elles seront similaires à l'exemple ci-dessous :
Note : Cette URL sera différente à chaque fois que vous lancerez la commande si vous utilisez le plan gratuit : 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 delivery-receipt dans le tableau de bord à chaque fois que vous exécutez la commande.
Configurer votre Account Vonage
Votre Account Vonage doit être configuré pour savoir où effectuer les demandes de récépissé de livraison. Vous pouvez ajouter l'URL du webhook de réception de livraison dans votre page de configuration de page des paramètres de Vonagesous l'intitulé Delivery receipts. L'image ci-dessous en montre un exemple :
An example of the delivery receipts settings in the Vonage Dashboard
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 delivery-receipt.go dans le répertoire du projet. Exécutez la commande suivante :
Maintenant, dans une autre fenêtre de Terminal, exécutez la commande suivante, en remplaçant YOUR_NUMBER par votre numéro de téléphone pour recevoir le SMS de test.
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 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"
} 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 sur Go :
N'oubliez pas que 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 espace de travail Slack de la communauté. J'aimerais avoir des retours de tous ceux qui ont mis en œuvre ce tutoriel et savoir comment leur projet fonctionne.
