
Partager:
Julia s'engage à aider ses collègues développeurs en créant des tutoriels, des guides et des ressources pratiques. Grâce à son expérience en matière de sensibilisation et d'éducation, elle vise à rendre la technologie plus accessible et à améliorer l'expérience globale des développeurs. Vous pouvez souvent la trouver lors d'événements communautaires locaux.
Comment passer des appels téléphoniques en synthèse vocale avec Node-RED
Temps de lecture : 11 minutes
Cet article est le quatrième d'une série de tutoriels "Getting Started with Nexmo and Node-RED".
Dans les tutoriels précédents, vous avez appris à envoyer et à recevoir des SMS de manière programmatique à l'aide de l'API Nexmo et à gérer les appels entrants. Ensuite, vous apprendrez les appels sortants et, à la fin de cet article, vous aurez passé votre premier appel téléphonique de synthèse vocale avec Node-RED.
Conditions préalables
Avant de commencer, vous aurez besoin de quelques éléments :
Facultatif : ngrok - se mettre au diapason avec l'article du blog d'Aaron
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.
Obtenir ses diplômes
Afin d'interagir avec l'API Voice, vous devez prendre note de certaines choses. Une fois que vous avez créé un compte Nexmo, allez dans le tableau de bord pour trouver votre clé API et votre secret. Ensuite, vous aurez besoin d'un numéro virtuel activé par Voice. Allez dans Numbers > Acheter des Numbers pour en obtenir un.

Configuration de l'éditeur Node-RED
Tout d'abord, vous devez installer le runtime et l'éditeur. Cela peut se faire sur votre machine locale, sur un Single Board Computer (par exemple Raspberry Pi), ou sur un certain nombre d'options hébergées dans le cloud. Cet exemple utilisera votre machine locale, donc une fois que vous avez installé Node-RED globalement, tapez simplement la commande ci-dessous dans votre terminal pour commencer.
Vous pouvez ensuite accéder à l'éditeur Node-RED en pointant votre navigateur sur http://localhost:1880.
Une fois votre éditeur ouvert, vous devez installer les nœuds Nexmo. Vous pouvez le faire sous la palette Gérer la palette en recherchant le paquet node-red-contrib-nexmo et en cliquant sur installer.

Vous devriez maintenant voir tous les nœuds Nexmo apparaître sur le côté gauche de votre écran, parmi les autres nœuds par défaut.
Passer un appel téléphonique en synthèse vocale avec Node-RED
Création d'une application Nexmo
Certaines des API de Nexmo, y compris l'API Voice, utilisent les Applications Nexmo pour contenir les informations de sécurité et de configuration nécessaires pour se connecter aux terminaux Nexmo.
Dans la palette Nexmo Node-RED, plusieurs nœuds ont la possibilité de créer ces Applications : getrecording, earmuff, mute, hangup, transfer, createcall, playaudio, playtts et playdtmf.
Puisque l'objectif final est de passer un appel sortant, utilisez le nœud createcall qui effectuera un appel sortant à l'aide du NCCO créé ci-dessus.
Une fois que vous l'avez dans votre espace de travail, double-cliquez sur le nœud createcall pour ouvrir l'éditeur de nœuds. À côté du nœud Nexmo Credentialssélectionnez "Add new nexmovoiceapp..." dans le menu déroulant et cliquez sur le bouton d'édition. Remplissez les détails ci-dessous et cliquez sur Create New Application.
| KEY | DESCRIPTION |
|---|---|
Name |
Choose a name for your Voice Application, for example TTS call Node-RED. |
API Key |
Your Nexmo API key, shown in your account overview. |
API Secret |
Your Nexmo API secret, shown in your account overview. |
Answer URL |
The URL that Nexmo makes a request to when handling inbound calls. Won't need one for this tutorial, so use http://example.com for now. |
Event URL |
Nexmo will send call events (e.g. ringing, answered) to this URL. If you’d like to receive events about the progress of your call, make sure your server is exposed to the internet, then use YOUR_URL/event for this field.\ |
\
Sinon, n'hésitez pas à utiliser http://example.com - qui répondra par 200 OK.
\
Vous pouvez également remplacer cet eventURL pour un nœud spécifique dans ses propriétés. createCall spécifique dans ses propriétés.
Node-RED créera alors une nouvelle Applications Nexmo sur votre Account et remplira les champs App ID et Private Key pour que vous puissiez les sauvegarder. Vous pouvez maintenant trouver cette application dans votre Nexmo Dashboard sous Voice > Vos Applications.

