https://d226lax1qjow5r.cloudfront.net/blog/blogposts/build-an-escape-plan-with-the-vonage-voice-api-and-get-a-ghost-call/ghost-call.png

Erstellen Sie einen Fluchtplan mit der Vonage Voice API und erhalten Sie einen Ghost Call

Zuletzt aktualisiert am January 30, 2024

Lesedauer: 8 Minuten

Übersicht

In diesem Lernprogramm zeige ich Ihnen, wie Sie die Vonage Voice API nutzen können, um sich auf subtile Weise aus einer Situation zu befreien, in der man lieber nicht sein möchte. Sie können einen Geisteranruf auslösen, indem Sie eine SMS an eine virtuelle Nummer senden!

Der Code dieses Der Code des Projekts ist auf GitHub.

Voraussetzungen

Vergewissern Sie sich, bevor Sie mit dem Bau des Projekts beginnen, dass Sie alles haben:

Verwenden Sie Ngrok, um Ihren lokalen Server freizulegen

Ngrok stellt Ihre lokalen Webhooks im öffentlichen Internet zur Verfügung und ermöglicht es Ihnen, externe Anrufe zu empfangen:

  1. Starten Sie ngrok mit ngrok http 3000.

  2. Notieren Sie sich die HTTPS-Weiterleitungsadresse (z. B., https://xyz.ngrok.com).

Einrichten der Vonage-Anwendung

Nachdem Sie sich für einen Vonage Account angemeldet haben:

  1. Erstellen Sie eine neue Applikation: Gehen Sie zu Ihre Applications im Dashboard und schalten Sie die Funktionen Voice und Messages ein.

  2. Berechtigungsnachweise generieren: Erstellen Sie ein öffentliches/privates Schlüsselpaar für die API-Authentifizierung; dadurch wird eine private.key herunter, das zu unserem Projektordner hinzugefügt wird.

  3. Verknüpfen Sie eine virtuelle Nummer: Erwerben und verknüpfen Sie eine virtuelle Nummer mit Ihrer Anwendung.

  4. Konfigurieren Sie Webhooks: Legen Sie die öffentliche URL Ihres Servers von ngrok als Endpunkt für eingehende Nachrichten und Ereignisse fest. Sie sollte wie folgt aussehen: https://xyz.ngrok.com/inbound für eingehende Nachrichten und https://xyz.ngrok.com/event für Ereignisse.

    Messages Inbound and Status URLs. It shows that the Inbound URL and the Status URL should be filled with the ngrok url followed by /inbound and /status respectivelyMessages Inbound and Status URLs

Server-seitige Implementierung

Anfängliche Projekteinrichtung

  1. Erstellen Sie ein neues Projektverzeichnis: Öffnen Sie Ihr Terminal und navigieren Sie dorthin, wo Sie Ihr neues Projekt erstellen möchten. Verwenden Sie dann den folgenden Befehl, um ein neues Verzeichnis für Ihr Projekt zu erstellen und zu wechseln:

    mkdir vonage-ghost-call && cd vonage-ghost-call
  2. Initialisieren Sie ein Node.js-Projekt: Initialisieren Sie in Ihrem neuen Projektverzeichnis ein Node.js-Projekt. Dadurch wird eine package.json Datei, die die Abhängigkeiten und Skripte Ihres Projekts verwaltet. Verwenden Sie den npm init um Details anzugeben oder drücken Sie die Eingabetaste, um die Standardeinstellungen zu übernehmen. Das -y Flagge füllt die Vorgaben automatisch aus, ohne nach den Details zu fragen.

    npm init -y
  3. Installieren Sie die Abhängigkeiten: Nun ist es an der Zeit, die für das Projekt erforderlichen Abhängigkeiten zu installieren:

    • express: Ein Web-Framework für Node.js.

    • dotenv: Dient zum Laden von Umgebungsvariablen aus einer .env Datei zu laden.

    • @vonage/server-sdk: Das Vonage Server SDK für Node.js.

    • @vonage/voice: Das Vonage Voice API SDK.

    Um all diese Pakete in einem Rutsch zu installieren, führen Sie den folgenden Befehl aus, der diese Pakete automatisch zu Ihrer package.json Datei hinzufügt und sie in das Projekt node_modules Verzeichnis hinzufügt.

    npm install express dotenv @vonage/server-sdk @vonage/voice

Erstellen Sie die Umgebungsvariablendatei

Erstellen Sie eine .env Datei in Ihrem Projekt und fügen Sie die folgende Umgebung hinzu, die Sie im unten stehenden Codeschnipsel finden.

  • Die VONAGE_KEY und VONAGE_SECRET finden Sie auf dem Dashboard von Vonage.

    Vonage Dashboard. It shows where the API Key and API Secrets are. Right under the text 'API key and API Secret'Vonage Dashboard

  • Die VONAGE_APPLICATION_ID finden Sie in der von Ihnen erstellten Anwendung, die Sie im Bereich Vonage Applications.

  • Die FROM_IMPORTANT_FRIEND ist die Telefonnummer für den Telefonanruf.

  • Die ANSWER_URL bestimmt, wie ein Anruf zu behandeln ist und mit wem der Anruf verbunden werden soll. Dazu wird ein NCCO ausgeführt, der zahlreiche Funktionen der Voice API nutzt; ein Beispielwert könnte sein https://raw.githubusercontent.com/nexmo-community/ncco-examples/gh-pages/text-to-speech.json.

  • Die PRIVATE_KEY_PATH ist der Pfad der private.key Datei, die wir zuvor heruntergeladen haben, als wir das Paar öffentlicher/privater Schlüssel für die API-Authentifizierung generiert haben.

VONAGE_KEY= VONAGE_SECRET= VONAGE_APPLICATION_ID= PRIVATE_KEY_PATH= ANSWER_URL= FROM_IMPORTANT_FRIEND=

Implementierung des serverseitigen Codes

In Ihrer index.js Dateistarten Sie das Projekt, indem Sie die erforderlichen Module importieren. Sie richten Express ein, um eingehende HTTP-Anfragen zu verarbeiten, und konfigurieren den Vonage-Client mit den in Ihren Umgebungsvariablen gespeicherten Anmeldedaten:

// Import dependencies
require('dotenv').config();
const express = require('express');
const { Vonage } = require('@vonage/server-sdk');
const app = express();

// Middleware for parsing incoming requests
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// Initialize Vonage API client with environment variables
const vonage = new Vonage({
  apiKey: process.env.VONAGE_KEY,
  apiSecret: process.env.VONAGE_SECRET,
  applicationId: process.env.VONAGE_APPLICATION_ID,
  privateKey: process.env.PRIVATE_KEY_PATH
});

Eingehende SMS-Nachrichten bearbeiten

Der Server wartet auf den Eingang neuer SMS-Nachrichten. Wenn der Server eine neue SMS-Nachricht erhält, tätigt er einen ausgehenden Anruf an die Telefonnummer, die die SMS-Nachricht gesendet hat. Dies ist im Code des Servers enthalten /inbound Teil.

// Route to handle inbound SMS
app.post('/inbound', (req, res) => {
  const { from } = req.body;
  const requesterNumber = from;

  // Function to trigger an outbound call
  triggerOutboundCall(requesterNumber);

  res.status(200).end();
});

// Server listens to a specified port
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`App listening on port ${PORT}`));

