https://d226lax1qjow5r.cloudfront.net/blog/blogposts/forward-phone-call-voice-proxy-java-dr/voice-proxy-java-feature.png

Renvoyer un appel téléphonique via Voice Proxy avec Voice

Publié le May 13, 2021

Temps de lecture : 11 minutes

Introduction

Passer des appels téléphoniques est une nécessité pour certains d'entre nous. Mais chaque fois que vous communiquez votre numéro de téléphone, vous l'exposez à des étrangers. L'équilibre entre sécurité et commodité est délicat à trouver. Et si vous pouviez masquer votre numéro de téléphone en donnant un autre numéro à appeler ?

Un proxy vocal est une technique qui permet de protéger les informations privées entre les appelants en masquant le numéro de téléphone de chacun derrière un numéro de téléphone intermédiaire.

Dans ce tutoriel, vous apprendrez comment protéger les numéros de téléphone de l'appelant et de l'appelé en créant un proxy vocal. Lorsqu'une personne appelle votre numéro Vonage, l'appel est acheminé vers votre téléphone personnel. La personne qui vous appelle n'aura besoin de connaître que votre numéro Vonage et, en prime, vous ne connaîtrez pas non plus son numéro de téléphone.

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.

Vous utiliserez Gradle pour gérer vos dépendances et exécuter votre application. En outre, vous devrez vous assurer qu'une copie du JDK est installée. J'utiliserai le JDK 11 dans ce tutoriel, mais tout JDK 8 ou supérieur devrait fonctionner.

Enfin, vous aurez besoin du CLI de Vonage de Vonage. Vous l'utiliserez pour acheter un numéro de téléphone et configurer votre Account Vonage pour qu'il pointe vers votre nouvelle application.

Renvoyer un appel téléphonique via Voice Proxy avec Voice

Ce tutoriel vous guidera à travers les étapes suivantes :

  1. Utilisation de Gradle pour créer un nouveau projet Java.

  2. Utilisation de l'outil Spark pour contrôler l'appel.

  3. Achat d'un numéro et configuration de votre Account Vonage pour utiliser ce numéro avec votre application.

Utiliser Gradle pour configurer un nouveau projet Java

Vous utiliserez Gradle pour gérer vos dépendances et pour créer et exécuter votre application Java.

La commande gradle init --type=java-application créera tous les dossiers dont vous aurez besoin ainsi qu'une classe d'exemple dans laquelle vous écrirez votre code.

À partir de la ligne de commande, créez un nouveau projet Java avec les commandes suivantes, en acceptant les invites par défaut de Gradle :

mkdir forward-phone-call cd forward-phone-call gradle init --type=java-application

Gradle créera la classe App dans le dossier src/main/java/forward/phone/call dans le dossier

À l'intérieur de cette classe se trouvent un getGreeting et main à l'intérieur de cette classe. Vous n'aurez pas besoin de la méthode getGreeting vous n'en aurez pas besoin, alors n'hésitez pas à la supprimer.

Votre classe App devrait ressembler à ceci :

/*
 * This Java source file was generated by the Gradle 'init' task.
 */
package forward.phone.call;

public class App {
    public static void main(String[] args) {
        // Future Code Goes Here
    }
}

Utilisation du cadre Spark pour contrôler l'appel

Vous utiliserez le framework Spark pour recevoir un appel HTTP effectué par Vonage lorsque votre numéro reçoit un appel.

Ajouter les dépendances

Ajoutez ce qui suit au bloc dependencies dans votre fichier build.gradle de votre fichier :

// Spark Framework
implementation 'com.sparkjava:spark-core:2.8.0'

// Vonage Java Client
implementation 'com.nexmo:client:4.2.1'

Votre bloc dependencies devrait ressembler à ceci :

dependencies {
    implementation 'com.sparkjava:spark-core:2.8.0'
    implementation 'com.nexmo:client:4.2.1'
 
    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'
}

Définir l'itinéraire de réponse

Lorsqu'un appel est reçu, Vonage envoie une demande à une URL webhook prédéfinie. Il s'attend à recevoir un objet de contrôle d'appel de Vonage (NCCO) contenant une liste d'actions à exécuter.

Vous utiliserez l'action connect pour transférer les appels entrants de Vonage vers votre téléphone. L'action connect est utilisée pour connecter les appels à des points de terminaison tels que des numéros de téléphone.

Il s'agit du BCN résultant que votre application créera :

[
    {
        "endpoint": [
            {
                "number": "16165551234",
                "type": "phone"
            }
        ],
        "from": "16165559876",
        "action": "connect"
    }
]

Vous utiliserez les symboles ConnectAction et PhoneEndpoint de la bibliothèque du client Java de Vonage pour construire le NCCO ci-dessus.

