https://d226lax1qjow5r.cloudfront.net/blog/blogposts/forward-call-via-voice-proxy-node-red-dr/forward-call-featured.png

Renvoyer un appel via un Voice Proxy avec Node-RED

Publié le May 24, 2021

Temps de lecture : 10 minutes

Note : Certains des outils ou méthodes décrits dans cet article peuvent ne plus être pris en charge ou ne plus être d'actualité. Pour un contenu mis à jour ou une assistance, consultez nos derniers articles ou contactez-nous sur le site Communauté Vonage Slack

Dans ce tutoriel, nous allons utiliser l'API Voice de Nexmo pour passer des appels privés, en transférant un appel via un proxy vocal, et comme bonus supplémentaire, nous allons également y ajouter une fonction d'enregistrement à la fin.

Si vous vous êtes déjà demandé comment contacter votre chauffeur de covoiturage, votre hôte Airbnb ou votre coursier sans connaître leur numéro, ou si vous souhaitez simplement passer des appels privés, suivez-nous et découvrez comment cela se fait !

Dépendances

Conditions préalables

Avant de commencer, vous aurez besoin de quelques éléments :

  • Node.js et Node-RED installés, si vous développez localement

  • Un moyen d'exposer votre serveur à l'internet. Cela signifie que vous utilisez une version hébergée de Node-RED, ou que vous utilisez un service de tunnellisation comme ngrok - pour vous familiariser avec ce service Démarrer avec Ngrok dans Node-RED tutoriel

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.

Obtenir ses diplômes

Pour utiliser les nœuds Nexmo dans Node-RED, vous devrez fournir vos identifiants, il est donc préférable de les garder à portée de main. Allez dans votre tableau de bord pour trouver votre clé API et votre secret, et notez-les.

Ensuite, vous aurez besoin d'un numéro virtuel compatible avec Voice vocal. Allez dans Numbers > Acheter des Numbers pour en obtenir un.

Buy Number Nexmo DashboardBuy Number Nexmo Dashboard

Configuration de l'éditeur Node-RED

Accédez à votre éditeur Node-RED en pointant votre navigateur sur http://localhost:1880.

Une fois l'é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 - dans votre palette de nœuds, parmi d'autres nœuds par défaut.

Exposer votre serveur local à l'Internet

Si vous n'utilisez pas une version hébergée de Node-RED, l'API Voice de Nexmo aura besoin d'un autre moyen d'accéder à vos points de terminaison webhook. rendre votre serveur local accessible via l'internet public. Si vous exécutez Node-RED sur un serveur web public au lieu de votre machine locale, vous êtes prêt à passer à l'étape suivante. Créer une application Nexmo Voice l'étape de création d'une application vocale Nexmo.

Un moyen pratique d'y parvenir est d'utiliser un service de tunnelisation tel que ngroket qu'il existe un node que vous pouvez installer directement depuis votre éditeur.

N'hésitez pas à consulter également notre tutoriel sur Débuter avec Ngrok dans Node-RED pour en savoir plus.

Une fois que vous avez installé le nœud ngrok et redémarré votre éditeur, le nœud ngrok devrait apparaître dans votre palette de nœuds. Il prend les chaînes sur ou off pour démarrer/arrêter le tunnel, et affiche l'adresse de l'hôte ngrok dans le champ msg.payload.

Importer du Presse-papiers l'extrait ci-dessous, ou essayez de construire ce chemin vous-même.

[
    {
        "id": "faed0f7.1e524f",
        "type": "inject",
        "z": "5b8bbfc3.1a9f18",
        "name": "",
        "topic": "",
        "payload": "on",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 100,
        "wires": [
            [
                "8a01baeb.6756d"
            ]
        ]
    },
    {
        "id": "11051fa9.75bd1",
        "type": "inject",
        "z": "5b8bbfc3.1a9f18",
        "name": "",
        "topic": "",
        "payload": "off",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 160,
        "wires": [
            [
                "8a01baeb.6756d"
            ]
        ]
    },
    {
        "id": "8a01baeb.6756d",
        "type": "ngrok",
        "z": "5b8bbfc3.1a9f18",
        "port": "1880",
        "creds": "5a9e2b8c.173a2c",
        "region": "ap",
        "subdomain": "",
        "name": "",
        "x": 400,
        "y": 140,
        "wires": [
            [
                "93fd5675.743c1"
            ]
        ]
    },
    {
        "id": "93fd5675.743c1",
        "type": "debug",
        "z": "5b8bbfc3.1a9f18",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 620,
        "y": 140,
        "wires": []
    },
    {
        "id": "5a9e2b8c.173a2c",
        "type": "ngrokauth",
        "z": ""
    }
]

