
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.
Traiter un appel entrant avec Go
Temps de lecture : 7 minutes
Dans ce tutoriel, nous allons apprendre à gérer les appels téléphoniques entrants à l'aide d'un tableau JSON d'actions appelées objets de contrôle d'appel (NCCO). Ce tutoriel utilise Go et l Voice API.
Nous allons écrire un serveur qui répondra aux points de terminaison webhook que Vonage envoie lorsqu'un appel arrive ou qu'un événement est déclenché. Nous créerons ensuite une application Vonage dotée de capacités vocales, afin d'acheminer les appels vocaux entrants vers leur destination.
Vous pouvez trouver le code présenté dans ce tutoriel sur le dépôt dépôt d'extraits de code Go.
Conditions préalables
Un numéro de téléphone
Un Account Vonage
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.
Écrire le code
Lorsque Vonage reçoit un appel vocal vers votre numéro virtuel, il vérifie si vous avez configuré un webhook pour acheminer l'appel vocal. Cette configuration est spécifique à votre application, que vous avez créée et configurée précédemment. Vous avez également configuré un webhook d'événement, qui émet tout événement dans votre terminal, par exemple si l'appel a sonné ou s'il a été répondu.
Écrivons le code qui traitera les requêtes adressées à ces deux webhooks. Créez un fichier appelé receive-an-inbound-call.go et copier ce qui suit dans ce fichier :
package main
import (
"encoding/json"
"fmt"
"net/http"
"github.com/vonage/vonage-go-sdk/ncco"
)
func answer(w http.ResponseWriter, req *http.Request) {
paramKeys, _ := req.URL.Query()["from"]
MyNcco := ncco.Ncco{}
talk := ncco.TalkAction{Text: "Thank you for calling " + string(paramKeys[0])}
MyNcco.AddAction(talk)
data, _ := json.Marshal(MyNcco)
w.Header().Set("Content-Type", "application/json")
w.Write(data)
}
func event(w http.ResponseWriter, req *http.Request) {
paramKeys, _ := req.URL.Query()["status"]
fmt.Println("Event status: " + paramKeys[0])
}
func main() {
http.HandleFunc("/webhooks/answer", answer)
http.HandleFunc("/webhooks/event", event)
http.ListenAndServe(":8080", nil)
}Le code ci-dessus contient trois fonctions. La première fonction est "answer", qui récupère le numéro d'où provient l'appel, crée une action Talk Ncco avec la chaîne "Thank you for calling" ainsi que le numéro de téléphone de l'appelant. Elle renvoie ensuite cette action Ncco en guise de réponse.
La deuxième fonction est un gestionnaire pour toutes les mises à jour d'événements. Pour ce tutoriel, chaque fois que le webhook de l'événement est déclenché, le code affichera le statut de l'événement dans votre terminal.
La troisième fonction est la fonction "main", qui crée un /webhooks/answeret une URL /webhooks/event afin d'exécuter la fonction correspondant à la requête. La dernière partie de ce code consiste à transformer le code en serveur web en écoutant sur le port 8080.
Pour tester votre application, exécutez la commande ci-dessous :
go run receive-an-inbound-call.goDans votre navigateur, allez à "http://localhost:8080/webhooks/answer". Vous serez accueilli par votre tableau JSON, qui est votre BCN, comme indiqué ci-dessous :
[{"action":"talk","text":"Thank you for calling 447000000","bargeIn":false,"loop":1}]Le BCN présenté dans l'exemple ci-dessus contient quatre champs dans le tableau, qui sont décrits plus en détail ci-dessous :
"action":"talk"détermine le type d'action de ce NCCO. Il indique à Vonage qu'il s'agit d'une action de conversation"text":"Thank you for calling 447000000"indique à Vonage le corps du texte à prononcer dans l'appel vocal"bargeIn":falseindique à Vonage que l'utilisateur ne peut pas interrompre la conversation tant qu'elle n'est pas terminée"loop":1demande à Vonage de ne prononcer le texte qu'une seule fois
Exposer le projet à l'Internet
Lorsque l'appel arrive, Vonage envoie une requête HTTP à l'URL webhook qui est configurée pour le numéro. Cette application doit donc être accessible à l'internet et nous recommandons donc Ngrok.
Lancez Ngrok avec la commande suivante :
Copiez l'URL https que ngrok utilise, vous en aurez besoin plus tard. Elle sera similaire à l'exemple ci-dessous :
Remarque Cette URL sera différente à chaque fois que vous exécuterez la commande si vous utilisez le plan gratuit. Vous devrez donc mettre à jour votre application dans le tableau de bord à chaque fois que vous exécutez la commande.
Configurer les paramètres
Créez une application dans votre tableau de bord sous "Vos Applications". Donnez un nom à votre nouvelle application et sélectionnez "Generate public and private key", ce qui télécharge le fichier private.key pour vous. Vous devez ensuite déplacer le fichier pour qu'il soit à côté du code que vous êtes sur le point de créer.
Ajoutez les fonctionnalités Voice à l'application et configurez les URL à l'aide de l'URL Ngrok que vous avez copiée précédemment. Pour l'URL de réponse, utilisez [paste ngrok url]/webhooks/answer et pour l'URL de l'événement [paste ngrok url]/webhooks/event.
Vous avez acheté un numéro virtuel Vonage, créé une Applications Vonage et écrit le code pour gérer les événements webhook. Il est temps de tester votre projet !
Le moment de tester
Nous avons configuré notre application Vonage et notre numéro de téléphone pour savoir comment traiter les appels vocaux entrants. Nous avons également écrit un webhook à l'intérieur de receive-an-inbound-call.go pour gérer toute demande d'appel entrant. Il est maintenant temps de tester cette application. Lorsque vous exécutez la commande ci-dessous, elle démarre un serveur web avec ce webhook à l'écoute des demandes. Exécutez donc la commande ci-dessous pour commencer à tester notre nouvelle application :
Lorsque vous appelez votre numéro virtuel, vous entendez la phrase "Merci d'avoir appelé" suivie de votre numéro de téléphone.
Vous avez créé une application Vonage, loué un numéro de téléphone virtuel et écrit du code pour gérer les appels webhook vers ce nouveau numéro. Lorsque vous appelez le numéro, votre code ajoute un message de synthèse vocale à l'appel pour que vous puissiez l'entendre.
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 l'utilisation de nos services avec Go :
Si vous avez des questions, des conseils ou des idées que vous souhaitez partager avec la communauté, n'hésitez pas à vous rendre sur notre espace de travail Slack de la communauté. J'aimerais que tous ceux qui ont mis en œuvre ce tutoriel me fassent part de leurs commentaires et de la manière dont leur projet fonctionne.
