
Partager:
Michael Crump travaille chez Vonage au sein de l'équipe Developer Experiences. C'est un codeur, un YouTuber et un conférencier qui aborde fréquemment divers sujets liés à .NET et au développement des communications et de l'informatique en nuage. Il se passionne pour aider les développeurs à comprendre les avantages de chacun d'entre eux de manière simple.
Comment gérer les appels téléphoniques entrants avec Node.js
Temps de lecture : 6 minutes
Introduction
L'API Voice API de Vonage de Vonage est le moyen le plus simple de créer des applications vocales de haute qualité dans le nuage. Avec l'API Voice, vous pouvez :
Créez des applications qui s'adaptent aux technologies web que vous utilisez déjà.
Contrôlez le flux des appels entrants et sortants en JSON avec Nexmo Call Control Objects (NCCO) (Note : Nexmo est maintenant Vonage).
Enregistrer et stocker les appels entrants ou sortants
Créer des conférences téléphoniques
Envoyez des messages en synthèse vocale dans 40 langues avec différents genres et accents.
Et plus encore !
Dans ce tutoriel, vous apprendrez à recevoir des appels entrants en implémentant un webhook à l'aide de Node.js.
Conditions préalables
Avant de commencer, assurez-vous que vous disposez des éléments suivants :
Node.js installé. Node.js est un environnement d'exécution JavaScript open-source et multiplateforme.
ngrok - Un Account gratuit est nécessaire. Cet outil permet aux développeurs d'exposer un serveur de développement local à l'Internet.
OPTIONNEL - CLI de Vonage Une fois que Node.js est installé, installez le CLI en tapant
npm install -g @vonage/cli. Cet outil vous permet de créer et de gérer des applications Vonage à partir d'une interface de ligne de commande vs le portail des développeurs Vonage.
Créer une application Voice-Enabled de Vonage
Pour utiliser l Voice API de Vonagede Vonage, vous devez créer une Application Vonage à partir du portail des développeurs. Si vous n'avez pas de compte, allez-y et créez-en un, car nous fournissons des crédits pour commencer. Aucune carte de crédit n'est nécessaire.
Nous devrons configurer les webhooks de l'application et plus encore. Veuillez noter que ceci peut être accompli par le biais du Portail des développeurs de Vonage ou le CLI de Vonage. Pour ce tutoriel, nous utiliserons le tableau de bord du développeur de Vonage.
Après avoir créé un Account, ouvrez une session dans le tableau de bord du développeur de Vonage. section Applicationset créez une nouvelle application. Donnez un nom à votre application, par exemple Appel entrant.
InboundCall.png
Faites défiler la page et assurez-vous que l'option Voice est activée.
Notez les Réponseet événement car nous les compléterons sous peu. Nous laisserons l URL de repli de repli.
VoiceCapability.png
Appuyer sur Générer une nouvelle application en bas de la page pour continuer.
Ce tutoriel utilise également un numéro de téléphone virtuel. Pour en acheter un, rendez-vous sur Numbers > Acheter des Numbers et recherchez celui qui répond à vos besoins. Une fois que vous avez un numéro, reliez-le au tableau de bord du développeur Vonage, comme indiqué ci-dessous.
LinkedNumber.png
Ensuite, nous utiliserons ngrok pour exposer nos points de terminaison webhook sur notre machine locale en tant qu'URL publique.
Exécuter ngrok
ngrok est une application multiplateforme qui permet aux développeurs d'exposer un serveur de développement local à l'Internet avec un minimum d'effort. Nous l'utiliserons pour exposer notre service à l'Internet. Une fois que vous avez configuré ngrok et que vous êtes connecté (encore une fois, le compte gratuit est acceptable), exécutez la commande suivante :
ngrok http 4001Une fois que ngrok s'est exécuté, il vous donnera un message de Forwarding que nous utiliserons comme base pour nos Webhooks plus tard dans l'article. La mienne ressemble à ce qui suit :
ngrok.png
Se souvenir de la Réponse et événement dans le portail des développeurs de Vonage, comme mentionné précédemment ? Nous devrons utiliser l'URL ngrok et remplir chaque champ, en ajoutant les lettres /answer et /eventpour l'URL de la réponse et l'URL de l'événement.
webhooksection.png
Lorsque vous appelez le numéro associé à l'application et que celle-ci répond, le webhook défini dans l URL de réponse se déclenche. De même, les événements sont enregistrés avec une requête POST et se déclenchent lors de l'appel du numéro ou si le numéro est occupé, etc.
Configuration du projet Node.js
Maintenant que nous avons créé notre application Vonage Voice à l'intérieur du tableau de bord du développeur, voyons comment nous devons configurer notre application Node.js.
Commencez par accéder à une invite de commande/terminal, créez un répertoire de travail et initialisez un projet Node.js.
Nous traiterons les demandes avec Express et utiliserons body-parser pour analyser les corps des requêtes entrantes. Installez ces deux logiciels avec :
npm install express body-parser --saveCréez un fichier index.js instanciez express et écoutez le serveur sur le port 4001. Parce que vous avez configuré votre ngrok pour exposer localhost:4001vous devez vous en tenir au même port.
'use strict'
const app = require('express')();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const server = app.listen(process.env.PORT || 4001, () => {
console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env);
});
Définissons le point de terminaison de l'URL de la réponse comme suit /answer et l'URL de l'événement comme /event.
Créez une route HTTP GET pour traiter les demandes de /answer pour récupérer votre NCCO :
app.get('/answer', function (req, res) {
const ncco = [
{
action: 'talk',
voiceName: 'Jennifer',
text: 'Hello, thank you for calling. This is the Jennifer voice from Vonage.'
}
];
res.json(ncco);
});Définissez votre texte à lire par une voix de synthèse en JSON (ou objet JavaScript, dans ce cas). Vous pouvez personnaliser l'objet NCCO avec des paramètres optionnels avec différents agents selon la langue, le sexe, et même l'accent.
Le point d'arrivée de l'élément event_url doit être POST, donc définissons /event:
app.post('/event', function (req, res) {
console.log(req.body);
res.status(204).end();
});Gardez à l'esprit que nous allons surveiller l'état de notre terminal. Regardez cet exemple de code pour un exemple de solution de repli qui gère des choses telles qu'un dépassement de délai, si le numéro est occupé, s'il n'y a pas de réponse, etc.
Exécuter l'application
Saisissez les informations suivantes à l'invite de votre commande/terminal pour lancer l'application :
node index.jsPassons un coup de fil pour voir si votre application fonctionne ! Appelez votre numéro virtuel à partir de votre téléphone physique. Si tout fonctionne, vous devriez entendre le message que vous avez défini dans votre NCCO.
Consultez également votre terminal pour vérifier l'état de votre appel. Vous trouverez ci-dessous un exemple de ce à quoi ressemble le mien :
{
headers: {},
from: '19999999999',
to: '19999999999',
uuid: '912e...',
conversation_uuid: 'CON-07f...',
status: 'ringing',
direction: 'inbound',
timestamp: '2023-02-22T19:27:47.276Z'
}L'état change en fonction de l'événement dans lequel se trouve l'appel. Par exemple, nous commençons par ringingpuis nous passons à startedpuis à answeredet enfin completed si l'appel a été traité avec succès.
Synthèse
Maintenant que vous avez créé un appel entrant avec l'API Voice de Vonage et Node.js, pourquoi ne pas apprendre à envoyer des messages de synthèse vocale dans plus de 40 langues ? Vous pouvez également en apprendre davantage sur notre Voice API et vous plonger dans plusieurs extraits de code.
Si vous avez des questions ou des commentaires, rejoignez-nous sur le Slack des développeurs de Vonage ou envoyez-moi un Tweet sur Twitteret je vous répondrai. Merci encore d'avoir lu, et je vous donne rendez-vous au prochain numéro !
Partager:
Michael Crump travaille chez Vonage au sein de l'équipe Developer Experiences. C'est un codeur, un YouTuber et un conférencier qui aborde fréquemment divers sujets liés à .NET et au développement des communications et de l'informatique en nuage. Il se passionne pour aider les développeurs à comprendre les avantages de chacun d'entre eux de manière simple.