Construire l'objet de contrôle d'appel Nexmo (NCCO)
Les appels Nexmo sont contrôlés par objets de contrôle d'appel Nexmoégalement connus sous le nom de NCCOs. Un NCCO définit une liste d'actions à suivre lorsqu'un appel est traité. Il y a beaucoup d'actions différentes disponibles, trouvez les nœuds correspondants sous la palette Nexmo dans votre éditeur Node-RED ou consultez la Référence NCCO pour en savoir plus.
Pour ce tutoriel, nous utiliserons l'action talk action.
Une fois que le NCCO est prêt, il est transmis au nœud createcall qui sera utilisé pour passer l'appel sortant. Ce nœud createcall prend 3 types d'entrée pour le NCCO dans le champ Answer dans le champ JSON, URL ou msg.ncco. Selon le type choisi, il existe 3 façons correspondantes de construire le BCN, comme suit.
msg.ncco
Faites glisser et déposez le nœud talk dans votre espace de travail, double-cliquez dessus pour ouvrir les propriétés du nœud et définissez le champ Text{} au message que vous souhaitez lire lorsque vous répondez à l'appel. Notez le signe {} à côté de l'étiquette Text qui indique que cette valeur peut être définie de manière dynamique, en utilisant le modèle Mustache templating. Vous pouvez également sélectionner un Voice Namevoir le Guide de synthèse vocale pour la liste complète des options.
Ensuite, il convient de câbler la sortie du nœud talk dans le nœud createcall puis, dans les propriétés du nœud createcall propriétés du nœud, sélectionnez msg.ncco dans le menu déroulant Answer dans le menu déroulant.

JSON
Si vous préférez écrire votre NCCO en JSON, au lieu d'utiliser les nœuds d'action, vous pouvez le faire dans le nœud createcall nœud. Ouvrez les propriétés du nœud et sélectionnez JSON dans le champ Answer dans le champ Développez l'éditeur JSON et collez l'extrait ci-dessous :
[
{
"action": "talk",
"text": "This is a text to speech message from Nexmo"
}
]Assurez-vous d'avoir défini talk comme un actionmais n'hésitez pas à personnaliser l'élément text.

Réponse URL
Vous pouvez également afficher le NCCO sur une AnswerURL. Dans ce cas, vous devrez également exposer votre serveur local à l'internet.
Faites glisser et déposez le nœud talk dans votre espace de travail, puis connectez-le à un nœud d'entrée et à un nœud de sortie. voice webhook nœud d'entrée et à un nœud de sortie return NCCO nœud de sortie. Ensuite, dans le nœud voice webhook sélectionnez GET comme méthode et tapez quelque chose comme /answer dans le champ URL de réponse.
Enfin, allez dans les propriétés du talk et définissez le champ Text{} au message que vous souhaitez lire lorsque l'on répond à l'appel. Notez le signe {} à côté de l'étiquette Text qui indique que cette valeur peut être définie dynamiquement, en utilisant le templating Mustache templating.
Vous pouvez également sélectionner un Voice NameVoir le Guide de synthèse vocale pour la liste complète des options.

Exposer son serveur local à l'internet
Ensuite, vous devrez exposer votre serveur local à l'internet, afin que Nexmo puisse y accéder. Si vous utilisez Node-RED sur un serveur public au lieu de votre machine locale, vous pouvez sauter cette étape.
Sinon, un moyen pratique de le faire est d'utiliser un service de tunneling comme ngrok.
Télécharger et installez ngrokpuis lancez-le dans le terminal pour démarrer un tunnel sur le port 1880.
Naviguez jusqu'à l'URL affichée pour trouver votre éditeur Node-RED.
Enfin, dans les propriétés du nœud createcall propriétés du nœud, sélectionnez URL dans le menu déroulant Answer et remplissez le champ avec YOUR_URL/answer

