インバウンドコールに接続する

このコードスニペットでは、インバウンドコールをアウトバウンドコールで別の相手に接続する方法を説明します。

サンプルコードの以下の変数を置き換える:

キー説明
VONAGE_VIRTUAL_NUMBER

Your Vonage Number. E.g. 447700900000

VOICE_TO_NUMBER

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

前提条件

npm install express

コードを書く

connect-an-inbound-call.js に以下を追加する:

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

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node connect-an-inbound-call.js

前提条件

build.gradle に以下を追加する:

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

コードを書く

ConnectInboundCall ファイルのmain メソッドに以下を追加する:

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)

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

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

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.voiceConnectInboundCall を含むパッケージに置き換えてアプリケーションを実行する:

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

前提条件

build.gradle に以下を追加する:

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

コードを書く

ConnectInboundCall ファイルのmain メソッドに以下を追加する:

/*
 * 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);

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

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

以下のgradle コマンドを実行し、com.vonage.quickstart.voiceConnectInboundCall を含むパッケージに置き換えてアプリケーションを実行する:

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

前提条件

Install-Package Vonage

コードを書く

ConnectInboundCallController.cs に以下を追加する:

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

全文を見る

前提条件

composer require slim/slim:^3.8 vonage/client

コードを書く

index.php に以下を追加する:

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

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php -S localhost:3000 -t .

前提条件

pip install vonage python-dotenv fastapi[standard]

コードを書く

connect-an-inbound-call.py に以下を追加する:

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

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

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

前提条件

gem install sinatra sinatra-contrib

コードを書く

connect_an_inbound_call.rb に以下を追加する:

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

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby connect_an_inbound_call.rb

試してみる

サーバーをオープン・インターネットに公開する必要がある。開発中は ングロク そのために

Vonage番号に電話をかけると、自動的に指定した番号につながります。 の代わりに指定した番号に自動的に接続されます。 VOICE_TO_NUMBER.

さらに読む

  • インタラクティブ・ボイス・レスポンス(IVR) - ユーザーがキーパッドで情報を入力し、音声応答を聞くための自動電話システムを構築する。
  • Googleダイアログフローによる音声ボット - このガイドでは、Vonage Voice APIを使用したDialogflowボットのサンプルコードを使って、Dialogflowボットと対話する方法を説明します。
  • マスクド・コーリング - ユーザー同士の通話を可能にし、実番号を非公開にする。
  • 電話会議 - このガイドでは、Vonageが通話に関連付ける2つの概念、レグと会話について説明します。
  • コールトラッキング - キャンペーンごとに異なる番号を使用し、着信を追跡することで、どのキャンペーンがうまくいっているかを把握できます。このガイドでは、着信を処理し、別の番号に接続し、Vonageの各番号に電話をかけた電話番号を追跡する方法を説明します。