Grabar un mensaje
Un fragmento de código que muestra cómo grabar una conversación. Responder a una llamada
y devuelve una NCCO que incluye un record acción. Cuando la llamada
completa, se envía un webhook al eventUrl que especifique. El webhook incluye
la URL de la grabación.
Ejemplo
Requisitos previos
npm install express body-parserEscriba el código
Añada lo siguiente a record-a-message.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: 'talk',
text: 'Please leave a message after the tone, then press #. We will get back to you as soon as we can.',
},
{
action: 'record',
endOnKey: '#',
beepStart: 'true',
endOnSilence: '3',
eventUrl: [`${request.protocol}://${request.get('host')}/webhooks/recordings`],
},
{
action: 'talk',
text: 'Thank you for your message. Goodbye.',
},
];
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}`);
});Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Añada lo siguiente a build.gradle:
Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.voice por el paquete que contiene RecordMessage:
Requisitos previos
Añada lo siguiente a build.gradle:
Escriba el código
Añada lo siguiente al método main del archivo RecordMessage:
/*
* 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());
TalkAction intro = TalkAction.builder(
"Please leave a message after the tone, then press #. We will get back to you as soon as we can.").build();
RecordAction record = RecordAction.builder()
.eventUrl(recordingUrl)
.endOnSilence(3)
.endOnKey('#')
.beepStart(true)
.build();
TalkAction outro = TalkAction.builder("Thank you for your message. Goodbye").build();
res.type("application/json");
return new Ncco(intro, record, outro).toJson();
};
/*
* Route which prints out the recording URL it is given to stdout.
*/
Route recordingRoute = (req, res) -> {
EventWebhook recordEvent = EventWebhook.fromJson(req.body());
System.out.println(recordEvent.getRecordingUrl());
res.status(204);
return "";
};
Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute);
Spark.post("/webhooks/recordings", recordingRoute);Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.voice por el paquete que contiene RecordMessage:
Requisitos previos
Install-Package VonageRequisitos previos
composer require slim/slim:^3.8 vonage/clientEjecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
pip install vonage python-dotenv fastapi[standard]Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
gem install sinatra sinatra-contribEscriba el código
Añada lo siguiente a record-a-message.rb:
require 'sinatra'
require 'sinatra/multi_route'
require 'json'
before do
content_type :json
end
helpers do
def parsed_body
JSON.parse(request.body.read)
end
end
route :get, :post, '/webhooks/answer' do
[
{
"action": "talk",
"text": "Please leave a message after the tone, then press #. We will get back to you as soon as we can"
},
{
"action": "record",
"eventUrl": ["#{request.base_url}/webhooks/recordings"],
"endOnSilence": "3",
"endOnKey": "#",
"beepStart": "true"
},
{
"action": "talk",
"text": "Thank you for your message. Goodbye"
}
].to_json
end
route :get, :post, '/webhooks/recordings' do
recording_url = params['recording_url'] || parsed_body['recording_url']
puts "Recording URL = #{recording_url}"
halt 204
end
set :port, 3000Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Pruébalo
Necesitarás:
- Graba un mensaje marcando tu número de Vonage y dejando tu mensaje después del tono (este fragmento de código).
- Descargar la grabación. Ver la Descargar una grabación para saber cómo hacerlo.
Lecturas complementarias
- Buzón de voz - Aprende a grabar audio de llamadas entrantes usando .NET y Voice API de Vonage.