Ausgehender Anruf ohne NCCO

Wenn Sie einen ausgehenden Anruf mit einer aufgezeichneten Nachricht tätigen müssen, können Sie den Anruf ohne Angabe eines NCCO. Mit der Voice API können Sie direkt einen ausgehenden Anruf einleiten und dem Empfänger eine Audiodatei vorspielen, ohne eine erweiterte Anrufsteuerungslogik zu konfigurieren.

function triggerOutboundCall(requesterNumber) {
  const ANSWER_URL = process.env.ANSWER_URL; // URL to NCCO JSON

  vonage.voice.createOutboundCall({
    to: [{ type: type: 'phone', number: requesterNumber }],
    from: { type: 'phone', number: process.env.FROM_IMPORTANT_FRIEND },
    answer_url: [ANSWER_URL]
  }, handleResponse);
}

function handleResponse(err, resp) {
  if (err) console.error(err);
  else console.log(resp);
}

In diesem Fall, ANSWER_URL auf eine JSON-Datei, die den Anrufablauf vorgibt. Zum Beispiel:

[
  {
    "action": "talk",
    "voiceName": "Amy",
    "text": "There's an urgent need for you elsewhere. Please excuse yourself."
  }
]

Ausgehender Anruf bei NCCO

Für ein maßgeschneidertes Anruferlebnis bietet NCCO mehr Flexibilität. Dies ist besonders nützlich für dynamische Anrufströme.

async function makeCallWithNCCO(requesterNumber) {
  const ncco = [
    {
      "action": "talk",
      "voiceName": "Amy",
      "text": "Hey, sorry to bother you, but I need your help; an urgent unforeseen circumstance has happened."
    } 
  ];

  try {
    const resp = await vonage.calls.create({
      to: [{ type: 'phone', requesterNumber }],
      from: { type: 'phone', number: process.env.FROM_IMPORTANT_FRIEND },
      ncco
    });
    console.log(resp);
  } catch (err) {
    console.error(err);
  }
}

Diese Funktion makeCallWithNCCO erstellt dynamisch den Anrufablauf auf der Grundlage der NCCO-Spezifikationen.

In diesem Beispiel enthält die Variable ncco Variable ein Array von Aktionen zur Steuerung des Aufrufs enthalten. Die talk Aktion liest eine Nachricht, wenn der Anruf entgegengenommen wird.

Schritte zur Ausführung der Anwendung

  1. Stellen Sie sicher, dass .env über alle Berechtigungsnachweise verfügt.

  2. Starten Sie den Server, indem Sie den node index.js Befehl.

  3. Senden Sie eine SMS-Nachricht an Ihre virtuelle Nummer, um den Geisteranruf auszulösen!

  4. Die App wird einen Anruf mit der von Ihnen gewählten Methode tätigen - machen Sie sich bereit, einen Grund zu haben, die Situation zu verlassen, in der Sie nicht sein wollten!

Schlussfolgerung

Heute haben Sie gelernt, wie Sie persönliche Bequemlichkeit vermeiden können. Indem Sie eine SMS-Nachricht senden, können Sie einen Anruf auslösen, der einen plausiblen Grund liefert, um aus der Situation herauszukommen, in der Sie nicht sein wollen, indem Sie JavaScript, Node.js und die Vonage Voice API verwenden.

Der Code dieses Der Code des Projekts ist auf GitHub.

Beteiligen Sie sich an der Diskussion und teilen Sie Ihre Erkenntnisse mit uns in der Vonage Entwickler-Community auf Slack oder folgen Sie uns auf X, früher bekannt als Twitter!

Teilen Sie:

https://a.storyblok.com/f/270183/400x400/3f6b0c045f/amanda-cavallaro.png
Amanda CavallaroAdvokat für Entwickler