Einen eingehenden Anruf verbinden

In diesem Codeschnipsel sehen Sie, wie Sie einen eingehenden Anruf mit einer anderen Person verbinden, indem Sie einen ausgehenden Anruf tätigen.

Beispiel

Ersetzen Sie die folgenden Variablen im Beispielcode:

SchlüsselBeschreibung
VONAGE_VIRTUAL_NUMBER

Your Vonage Number. E.g. 447700900000

VOICE_TO_NUMBER

The recipient number to call, e.g. 447700900002.

Voraussetzungen

npm install express

Schreiben Sie den Code

Fügen Sie Folgendes zu connect-an-inbound-call.js hinzu:

const Express = require('express');

const app = new Express();

const onInboundCall = (_, response) => {
  const ncco = [
    {
      action: 'connect',
      from: VONAGE_VIRTUAL_NUMBER,
      endpoint: [
        {
          type: 'phone',
          number: VOICE_TO_NUMBER,
        },
      ],
    },
  ];

  response.json(ncco);
};

app.get('/webhooks/answer', onInboundCall);

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

node connect-an-inbound-call.js

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei ConnectInboundCall Folgendes hinzu:

embeddedServer(Netty, port = 8000) {
    routing {
        route("/webhooks/answer") {
            handle {
                call.response.header("Content-Type", "application/json")
                call.respond(
                    Ncco(
                        connectToPstn(VOICE_TO_NUMBER) {
                            from(VONAGE_VIRTUAL_NUMBER)
                        }
                    ).toJson()
                )
            }
        }
    }
}.start(wait = true)

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.kt.voice durch das Paket, das ConnectInboundCall enthält:

gradle run -Pmain=com.vonage.quickstart.kt.voice.ConnectInboundCall

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei ConnectInboundCall Folgendes hinzu:

/*
 * Route to answer incoming calls with an NCCO response.
 */
