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

Wie man einen Voice-Proxy in Node.js mit Voice API erstellt

Zuletzt aktualisiert am November 28, 2024

Lesedauer: 4 Minuten

Haben Sie schon einmal Essen bei einem Lieferdienst bestellt und mussten dem Fahrer Zugang zu Ihrem Gebäude gewähren? Vielleicht zögern Sie, Ihre persönliche Nummer weiterzugeben, aber Sie wollen trotzdem sichergehen, dass Ihr Essen ankommt. Mit maskierten Anrufen können sowohl Sie als auch der Fahrer kommunizieren, ohne Ihre tatsächlichen Telefonnummern preiszugeben. Der Fahrer sieht eine temporäre Nummer, und Sie auch, so dass die Privatsphäre beider Parteien geschützt ist.

Classified Ads App PreviewClassified Ads App Preview

In diesem Lernprogramm werden wir genau das tun und die Vonage-Lösung Maskierte Anrufe Funktion. Wir werden diese Anwendung auf Vonage Cloud Runtimebereitstellen, wodurch die Notwendigkeit entfällt, Server zu verwalten und selbst zu hosten.

Voraussetzungen

  • A Vonage Entwickler-Konto

  • Eine Vonage-Telefonnummer. Diese können Sie mit dem kostenlosen Guthaben erwerben, das Sie bei der Einrichtung eines Accounts erhalten haben. Gehen Sie zu Ihrem API-Dashboard. Gehen Sie auf der linken Seite unter "Erstellen & Verwalten" zu Numbers > Buy Numbers. Suchen Sie nach einer Telefonnummer, die Ihren Anforderungen entspricht (stellen Sie sicher, dass "Voice" eines der Merkmale ist), und klicken Sie auf Kaufen.

Glücklicherweise ist dies mit der Vonage Voice API sehr einfach zu bewerkstelligen, denn wir haben eine vorgefertigte Masked Calling API auf Code Hub die Sie sofort einsetzen können! Wir werden Ihnen zeigen, wie Sie diesen Weg gehen können.

Wie Sie Ihre Anwendung erstellen und bereitstellen

Nachdem Sie sich bei Ihrem Vonage Entwickler-Konto angemeldet haben, gehen Sie zur Seite Erweiterte maskierte Anrufe Seite. Unter dem Menüpunkt Code bereitstellen klicken Sie auf Neue Instanz bereitstellen.

Wählen Sie die Region und geben Sie Ihre Instanz einen Namen. Klicken Sie auf . Eine Nummer zuweisen und wählen Sie die Vonage-Telefonnummer, die Sie mit Ihrer Anwendung verknüpfen möchten. Klicken Sie auf . Weiter. Ihr Bildschirm sollte nun wie folgt aussehen:

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 DeployedKlicken Sie auf starten. um die Anwendung zu starten. Sie werden aufgefordert, Ihre Benutzeranmeldedaten einzugeben. Sowohl Ihren API-Schlüssel als auch Ihr Passwort (Ihr API-Geheimnis) finden Sie in Ihrem API-Übersichtsleiste.

Sie sehen dann Ihre neue Anwendung unter 'Bereitgestellte Instanzen'. Klicken Sie auf . Starten um sie auszuführen, und geben Sie Ihren Vonage API-Schlüssel und Ihr Geheimnis ein, um die Anwendung anzuzeigen. Sie können die API-Spezifikation im Bereich "APIRegisterkarte" einsehen.

Sobald Sie eingeloggt sind, können Sie die Anwendung sehen.

Screenshot of Masked Calling API browser applicationPhone Number Pairing

Hier können Sie zwei Telefonnummern hinzufügen und ein Ablaufdatum festlegen, bis zu dem sie die Anrufmaskierungsfunktion nutzen sollen. Klicken Sie auf . Hinzufügenund die beiden Nummern sollten in der Liste der gekoppelten Telefonnummern erscheinen. Wenn Sie weitere Telefonnummernpaare hinzufügen und ein bestimmtes Paar suchen möchten, geben Sie die gesuchte Telefonnummer ein und klicken Sie auf suchen. um die Übereinstimmung zu finden.

