https://a.storyblok.com/f/270183/1368x665/19c91eeff9/node-js_voiceproxy.png

Comment construire un proxy vocal dans Node.js en utilisant l'API Voice

Publié le November 28, 2024

Temps de lecture : 4 minutes

Vous est-il déjà arrivé de commander un repas auprès d'un service de livraison et de devoir donner au chauffeur l'accès à votre bâtiment ? Vous pourriez hésiter à partager votre numéro personnel, mais vous voulez quand même vous assurer que votre nourriture arrive. Grâce à l'appel masqué, vous et le chauffeur pouvez communiquer sans révéler vos numéros de téléphone réels. Le chauffeur voit un numéro temporaire, et vous aussi, ce qui protège la vie privée des deux parties.

Classified Ads App PreviewClassified Ads App Preview

C'est ce que nous allons faire dans ce tutoriel en utilisant la fonction d'appel masqué de Vonage. Appel masqué de Vonage. Nous allons déployer cette application sur Vonage Cloud Runtimeéliminant ainsi le besoin de gérer des serveurs et d'héberger l'application par soi-même.

Conditions préalables

  • A Compte de développeur Vonage

  • Un numéro de téléphone Vonage. Vous pouvez l'acheter en utilisant le crédit gratuit que vous avez reçu lors de la création de votre Account. Accédez à votre tableau de bord API. Sur le panneau de gauche, sous "Construire et gérer", allez à Numbers > Acheter des Numbers. Recherchez un numéro de téléphone qui répond à vos exigences (assurez-vous que "Voice" est l'une des caractéristiques) et cliquez sur Acheter.

Heureusement, c'est très facile à faire en utilisant l'API Voice de Vonage parce que nous avons un API d'appel masqué préconstruite sur Code Hub que vous pouvez déployer instantanément ! Nous allons voir comment procéder.

Comment créer et déployer votre application

Après avoir ouvert une session dans votre compte de développeur Vonage, allez à la section Appel masqué avancé (appels masqués avancés). Sous l'onglet Déployer le code cliquez sur Déployer une nouvelle instance.

Sélectionnez la Région et donnez à votre Instance un nom. Cliquez sur Attribuer un numéro et choisissez le numéro de téléphone Vonage que vous souhaitez lier à votre application. Cliquez sur Continuer. Votre écran devrait maintenant ressembler à ceci :

Screenshot of Advanced Masked Calling application page with a new instance running with the buttons ‘Launch’, ‘View logs’ and ‘Delete’ next to them.Code Hub DeployedCliquer Lancer pour lancer l'application. Vous serez invité à saisir vos informations d'identification d'utilisateur. Votre clé API et votre mot de passe (votre secret API) se trouvent dans votre tableau de bord API.

Vous verrez alors votre nouvelle application dans la rubrique Instances déployées. Cliquez sur Lancer pour l'exécuter, et entrez votre clé et votre secret API de Vonage pour voir l'application. Vous pouvez consulter les spécifications de l'API dans la section "API".

Une fois que vous êtes connecté, vous pouvez voir la demande.

Screenshot of Masked Calling API browser applicationPhone Number Pairing

Ici, vous pouvez ajouter deux numéros de téléphone et définir une date d'expiration pour la durée d'utilisation de la fonction de masquage d'appel. Cliquez sur Ajouteret ils devraient apparaître dans votre liste de numéros de téléphone couplés. Si vous ajoutez d'autres paires de numéros de téléphone et que vous souhaitez trouver une paire spécifique, saisissez le numéro de téléphone que vous recherchez et cliquez sur Rechercher pour trouver sa correspondance.

Lorsque l'un de ces numéros appelle le numéro Vonage lié à cette application (vous pouvez confirmer le numéro lié dans la rubrique Paramètres de l'application du navigateur), le destinataire verra l'appel comme provenant du numéro Vonage, et non du numéro réel de l'appelant. De même, l'appelant compose le numéro Vonage et ne connaît pas non plus le numéro réel du destinataire.

Essayez-le

En supposant que vous ayez indiqué votre propre numéro de téléphone comme suit Numéro de téléphone 1, utilisez votre téléphone personnel pour appeler le numéro de téléphone Vonage lié à cette application. La personne qui possède le Numéro de téléphone 2 devrait recevoir un appel indiquant le numéro de téléphone Vonage au lieu de votre numéro réel. Allez-y, essayez maintenant !

Comment personnaliser le code