Route answerRoute = (req, res) -> {
    ConnectAction connect = ConnectAction.builder()
            .endpoint(PhoneEndpoint.builder(VOICE_TO_NUMBER).build())
            .from(VONAGE_VIRTUAL_NUMBER)
            .build();

    res.type("application/json");

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

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

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.voice durch das Paket, das ConnectInboundCall enthält:

gradle run -Pmain=com.vonage.quickstart.voice.ConnectInboundCall

Voraussetzungen

Install-Package Vonage

Schreiben Sie den Code

Fügen Sie Folgendes zu ConnectInboundCallController.cs hinzu:

[Route("webhooks/answer")]
public string Answer()
{
    var VOICE_TO_NUMBER = Environment.GetEnvironmentVariable("VOICE_TO_NUMBER") ?? "VOICE_TO_NUMBER";
    var VONAGE_VIRTUAL_NUMBER = Environment.GetEnvironmentVariable("VONAGE_VIRTUAL_NUMBER") ?? "VONAGE_VIRTUAL_NUMBER";

    var talkAction = new TalkAction()
    {
        Text = "Thank you for calling",
        Language = "en-gb",
        Style = 2
    };

    var secondNumberEndpoint = new PhoneEndpoint() { Number=VOICE_TO_NUMBER};            
    var connectAction = new ConnectAction() { From=VONAGE_VIRTUAL_NUMBER, Endpoint= new[] { secondNumberEndpoint } };
    
    var ncco = new Ncco(talkAction,connectAction);
    return ncco.ToString();
}

Vollständige Quelle anzeigen

Voraussetzungen

composer require slim/slim:^3.8 vonage/client

Schreiben Sie den Code

Fügen Sie Folgendes zu index.php hinzu:

require 'vendor/autoload.php';

$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

define('VOICE_TO_NUMBER', getenv('VOICE_TO_NUMBER'));
define('VONAGE_VIRTUAL_NUMBER', getenv('VONAGE_VIRTUAL_NUMBER'));

$app = new \Slim\App();

$app->get('/webhooks/answer', function (Request $request, Response $response) {
    $numberToConnect = new \Vonage\Voice\Endpoint\Phone(VOICE_TO_NUMBER);

    $action = new \Vonage\Voice\NCCO\Action\Connect($numberToConnect);
    $action->setFrom(VONAGE_VIRTUAL_NUMBER);

    $ncco = new \Vonage\Voice\NCCO\NCCO();
    $ncco->addAction($action);

    return new JsonResponse($ncco->toArray());
});

$app->run();

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

php -S localhost:3000 -t .

Voraussetzungen

pip install vonage python-dotenv fastapi[standard]

Schreiben Sie den Code

Fügen Sie Folgendes zu connect-an-inbound-call.py hinzu:

import os
from os.path import dirname, join

from dotenv import load_dotenv
from fastapi import FastAPI
from vonage_voice import Connect, PhoneEndpoint

dotenv_path = join(dirname(__file__), '../.env')
load_dotenv(dotenv_path)

VONAGE_VIRTUAL_NUMBER = os.environ.get('VONAGE_VIRTUAL_NUMBER')
VOICE_TO_NUMBER = os.environ.get('VOICE_TO_NUMBER')

app = FastAPI()


@app.get('/webhooks/answer')
async def inbound_call():
    ncco = [
        Connect(
            endpoint=[PhoneEndpoint(number=VOICE_TO_NUMBER)],
            from_=VONAGE_VIRTUAL_NUMBER,
        ).model_dump(by_alias=True, exclude_none=True)
    ]

    return ncco

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

fastapi dev voice/connect-an-inbound-call.py

Voraussetzungen

gem install sinatra sinatra-contrib

Schreiben Sie den Code

Fügen Sie Folgendes zu connect_an_inbound_call.rb hinzu:

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

VOICE_TO_NUMBER = ENV['VOICE_TO_NUMBER']
VONAGE_VIRTUAL_NUMBER = ENV['VONAGE_VIRTUAL_NUMBER']

before do
  content_type :json
end

route :get, :post, '/webhooks/answer' do
  [{
    action: 'connect',
    from: VONAGE_VIRTUAL_NUMBER,
    endpoint: [{
      type: 'phone',
      number: VOICE_TO_NUMBER
    }]
  }].to_json
end

set :port, 3000

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

ruby connect_an_inbound_call.rb

Probieren Sie es aus

Sie müssen Ihren Server dem offenen Internet aussetzen. Während der Entwicklung können Sie ein Tool wie Ngrok um das zu tun.

Wenn Sie Ihre Vonage Numbers anrufen, werden Sie automatisch mit der Nummer verbunden, die Sie anstelle von VOICE_TO_NUMBER.

Weitere Lektüre

  • Interaktive Sprachausgabe (IVR) - Erstellen Sie ein automatisches Telefonsystem, bei dem die Benutzer Informationen über die Tastatur eingeben und eine gesprochene Antwort hören.
  • Sprachbot mit Google Dialogflow - Dieser Leitfaden hilft Ihnen, mit einem Dialogflow-Beispielbot zu beginnen und mit ihm über Telefonanrufe zu interagieren, indem Sie die mitgelieferten Beispiel-Referenzcodes unter Verwendung der Vonage Voice API verwenden.
  • Maskierte Anrufe - Ermöglicht es den Nutzern, sich gegenseitig anzurufen, wobei ihre echten Nummern geheim bleiben.
  • Konferenzanrufe - In diesem Leitfaden werden die beiden Concepts erläutert, die Vonage mit einem Anruf verbindet: ein Leg und ein Gespräch.
  • Anrufverfolgung - Behalten Sie den Überblick, welche Kampagnen gut funktionieren, indem Sie für jede Kampagne eine andere Numbers verwenden und die eingehenden Anrufe verfolgen. Dieser Leitfaden zeigt Ihnen, wie Sie eingehende Anrufe behandeln, sie mit einer anderen Nummer verbinden und die Telefonnummern verfolgen, die jede Ihrer Vonage-Nummern angerufen haben.