https://d226lax1qjow5r.cloudfront.net/blog/blogposts/text-to-speech-voice-calls-with-go/blog_go_text-to-speech_1200x600.png

Appels vocaux avec synthèse vocale avec Go

Publié le November 25, 2020

Temps de lecture : 5 minutes

Dans ce tutoriel, nous allons apprendre à passer des appels téléphoniques sortants avec la synthèse vocale en utilisant Go et l'API Voice API. Ce tutoriel nécessitera la création d'une application Voice dotée de fonctionnalités vocales.

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

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.

Configurer votre Account Vonage

Créez une application sous "Vos Applications" dans le tableau de bord. 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.

Sous Capacités, activez l'option Voice.

*Remarque : Pour ce tutoriel, vous n'avez pas besoin de mettre en place des webhooks pour gérer les deux champs requis : "Event" et "Answer". Cependant, comme vous devez saisir ces champs dans un formulaire, vous pouvez indiquer une URL telle que : "http://example.com/event" et "http://example.com/answer". Si vous souhaitez traiter ces demandes vous-même, vous devrez créer deux webhooks dans votre application pour recevoir les demandes, puis exposer vos webhooks à l'Internet. Pour ce faire, je suggère d'utiliser ngrok, qui fait l'objet d'un excellent tutoriel ici : https://developer.vonage.com/en/blog/local-development-nexmo-ngrok-tunnel-dr/.

La page qui s'ouvre maintenant affiche votre numéro d'identification de l'Application. Notez bien cet identifiant !

Vous avez maintenant acheté un numéro virtuel Vonage et créé une Applications Vonage.

Mise en place du code

Il est maintenant temps d'écrire votre code pour réaliser cet appel vocal texte-parole. Dans le répertoire de votre projet (où vous avez également enregistré votre fichier private.key créez un nouveau fichier appelé make-an-outbound-call-ncco.go et entrez le code suivant :

Remarque : veillez à mettre à jour le PATH_TO_PRIVATE_KEY_FILE pour qu'il soit le chemin d'accès à votre fichier de clé privée (y compris le nom du fichier de clé privée), votre APPLICATION_ID avec l'identifiant de l'application que vous avez noté plus tôt dans le tutoriel, mettez à jour l'identifiant de l'application avec le numéro virtuel de Vonage que vous venez d'acheter. VONAGE_NUMBER par votre numéro virtuel Vonage récemment acheté. Enfin, mettez à jour TO_NUMBER avec le numéro auquel vous vous attendez à recevoir l'appel.

package main

import (
    "fmt"
    "io/ioutil"

    "github.com/vonage/vonage-go-sdk"
    "github.com/vonage/vonage-go-sdk/ncco"
)

func main() {
    privateKey, _ := ioutil.ReadFile(PATH_TO_PRIVATE_KEY_FILE)
    auth, _ := vonage.CreateAuthFromAppPrivateKey(APPLICATION_ID, privateKey)
    client := vonage.NewVoiceClient(auth)

    from := vonage.CallFrom{Type: "phone", Number: VONAGE_NUMBER}
    to := vonage.CallTo{Type: "phone", Number: TO_NUMBER}

    MyNcco := ncco.Ncco{}
    talk := ncco.TalkAction{Text: "This is a text to speech call from Vonage"}
    MyNcco.AddAction(talk)

    result, _, _ := client.CreateCall(vonage.CreateCallOpts{From: from, To: to, Ncco: MyNcco})

    fmt.Println(result.Uuid + " call ID started")
}

Dans le code ci-dessus, la fonction main() récupère d'abord la valeur de votre fichier de clé privée (qui devrait s'appeler private.key), elle crée ensuite un objet d'authentification en utilisant l'identifiant de votre Application et votre fichier private.key. Ensuite, vous créez un nouvel objet Voice Client, en créant des objets pour vos numéros de téléphone "from" et "to" avec le type "phone".

Vous créez alors un objet Ncco avec l'objet TalkAction de "Ceci est un appel texte-parole de Vonage", que vous ajoutez ensuite à l'objet MyNcco à l'objet Enfin, une demande d'appel est adressée à l'objet voice API contenant l'objet from, to et Ncco .

Si l'appel a été lancé avec succès, vous verrez l'Uuid de l'appel s'afficher sur votre terminal.

Le moment de tester

Dans votre fenêtre Terminal, assurez-vous d'avoir navigué jusqu'au répertoire du projet contenant votre fichier make-an-outbound-call-ncco.go et exécutez la commande suivante pour passer votre appel téléphonique :

go run make-an-outbound-call-ncco.go

Si vous réussissez, vous devriez voir quelque chose de similaire à la sortie ci-dessous dans votre Terminal :

0a345567-913d-4e49-af04-cec9bfbcbfcd call ID started

Vérifiez votre téléphone pour l'appel entrant, répondez et entendez les mots merveilleux de "Ceci est un appel texte à voix de Vonage".

Vous avez maintenant écrit une application Go qui utilise l'API Voice de Vonage pour passer un appel vocal sortant de type synthèse vocale !

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 :

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.

Partager:

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

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.