À ce stade, votre éditeur devrait ressembler à ceci :

ngrok pathngrok path

La dernière étape avant de cliquer sur Déployerouvrez les propriétés du nœud ngrok et spécifiez le numéro de port (1880 pour Node-RED) et la région.

Vous pouvez également ajouter votre authtoken pour votre Account ngrok si vous en avez un. Ne vous inquiétez pas si vous n'en avez pas, sautez cette étape pour l'instant. Le nœud vous avertira qu'il n'est pas entièrement configuré, mais ce n'est pas un problème.

ngrok propertiesngrok properties

Frapper Déployer et cliquez sur l'icône sur inject puis naviguez vers l'URL affichée dans la zone de débogage (YOUR_URL pour référence future) pour trouver votre éditeur Node-RED à une adresse publique.

ngrok node-redngrok node-red

Créer une application Nexmo Voice

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 capacité de créer ces Applications : getrecording, earmuff, mute, hangup, transfer, createcall, playaudio, playtts et playdtmf.

Faites glisser l'un de ces nœuds dans votre espace de travail, puis double-cliquez dessus pour ouvrir les propriétés du nœud.

A côté de l'application Nexmo Credentialssélectionnez "Add new nexmovoiceapp..." dans le menu déroulant et cliquez sur le bouton "Editer". Remplissez les détails ci-dessous et cliquez sur Créer une nouvelle application.

KEY DESCRIPTION
Name Choose a name for your Voice Application, for example "Nexmo Voice Application".
API Key Your Nexmo API key, shown in your account overview.
API Secret Your Nexmo API secret, shown in your account overview.
Answer URL YOUR_URL/answer, you'll be hosting a Nexmo Call Control Object (NCCO) here. - more about this later on.
Event URL YOUR_URL/event, you'll need to reference this when setting up the event handler.

Node-RED va alors créer une nouvelle Applications Nexmo sur votre Account et remplir les champs App ID et Private Key. Après cette étape, n'hésitez pas à supprimer le nœud Nexmo que vous avez utilisé, car un nœud de configuration a été créé et contient toutes les informations d'identification Nexmo dont ce flux a besoin. nexmovoiceapp config a été créé et contient toutes les informations d'identification Nexmo dont ce flux a besoin.

create voice appcreate voice app

Configurer un numéro à appeler

Ensuite, vous devrez lier votre numéro virtuel à cette application.

Trouvez l'Application Voice que vous venez de créer dans votre Nexmo Dashboard en naviguant vers Voice > Vos Applications.

Cliquez sur le nom de cette application, puis sous l'onglet Numbers cliquez sur l'onglet Lien à côté du numéro virtuel que vous avez loué précédemment.

Si le numéro que vous souhaitez utiliser est déjà lié à une autre application, cliquez sur Gérer le numéro et configurez-le pour qu'il transfère les appels entrants vers votre application.

link numberlink number

Conseil supplémentaire : Utilisez un nœud comment pour noter le numéro Numbers lié à votre application, vous l'aurez ainsi toujours à portée de main.

Traiter les appels entrants

Lorsque vous recevez un appel entrant, l'API Voice de Nexmo envoie une demande à un point de terminaison que vous définissez. GET à un point de terminaison que vous définissez, YOUR_URL/answeret attend un ensemble d'instructions sur la manière de traiter l'appel.

Ces instructions se présentent sous la forme d'un Objet de contrôle d'appel Nexmoégalement connu sous le nom de NCCO. 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 connect de sorte que lorsque l'appel entrant est reçu, il est connecté à un nouveau numéro de téléphone que nous spécifions.

Définir le point de terminaison Webhook pour les appels entrants

Ajouter un voice webhook et un nœud return ncco à votre espace de travail, et reliez-les pour définir un point de terminaison webhook.

Ensuite, ouvrez les propriétés du voice webhook et sélectionnez GET comme Method et tapez /answer dans le champ URL puis appuyez sur Déployer.

inbound webhookinbound webhook

C'est très bien ! Vous avez maintenant un webhook qui renvoie un NCCO à l'API Nexmo. A ce stade, il ne contient aucune action, alors ajoutons-en une !

Construire l'objet Nexmo Call Control

Pour transférer l'appel entrant, nous devons le connecter à un nouveau point de terminaison. Pour ce faire, nous avons besoin d'une connect action.

Ajouter un connect entre le nœud voice webhook et un return ncco entre les nœuds a et b. Cela ajoutera une action de connexion au NCCO.

Ouvrez l connect l'éditeur de nœuds, sélectionnez Phone en tant que Endpointet tapez le numéro que vous souhaitez appeler dans le champ Number {} champ.

