Connecter les appelants à une conférence

Cet extrait de code montre comment regrouper plusieurs appels dans une conversation.

Plusieurs appels entrants peuvent être réunis en une conversation (conférence téléphonique) en connectant l'appel à la même ligne nommée. en connectant l'appel à la même conférence nommée. conférence.

Les noms de conférence sont définis au niveau de l'application Vonage. de Vonage. Par exemple, VonageApp1 et VonageApp2 peuvent toutes deux avoir une conférence appelée conférence appelée vonage-conference et il n'y aurait pas de problème.

Exemple

Remplacez les variables suivantes dans le code de l'exemple :

CléDescription
VOICE_CONFERENCE_NAME

The named identifier for your conference.

Conditions préalables

npm install express body-parser

Rédiger le code

Ajouter ce qui suit à 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}`);
});

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

node conference-call.js

Conditions préalables

Ajouter ce qui suit à build.gradle:

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

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier ConnectCallersToConference:

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)

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :

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

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.voice par le paquet contenant ConnectCallersToConference:

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

Conditions préalables

Ajouter ce qui suit à build.gradle:

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

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier ConferenceCall:

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

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application pour Gradle afin de simplifier l'exécution de notre application. Mettez à jour votre build.gradle avec ce qui suit :

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

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.voice par le paquet contenant ConferenceCall:

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

Conditions préalables

Install-Package Vonage

Rédiger le code

Ajouter ce qui suit à 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();
}

Voir la source complète

Conditions préalables

composer require vonage/client slim/slim:^3.8

Rédiger le code

Ajouter ce qui suit à 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();

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

php -S localhost:3000 -t .

Conditions préalables

pip install vonage python-dotenv fastapi[standard]

Rédiger le code

Ajouter ce qui suit à 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]

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

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

Conditions préalables

gem install sinatra sinatra-contrib

Rédiger le code

Ajouter ce qui suit à 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

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

ruby join_a_conference_call.rb

Essayez-le

Démarrez votre serveur et faites plusieurs appels entrants au numéro Vonage attribué à cette Applications Vonage. Les appels entrants seront connectés dans la même conversation (conférence).

Pour en savoir plus

  • Conférence téléphonique - Ce guide explique les deux concepts que Vonage associe à un appel, un segment et une conversation.