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-parserRé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}`);
});Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
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)Exécutez votre code
Nous pouvons utiliser le plugin Applications 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') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.voice par le paquet contenant 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);Exécutez votre code
Nous pouvons utiliser le plugin Applications 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') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.voice par le paquet contenant ConferenceCall:
Conditions préalables
Install-Package VonageRé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();
}Conditions préalables
composer require vonage/client slim/slim:^3.8Ré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();Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
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]Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
gem install sinatra sinatra-contribExécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
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.