Pour ce faire, vous aurez besoin de deux variables : le numéro de téléphone auquel vous souhaitez connecter les appels et le numéro Vonage avec lequel vous souhaitez passer l'appel.

Tout d'abord, définissez le numéro de téléphone auquel vous souhaitez connecter les appels en ajoutant la constante suivante à la classe App la constante suivante. Le numéro de téléphone par lequel vous la remplacez doit commencer par un indicatif de pays et ne pas être précédé de +:

private static final String YOUR_SECOND_NUMBER = "16165551234";

Vonage envoie le paramètre to à votre webhook qui contient le numéro de Vonage qui a été appelé. Vous pouvez utiliser ce même numéro pour vous appeler en l'ajoutant en tant que from paramètre.

Définissez maintenant l'itinéraire de réponse en ajoutant le code suivant à la méthode main de la classe App en résolvant les importations éventuelles :

/*
* Route to answer incoming calls with an NCCO response.
*/
Route answerRoute = (req, res) -> {
    String vonageNumber = req.queryParams("to");

    ConnectAction connect = ConnectAction.builder()
            .endpoint(PhoneEndpoint.builder(YOUR_SECOND_NUMBER).build())
            .from(vonageNumber)
            .build();

    res.type("application/json");

    return new Ncco(connect).toJson();
};

Enregistrer l'itinéraire de réponse

Pour utiliser la route de réponse, vous devez configurer Spark. Votre application écoutera sur le port 3000et la route sera configurée sur /webhooks/answer.

Ajoutez ce qui suit à la méthode main de la classe App de la classe :

Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute);

Achat d'un numéro

Vous aurez besoin d'un numéro Vonage pour recevoir des appels téléphoniques. Si vous n'avez pas de numéro, vous pouvez utiliser le CLI de Vonage pour en acheter un.

Tout d'abord, recherchez un numéro disponible avec une capacité vocale (dans cet exemple, nous utilisons US pour l'indicatif de pays) :

vonage numbers:search US --features=VOICE

Choisissez un nombre dans la liste générée et insérez-le dans la commande suivante :

vonage numbers:buy [NUMBER] US

Notez le numéro qui vous est attribué. Vous aurez besoin de ce numéro pour relier votre candidature et pour les tests.

Exposer votre application

Pour envoyer une requête HTTP à votre application, Vonage a besoin de connaître l'URL de votre application.

Au lieu de configurer votre réseau local ou d'héberger votre application sur un service externe, vous pouvez utiliser ngrok pour exposer votre application à l'internet en toute sécurité.

Téléchargez ngrok et exécutez la commande suivante :

ngrok http 3000

Prenez note de l'adresse de réexpédition, car vous en aurez besoin lorsque vous configurerez votre Account. Dans l'image suivante, l'adresse de réexpédition est la suivante http://99cad2de.ngrok.io.

Screenshot of ngrok running in a terminal with forwarding address http://99cad2de.ngrok.io

Configurer votre Account Vonage

Si vous n'avez pas d'application, vous pouvez utiliser le CLI de Vonage pour en créer une en utilisant votre adresse de transfert ngrok :

vonage apps:create "Forward Call Demo" --voice_event_url=http://your-ngrok-forwarding-address/webhooks/events --voice_answer_url=http://your-ngrok-forwarding-address/webhooks/answer

Après avoir exécuté cette commande, vous obtiendrez un identifiant d'application. Par exemple : notreal-1111-2222-3333-appid. Vous aurez besoin de cet identifiant pour relier votre numéro de téléphone à l'application.

Vous pouvez utiliser le CLI de Vonage pour lier votre numéro de téléphone et votre application :

vonage apps:link your-application-id --number=your-vonage-phone-number

Testez votre application

Démarrez votre application avec la commande gradle run dans votre répertoire forward-phone-call dans votre répertoire.

Prenez un ami, un collègue ou un deuxième téléphone et appelez votre numéro Vonage. Votre autre téléphone devrait commencer à sonner. En répondant au téléphone, vous serez tous deux connectés comme si vous vous étiez appelés directement.

Conclusion

En quelques lignes de code, vous avez créé une application qui peut renvoyer les appels téléphoniques de votre numéro Vonage vers votre téléphone personnel.

Consultez notre documentation sur Vonage Developer pour en savoir plus sur les points suivants flux d'appels ou sur Objets de contrôle d'appel de Vonage. Vous pouvez également jeter un coup d'œil à la page Connecter un appel entrant pour cet exemple et d'autres informations.

Partager:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Steve CrowAnciens de Vonage

Steve est un mathématicien autoproclamé et le roi du sarcasme. Il aime aussi les lévriers, les puzzles tortueux et les jeux de société européens. Lorsqu'il ne parle pas de mathématiques à des personnes qui n'en font pas, ou de Java à des personnes qui n'en font pas, on peut le trouver en train de siroter un café et de bidouiller du code.