Enregistrer un appel avec un son partagé
Un extrait de code qui montre comment répondre à un appel entrant et le configurer pour
d'enregistrer séparément les segments de la conversation, puis de connecter l'appel. Lorsque l'appel
est terminé, le eventUrl que vous spécifiez dans le record action du BCN
recevront un webhook contenant l'URL de l'enregistrement à télécharger.
Exemple
Remplacez les variables suivantes dans le code de l'exemple :
| Clé | Description |
|---|---|
VONAGE_VIRTUAL_NUMBER | Your Vonage Number. E.g. |
VOICE_TO_NUMBER | The recipient number to call, e.g. |
Conditions préalables
Rédiger le code
Ajouter ce qui suit à record-a-call-with-split-audio.js:
const Express = require('express');
const bodyParser = require('body-parser');
const app = new Express();
app.use(bodyParser.json());
const onInboundCall = (request, response) => {
const ncco = [
{
action: 'record',
split: 'conversation',
channels: 2,
eventUrl: [`${request.protocol}://${request.get('host')}/webhooks/recordings`],
},
{
action: 'connect',
from: VONAGE_VIRTUAL_NUMBER,
endpoint: [
{
type: 'phone',
number: VOICE_TO_NUMBER,
},
],
},
];
response.json(ncco);
};
const onRecording = (request, response) => {
const recording_url = request.body.recording_url;
console.log(`Recording URL = ${recording_url}`);
response.status(204).send();
};
app
.get('/webhooks/answer', onInboundCall)
.post('/webhooks/recordings', onRecording);
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:
Rédiger le code
Ajouter ce qui suit à la méthode main du fichier RecordCallSplitAudio:
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 :
Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.voice par le paquet contenant RecordCallSplitAudio:
Conditions préalables
Ajouter ce qui suit à build.gradle:
Rédiger le code
Ajouter ce qui suit à la méthode main du fichier RecordCallSplitAudio:
/*
* Route to answer and connect incoming calls with recording.
*/
Route answerRoute = (req, res) -> {
String recordingUrl = String.format("%s://%s/webhooks/recordings", req.scheme(), req.host());
RecordAction record = RecordAction.builder()
.eventUrl(recordingUrl)
.channels(2)
.build();
ConnectAction connect = ConnectAction.builder(PhoneEndpoint.builder(VOICE_TO_NUMBER).build())
.from(VONAGE_VIRTUAL_NUMBER).build();
res.type("application/json");
return new Ncco(record, connect);
};
/*
* Route which prints out the recording URL it is given to stdout.
*/
Route recordingRoute = (req, res) -> {
System.out.println(EventWebhook.fromJson(req.body()).getRecordingUrl());
res.status(204);
return "";
};
Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute);
Spark.post("/webhooks/recordings", recordingRoute);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 :
Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.voice par le paquet contenant RecordCallSplitAudio:
Conditions préalables
Conditions préalables
Rédiger le code
Ajouter ce qui suit à index.php:
require 'vendor/autoload.php';
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
define('TO_NUMBER', getenv('TO_NUMBER'));
define('VONAGE_NUMBER', getenv('VONAGE_NUMBER'));
$app = new \Slim\App();
$app->get('/webhooks/answer', function (Request $request, Response $response) {
//Get our public URL for this route
$uri = $request->getUri();
$url = $uri->getScheme() . '://'.$uri->getHost() . ($uri->getPort() ? ':'.$uri->getPort() : '') . '/webhooks/recording';
$record = new \Vonage\Voice\NCCO\Action\Record();
$record->setEventWebhook(new \Vonage\Voice\Webhook($url));
$record->setChannels(2);
$connect = new \Vonage\Voice\NCCO\Action\Connect(new \Vonage\Voice\Endpoint\Phone(TO_NUMBER));
$connect->setFrom(VONAGE_NUMBER);
$ncco = new \Vonage\Voice\NCCO\NCCO();
$ncco->addAction($connect);
$ncco->addAction($record);
return new JsonResponse($ncco);
});
$app->post('/webhooks/recording', function (Request $request, Response $response) {
/** @var \Vonage\Voice\Webhook\Record */
$recording = \Vonage\Voice\Webhook\Factory::createFromRequest($request);
error_log($recording->getRecordingUrl());
return $response->withStatus(204);
});
$app->run();Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Essayez-le
Vous devrez :
- Répondez et enregistrez l'appel avec un son partagé (cet extrait de code).
- Télécharger l'enregistrement. Voir l'enregistrement Télécharger un enregistrement pour savoir comment procéder.