Laissez le champ From {} Laissez le champ vide pour que l'identification de l'appelant apparaisse comme inconnue, ou remplissez-le avec l'un de vos numéros virtuels Nexmo.

Pour en savoir plus sur les autres paramètres et les connect l'action, consultez la Référence NCCO.

Enregistrer les événements d'appel

Enfin, connectez un nœud http in à un nœud http response ainsi qu'à un nœud debug afin que vous puissiez visualiser les événements d'appel 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 /event.

Le nœud http response doit avoir 200 défini comme Status codemais ne vous inquiétez pas, c'est aussi la valeur par défaut.

forward flowforward flow

Appelez maintenant votre numéro Numbers et suivez les événements de votre appel dans la barre latérale de débogage !

forward call eventsforward call events

Ajouter une fonction d'enregistrement

Lorsque l'on passe des appels téléphoniques professionnels, il est souvent utile d'avoir la possibilité de les enregistrer. Voyons donc comment transformer le flux ci-dessus pour obtenir un enregistrement de la conversation.

Mise à jour du BCN

Tout d'abord, nous avons besoin d'une action record ajoutée à l'objet de contrôle d'appel Nexmo.

L'enregistrement commence lorsque l'action d'enregistrement est exécutée dans le BCN et se termine lorsque la condition synchrone de l'action est remplie. C'est-à-dire que End On Silence, timeOut ou endOnKey.

Si vous ne définissez pas de condition de synchronisation, la Voice API exécute immédiatement le NCCO suivant sans enregistrement.

Dans notre cas d'utilisation, cela signifie que nous devons ajouter un nœud record avant le nœud connect et non End On Silence, Time Out ou End On Key ne doit être définie.

Allez-y et ajoutez un nœud record à votre flux, entre les nœuds voice webhook et connect .

Ouvrez ses propriétés, remplissez le champ URL {} avec quelque chose comme YOUR_URL/recordet sélectionnez POST comme Method et choisissez un Format pour le fichier d'enregistrement - je choisirai MP3. Vous pouvez également cocher Beep Start pour avoir une indication claire du moment exact où l'enregistrement commence.

forwrad record nodeforwrad record node

Ajouter un gestionnaire pour l'événement d'enregistrementURL

Ensuite, nous devons ajouter un gestionnaire pour l'événement d'enregistrementURL - YOUR_URL/record. De cette manière, nous recevrons l'événement à la fin de l'enregistrement et nous pourrons télécharger cet enregistrement sur notre machine.

Ajouter un http in et un nœud http response à votre espace de travail et connectez-les ensemble. Pensez également à ajouter un nœud debug pour voir ce qui arrive par l'eventURL d'enregistrement.
Dans le nœud http nœud d'entrée, sélectionnez POST en tant que Method et remplissez le champ URL avec /record.

Le nœud http response doit avoir 200 défini comme Status codemais c'est aussi la valeur par défaut.

forward record eventforward record event

Télécharger l'enregistrement

Une fois l'enregistrement terminé, Nexmo nous envoie l'URL de l'enregistrement dans le webhook de l'événement d'enregistrement. La dernière étape consiste à récupérer l'enregistrement et à le télécharger.

Pour cette étape, nous aurons besoin d'un nœud getrecording pour récupérer l'enregistrement audio à partir de l'URL fournie, et d'un nœud file pour l'écrire dans un fichier sur notre machine.

Ajouter un nœud getrecording après le nœud /record http in puis, dans les propriétés du nœud, sélectionnez l'application vocale créée précédemment dans la liste déroulante Nexmo Credentials et fournissez un chemin absolu sous la forme Filename {}.

forward get recordingforward get recording

Enfin, ajoutez un nœud file après getrecording. Dans son éditeur de nœuds, assurez-vous que l'option Créer un répertoire s'il n'existe pas ? est cochée et sélectionnez soit écraser soit ajouter au fichier dans la liste déroulante Action dans le menu déroulant. Laissez le champ Filename vide, car cette valeur sera transmise par le nœud getrecording dans {{msg.filename}}.

forward file nodeforward file node

C'est terminé ! Procurez-vous un deuxième appareil ou demandez à un ami d'appeler votre numéro Numbers, engagez la conversation et une fois que vous aurez terminé, le fichier d'enregistrement vous attendra, déjà domnloadé sur votre machine. Profitez-en !

forward recording downloadforward recording download

Quelle est la prochaine étape ?

Pour en savoir plus

Essayer un autre tutoriel

Partager:

https://a.storyblok.com/f/270183/372x373/36054b72d0/julia-biro.png
Julia BiroDéfenseur des développeurs

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.