Passer l'appel sortant
Ensuite, regardons de plus près les propriétés du createcall propriétés du nœud. Pour effectuer l'appel sortant, vous devez fournir quelques détails supplémentaires.
Sélectionnez d'abord Phone dans le menu déroulant Endpoint dans le menu déroulant. L'appel sera transféré vers un numéro de téléphone, que vous pouvez spécifier dans le champ de texte situé à côté de l'étiquette. Number{} à côté de l'étiquette.
Notez le signe {} ce qui signifie que Mustache templating est pris en charge pour ces champs. Vous pouvez coder en dur un numéro de téléphone ici, ou le passer dynamiquement à l'aide d'un nœud inject et, dans ce cas, le référencer avec {{msg.payload}}.
Passez à l'étape suivante et définissez l'un de vos Numbers virtuels comme From{} numéro.
Ajouter un nœud inject au flux et le câbler en tant qu'entrée pour createcall. Dans les propriétés du nœud, sélectionnez Number dans le menu déroulant Payload et remplissez le champ de texte à côté avec le numéro de téléphone que vous souhaitez appeler au format E.164. Par exemple, 447401234567.
Pour avoir une idée plus précise de ce qui se passe lorsque vous faites l'appel, câblez la sortie de la fonction createcalldans un nœud debug nœud.
Cliquez maintenant sur Déployer et cliquez sur le bouton du nœud inject votre téléphone devrait sonner d'une minute à l'autre !

Optionnel : Webhook d'événement
Si vous souhaitez recevoir des événements concernant le déroulement de votre appel, vous pouvez également mettre en place un webhook d'événements. Vous devez d'abord mettre en place un gestionnaire d'événements, puis exposer votre serveur local à l'internet.
Mise en place d'un gestionnaire pour l'URL de l'événement
Connecter un nœud d'entrée http à un nœud http response ainsi qu'à un nœud debug afin que vous puissiez visualiser votre accusé de réception dans la zone de débogage.
Dans le nœud d'entrée http nœud d'entrée, sélectionnez POST en tant que Method et remplissez le champ URL avec quelque chose comme /event. Le nœud http response devrait avoir 200 défini comme Status codemais ne vous inquiétez pas, c'est aussi la valeur par défaut.

Exposer son serveur local à l'internet
Ensuite, vous devrez exposer votre serveur local à l'internet, afin que Nexmo puisse y accéder. Si vous utilisez Node-RED sur un serveur web public, ou si vous avez choisi de servir le NCCO sur une AnswerURL, vous pouvez sauter cette étape.
Sinon, un moyen pratique de le faire est d'utiliser un service de tunneling comme ngrok.
Télécharger et installez ngrokpuis lancez-le dans le terminal pour démarrer un tunnel sur le port 1880.
Naviguez jusqu'à l'URL affichée pour trouver votre éditeur Node-RED.

Mise à jour de l'URL de l'événement
Enfin, ouvrez les propriétés du createcall et remplissez le champ Event URL avec YOUR_URL/event.

Frapper Déployer et cliquez sur le bouton du nœud inject votre téléphone va sonner d'une minute à l'autre ! Vous pouvez maintenant suivre le déroulement de votre appel dans la barre latérale de débogage.
Quelle est la prochaine étape ?
En savoir plus sur l Voice API
Consultez la Référence NCCO pour en savoir plus sur les nombreuses façons de contrôler votre appel.
Regardez de plus près Node-RED
Partager:
Julia s'engage à aider ses collègues développeurs en créant des tutoriels, des guides et des ressources pratiques. Grâce à son expérience en matière de sensibilisation et d'éducation, elle vise à rendre la technologie plus accessible et à améliorer l'expérience globale des développeurs. Vous pouvez souvent la trouver lors d'événements communautaires locaux.
