着信コールを受ける

このコード・スニペットでは、着信コールを受信する方法を示している。

前提条件

npm install express

コードを書く

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

const Express = require('express');

const app = new Express();

const onInboundCall = (request, response) => {
  const from = request.query.from;
  const fromSplitIntoCharacters = from.split('').join(' ');

  const ncco = [
    {
      action: 'talk',
      text: `Thank you for calling from ${fromSplitIntoCharacters}`,
    },
  ];

  response.json(ncco);
};

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

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

全文を見る

コードを実行する

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

node receive-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'

コードを書く

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

embeddedServer(Netty, port = 8000) {
    routing {
        get("/webhooks/answer") {
            val from = call.request.queryParameters["from"]?.replace("", "")
            call.response.header("Content-Type", "application/json")
            call.respond(
                Ncco(
                    talkAction("Thank you for calling from $from")
                ).toJson()
            )
        }
    }
}.start(wait = true)

全文を見る

コードを実行する

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

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

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

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

前提条件

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

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

コードを書く

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

/*
 * Route to answer incoming call.
 */
Route answerRoute = (req, res) -> {
    String from = req.queryParams("from").replace("", " ");
    TalkAction message = TalkAction
            .builder(String.format("Thank you for calling from %s", from))
            .build();

    res.type("application/json");

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

/*
 * Route to print out call event info.
 */
Route eventRoute = (req, res) -> {
    System.out.println(req.body());
    return "";
};

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

全文を見る

コードを実行する

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

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

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

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

前提条件

Install-Package Vonage

コードを書く

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

[HttpGet("webhooks/answer")]
public string Answer()
{            
    var talkAction = new TalkAction
    { 
        Text = "Thank you for calling from " +
        $"{string.Join(" ", Request.Query["from"].ToString().ToCharArray())}"
    };
    var ncco = new Ncco(talkAction);
    return ncco.ToString();
}

全文を見る

前提条件

composer require slim/slim:^3.8 vonage/client

コードを書く

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

require 'vendor/autoload.php';

$app = new \Slim\App();

$app->get('/webhooks/answer', function (Request $request, Response $response) {
    /** @var \Vonage\Voice\Webhook\Answer $call */
    $call = \Vonage\Voice\Webhook\Factory::createFromRequest($request);
    $fromSplitIntoCharacters = implode(" ", str_split($call->getFrom()));

    $ncco = new \Vonage\Voice\NCCO\NCCO();
    $ncco->addAction(
        new \Vonage\Voice\NCCO\Action\Talk('Thank you for calling from ' . $fromSplitIntoCharacters)
    );

    return new JsonResponse($ncco);
});

$app->run();

全文を見る

コードを実行する

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

php -S localhost:3000 -t .

前提条件

pip install vonage python-dotenv fastapi[standard]

コードを書く

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

from fastapi import FastAPI, Query
from vonage_voice import Talk

app = FastAPI()


@app.get('/webhooks/answer')
async def answer_call(from_: str = Query(..., alias='from')):
    from_ = '-'.join(from_)
    return [
        Talk(text=f'Thank you for calling from {from_}').model_dump(
            by_alias=True, exclude_none=True
        )
    ]

全文を見る

コードを実行する

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

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

前提条件

gem install sinatra sinatra-contrib

コードを書く

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

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

helpers do
  def parsed_body
    JSON.parse(request.body.read)
  end
end

before do
  content_type :json
end

route :get, :post, '/webhooks/answer' do
  from = params['from'] || parsed_body['from']
  from_split_into_characters = from.split('').join(' ')

  [{
    action: 'talk',
    text: "Thank you for calling from #{from_split_into_characters}"
  }].to_json
end

set :port, 3000

全文を見る

コードを実行する

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

ruby inbound_tts_call.rb

試してみる

Vonage番号に電話をかけると、音声合成メッセージが流れます。

さらに読む

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