Si vous décidez de personnaliser l'application préconstruite directement sur Vonage Cloud Runtime, accédez à l'option Obtenir le code dans l'onglet Appel masqué avancé et cliquez sur Créer un nouvel environnement de développement. Sélectionnez votre régiondonnez à votre espace de travail un nomet choisissez le numéro de téléphone Vonage que vous voulez lier à cette application.

Screenshot of the Masked Calling API project on Vonage Cloud RuntimeMasked Calling READMEUne fois l'espace de travail ouvert, vous verrez que l'exemple d'application est prêt à l'emploi ! Cependant, vous pouvez apporter vos propres modifications au code directement à partir de cet IDE.

Pour exécuter votre projet mis à jour, ouvrez le Terminal et exécutez la commande suivante :

npm run

Une fois que vous êtes prêt à le déployer, exécutez cette commande :

vcr deploy
Voici comment fonctionne le flux d'appels :
  • L'utilisateur ajoute des numéros de téléphone (numberOne, numberTwo) et fixe l'expiration (expiryTime) de l'appariement sur le site web (front-end).

  • pairNumbers crée la paire et fixe l'échéance.

async function pairNumbers(numberOne, numberTwo, expiryTime, state) {
   try {
       await state.set(numberOne, numberTwo);
       await state.set(numberTwo, numberOne);

       const expirySeconds = getTimeInSeconds(expiryTime);
       await state.expire(numberOne, expirySeconds);
       await state.expire(numberTwo, expirySeconds);


       await state.mapSet('pairs', { [numberOne]: JSON.stringify({ numberTwo, expiryTime }) });
   } catch (e) {
       return false
   }
}
  • Le point de terminaison onCall est déclenché après l'attente d'un appel entrant au numéro Vonage.

await voice.onCall('/onCall');
await voice.onCallEvent('/onCallEvent');
  • findPair récupère les nombres appariés.

async function findPair(number, state) {
   const numbersSet = new Set();
   let pairObj = await state.mapGetValue('pairs', number);


   if (!pairObj) {
       // The pair is stored using the other number
       let pairedNumber = await state.get(number);
       numbersSet.add(pairedNumber);
       pairObj = await state.mapGetValue('pairs', pairedNumber);
   }
  • Si la paire existe et n'est pas expirée, l'appel est connecté.

app.post('/onCall', async (req, res, next) => {
   try {
       const pairedNumber = await state.get(req.body.from);


       if (!pairedNumber) {
           res.json([{
               action: 'talk',
               text: 'This number has not been configured yet.'
           }]);
           return;
       }
  • S'il n'y a pas de paire ou si une paire a expiré, la situation est traitée en conséquence (par exemple, l'appelant entend le message d'erreur).

app.post('/onCall', async (req, res, next) => {
   try {
       const pairedNumber = await state.get(req.body.from);


       if (!pairedNumber) {
           res.json([{
               action: 'talk',
               text: 'This number has not been configured yet.'
           }]);
           return;
       }
  • Après expiration, la paire est automatiquement supprimée.

app.delete('/pairs', validateRequestMiddleware, async (req, res, next) => {
   try {
       const numberOne = req.body.number_one;
       const numberTwo = req.body.number_two;


       if (!numberOne || !numberTwo) {
           res.sendStatus(400);
           return;
       }


       await state.delete(numberOne);
       await state.delete(numberTwo);
       await state.mapDelete('pairs', [numberOne, numberTwo]);
       res.sendStatus(200);
   } catch (e) {
       next(e);
   }
});

Vous pouvez inclure ce code de travail dans votre propre application. Toutefois, si vous décidez de ne pas déployer votre projet sur Vonage Cloud Runtime, vous devez tenir compte de certains éléments. Reportez-vous à la documentation pour mettre en œuvre une approche qui n'utilise pas Vonage Cloud Runtime.

Participez à la fête

Et c'est ainsi que vous avez déployé un proxy Voice sur Vonage Cloud Runtime ! Vous pouvez niveler l'application encore plus loin en ajoutant vos propres fonctionnalités. Notre communauté de développeurs s'agrandit sur Slacket nous aimerions que vous en fassiez partie. Si vous essayez ce tutoriel, j'aimerais savoir ce que vous en pensez. N'hésitez pas à m'envoyer un message sur Xanciennement connu sous le nom de Twitter, et suivre notre équipe sur Twitter. Bon codage !

Partager:

https://a.storyblok.com/f/270183/384x384/b68093ec17/diana-pham.png
Diana PhamDéfenseur des développeurs

Diana est défenseur des développeurs chez Vonage. Elle aime manger des huîtres fraîches.