発信者を会議につなぐ

このコード・スニペットは、複数のコールを会話に参加させる方法を示している。

複数の着信通話を、同じ名前の通話に接続することで、1つの会話(電話会議)にすることができます。 複数の着信通話を同じ名前の 会議に接続します。

会議名はVonage Applicationレベルでスコープされます。 レベルでスコープされます。たとえば、VonageApp1 と VonageApp2 の両方に という名前のカンファレンスを持つことができます。 vonage-conference そうすれば何の問題もない。

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

キー説明
VOICE_CONFERENCE_NAME

The named identifier for your conference.

前提条件

npm install express body-parser

コードを書く

conference-call.js に以下を追加する:

const Express = require('express');
const bodyParser = require('body-parser');

const app = new Express();
app.use(bodyParser.json());

const onInboundCall = (_, response) => {
  const ncco = [
    {
      action: 'talk',
      text: 'Please wait while we connect you to the conference',
    },
    {
      action: 'conversation',
      name: VOICE_CONF_NAME,
    },
  ];

  response.json(ncco);
};

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

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

全文を見る

コードを実行する

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

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

コードを書く

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

embeddedServer(Netty, port = 8000) {
    routing {
        route("/webhooks/answer") {
            handle {
                call.response.header("Content-Type", "application/json")
                call.respond(
                    Ncco(
                        talkAction("Please wait while we connect you to the conference."),
                        conversationAction(VOICE_CONFERENCE_NAME)
                    ).toJson()
                )
            }
        }
    }
}.start(wait = true)

全文を見る

コードを実行する

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

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

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

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

前提条件

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

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

コードを書く

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

final String CONF_NAME = "my-conference";

/*
 * Route to answer incoming calls with an NCCO response.
 */
Route answerRoute = (req, res) -> {
    TalkAction intro = TalkAction.builder("Please wait while we connect you to the conference.").build();
    ConversationAction conversation = ConversationAction.builder(CONF_NAME).build();

    res.type("application/json");

    return new Ncco(intro, conversation).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.voiceConferenceCall を含むパッケージに置き換えてアプリケーションを実行する:

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

前提条件

Install-Package Vonage

コードを書く

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

[HttpGet("webhooks/answer")]
public string Answer()
{
    var VOICE_CONFERENCE_NAME = Environment.GetEnvironmentVariable("VOICE_CONFERENCE_NAME") ?? "VOICE_CONFERENCE_NAME";
    var talkAction = new TalkAction() { Text = "Please wait while we connect you to the conference" };
    var conversationAction = new ConversationAction() { Name = VOICE_CONFERENCE_NAME };
    var ncco = new Ncco(talkAction, conversationAction);
    return ncco.ToString();
}

全文を見る

前提条件

composer require vonage/client slim/slim:^3.8

コードを書く

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

require 'vendor/autoload.php';

$app = new \Slim\App;

$app->get('/webhooks/answer', function (Request $request, Response $response) {
    $talk = new \Vonage\Voice\NCCO\Action\Talk('Hi, welcome to this Nexmo conference call');
    $convo = new \Vonage\Voice\NCCO\Action\Conversation('nexmo-conference-standard');

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

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

$app->run();

全文を見る

コードを実行する

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

php -S localhost:3000 -t .

前提条件

pip install vonage python-dotenv fastapi[standard]

コードを書く

connect-callers-to-a-conference.py に以下を追加する:

import os
from os.path import dirname, join

from dotenv import load_dotenv
from fastapi import FastAPI
from vonage_voice import Conversation, NccoAction, Talk

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

VOICE_CONFERENCE_NAME = os.environ.get("VOICE_CONFERENCE_NAME")

app = FastAPI()


@app.get('/webhooks/answer')
async def answer_call():
    ncco: list[NccoAction] = [
        Talk(text="Please wait while we connect you to the conference"),
        Conversation(name=VOICE_CONFERENCE_NAME),
    ]

    return [action.model_dump(by_alias=True, exclude_none=True) for action in ncco]

全文を見る

コードを実行する

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

fastapi dev voice/connect-callers-to-a-conference.py

前提条件

gem install sinatra sinatra-contrib

コードを書く

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

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

VOICE_CONFERENCE_NAME = ENV['VOICE_CONFERENCE_NAME']

before do
  content_type :json
end

route :get, :post, '/webhooks/answer' do
  [
    {
      action: 'talk',
      text: 'Please wait while we connect you to the conference'
    },
    {
      action: 'conversation',
      name: VOICE_CONFERENCE_NAME
    }
  ].to_json
end

set :port, 3000

全文を見る

コードを実行する

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

ruby join_a_conference_call.rb

試してみる

サーバーを起動し、このVonageアプリケーションに割り当てられたVonage Numbersに複数の着信コールをかけます。 に複数のインバウンドコールをかけます。インバウンドコールは 同じ会話(会議)に接続されます。

さらに読む

  • 電話会議 - このガイドでは、Vonageが通話に関連付ける2つの概念、レグと会話について説明します。