Wenn eine dieser Nummern die mit dieser Anwendung verknüpfte Vonage-Nummer anruft (Sie können die verknüpfte Nummer unter den Einstellungen der Browser-Anwendung bestätigen), sieht der Empfänger, dass der Anruf von der Vonage-Nummer kommt und nicht von der tatsächlichen Nummer des Anrufers. Auch der Anrufer wählt die Vonage-Nummer und erfährt die tatsächliche Nummer des Empfängers nicht.

Probieren Sie es aus

Angenommen, Sie haben Ihre eigene Rufnummer als Rufnummer 1angegeben haben, verwenden Sie Ihr persönliches Telefon, um die mit dieser Anwendung verknüpfte Vonage-Telefonnummer anzurufen. Die Person, die Eigentümer von Rufnummer 2 sollte einen Anruf erhalten, bei dem die Vonage-Telefonnummer anstelle Ihrer tatsächlichen Nummer angezeigt wird. Probieren Sie es jetzt einfach mal aus!

Wie man den Code anpasst

Wenn Sie die vorgefertigte Anwendung direkt auf der Vonage Cloud Runtime anpassen möchten, gehen Sie zum Code abrufen auf der Registerkarte Erweiterte maskierte Anrufe Seite und klicken Sie auf Erstellen Sie eine neue Entwicklungsumgebung. Wählen Sie Ihre Regionund geben Sie Ihrem Arbeitsbereich einen Namen, und wählen Sie die Vonage-Telefonnummer die Sie mit dieser Anwendung verknüpfen möchten.

Screenshot of the Masked Calling API project on Vonage Cloud RuntimeMasked Calling READMESobald der Arbeitsbereich geöffnet ist, sehen Sie, dass die Beispielanwendung einsatzbereit ist! Sie können jedoch Ihre eigenen Änderungen am Code direkt von dieser IDE aus vornehmen.

Um Ihr aktualisiertes Projekt auszuführen, öffnen Sie das Terminal und führen Sie diesen Befehl aus:

npm run

Sobald Sie bereit sind, es einzusetzen, führen Sie diesen Befehl aus:

vcr deploy
So funktioniert der Anrufablauf:
  • Der Benutzer fügt Telefonnummern (numberOne, numberTwo) und legt die Gültigkeitsdauer (expiryTime) der Kopplung auf der Website (Frontend) ein.

  • pairNumbers erstellt das Paar und legt den Verfallstermin fest.

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
   }
}
  • Der onCall Endpunkt wird ausgelöst, nachdem er auf einen eingehenden Anruf an die Vonage-Nummer gewartet hat.

await voice.onCall('/onCall');
await voice.onCallEvent('/onCallEvent');
  • findPair ruft gepaarte Numbers ab.

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);
   }
  • Wenn das Paar existiert und nicht abgelaufen ist, verbinden Sie den Anruf.

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;
       }
  • Wenn kein Paar oder ein abgelaufenes Paar vorhanden ist, ist dies entsprechend zu behandeln (z. B. erhält der Anrufer eine Fehlermeldung).

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;
       }
  • Nach Ablauf der Frist wird das Paar automatisch gelöscht.

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);
   }
});

Sie können diesen funktionierenden Code in Ihre eigene Anwendung integrieren. Wenn Sie sich jedoch dafür entscheiden, Ihr Projekt nicht in der Vonage Cloud Runtime bereitzustellen, gibt es einige Bereiche zu beachten. Lesen Sie die Dokumentation um einen Ansatz zu implementieren, der die Vonage Cloud Runtime nicht nutzt.

Mach mit bei der Party

Und schon haben Sie einen Voice Proxy auf der Vonage Cloud Runtime implementiert! Sie können die Anwendung noch weiter ausbauen, indem Sie Ihre eigenen Funktionen hinzufügen. Unsere Entwickler-Community wächst auf Slackund wir würden uns freuen, wenn Sie ein Teil davon werden. Wenn Sie dieses Tutorial ausprobieren, würde ich gerne Ihre Meinung dazu hören. Fühlen Sie sich frei, mich zu taggen auf X, früher bekannt als Twitter, und folgen Sie unserem Team auch dort. Viel Spaß beim Programmieren!

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/b68093ec17/diana-pham.png
Diana PhamAdvokat für Entwickler

Diana ist Entwicklungsbeauftragte bei Vonage. Sie isst gerne frische Austern.