Reproducir un flujo de audio en una llamada

Este fragmento de código reproduce un flujo de audio en la llamada especificada.

Ejemplo

Sustituye las siguientes variables en el código de ejemplo:

ClaveDescripción
VOICE_CALL_ID

The UUID of the call leg.

VOICE_STREAM_URL

The URL of the audio file that will be streamed into an array. The URL must be in an array.

Requisitos previos

Ejecute el siguiente comando en el símbolo del sistema de su terminal para crear la dirección JWT para la autenticación:

export JWT=$(nexmo jwt:generate $PATH_TO_PRIVATE_KEY application_id=$NEXMO_APPLICATION_ID)

Escriba el código

Añada lo siguiente a play-audio-into-a-call.sh:

curl -X PUT https://api.nexmo.com/v1/calls/$VOICE_CALL_ID/stream \
  -H "Authorization: Bearer $JWT"\
  -H "Content-Type: application/json"\
  -d '{"stream_url": ["'"$VOICE_STREAM_URL"'"]}'

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

bash play-audio-into-a-call.sh

Requisitos previos

npm install @vonage/server-sdk

Crea un archivo llamado stream-audio-into-a-call.js y añade el siguiente código:

const { Vonage } = require('@vonage/server-sdk');

const vonage = new Vonage({
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_PRIVATE_KEY,
});

Ver fuente completa

Escriba el código

Añada lo siguiente a stream-audio-into-a-call.js:

vonage.voice.streamAudio(VOICE_CALL_ID, VOICE_STREAM_AUDIO, 0)
  .then((resp) => console.log(resp))
  .catch((error) => console.error(error));

const stopStream = () => {
  vonage.voice.stopStreamAudio(VOICE_CALL_ID)
    .then((resp) => console.log(resp))
    .catch((error) => console.error(error));
};

setTimeout(stopStream, 5000); // delay 5 seconds

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node stream-audio-into-a-call.js

Requisitos previos

Añada lo siguiente a build.gradle:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

Crea un archivo llamado StreamAudioIntoCall y añade el siguiente código al método main:

val client = Vonage {
    applicationId(VONAGE_APPLICATION_ID)
    privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
}

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo StreamAudioIntoCall:

val call = client.voice.call(VOICE_CALL_ID)
var streamInfo = call.streamAudio(VOICE_STREAM_URL)
Thread.sleep(5000)
streamInfo = call.stopStream()

Ver fuente completa

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:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.voice por el paquete que contiene StreamAudioIntoCall:

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

Requisitos previos

Añada lo siguiente a build.gradle:

implementation 'com.vonage:server-sdk:9.3.1'

Crea un archivo llamado StreamAudioToCall y añade el siguiente código al método main:

VonageClient client = VonageClient.builder()
        .applicationId(VONAGE_APPLICATION_ID)
        .privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
        .build();

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo StreamAudioToCall:

var response = client.getVoiceClient().startStream(VOICE_CALL_ID, VOICE_STREAM_URL, 0);
Thread.sleep(5000);
response = client.getVoiceClient().stopStream(VOICE_CALL_ID);

Ver fuente completa

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:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.voice por el paquete que contiene StreamAudioToCall:

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

Requisitos previos

Install-Package Vonage

Escriba el código

Añada lo siguiente a PlayAudioStreamIntoCall.cs:

var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH);
var client = new VonageClient(credentials);

var command = new StreamCommand() { StreamUrl = new[] { VOICE_STREAM_URL } };

var response = await client.VoiceClient.StartStreamAsync(VOICE_CALL_ID, command);

Ver fuente completa

Requisitos previos

composer require vonage/client

Escriba el código

Añada lo siguiente a index.php:

require_once __DIR__ . '/../../vendor/autoload.php';

$keypair = new \Vonage\Client\Credentials\Keypair(file_get_contents(VONAGE_APPLICATION_PRIVATE_KEY_PATH), VONAGE_APPLICATION_ID);
$client = new \Vonage\Client($keypair);

$client->voice()->streamAudio(UUID, 'https://nexmo-community.github.io/ncco-examples/assets/voice_api_audio_streaming.mp3');

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php index.php

Requisitos previos

pip install vonage python-dotenv

Escriba el código

Añada lo siguiente a play-audio-stream-into-call.py:

from vonage import Auth, Vonage
from vonage_voice import AudioStreamOptions, CallMessage

client = Vonage(
    Auth(
        application_id=VONAGE_APPLICATION_ID,
        private_key=VONAGE_PRIVATE_KEY,
    )
)

response: CallMessage = client.voice.play_audio_into_call(
    VOICE_CALL_ID,
    audio_stream_options=AudioStreamOptions(stream_url=[VOICE_STREAM_URL]),
)

pprint(response)

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

python voice/play-audio-stream-into-call.py

Requisitos previos

gem install vonage

Escriba el código

Añada lo siguiente a play-audio-stream-into-call.rb:

client = Vonage::Client.new(
  application_id: VONAGE_APPLICATION_ID,
  private_key: VONAGE_PRIVATE_KEY
)
    
response = client.voice.stream.start(VOICE_CALL_ID, stream_url: [VOICE_STREAM_URL])

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby play-audio-stream-into-call.rb

Pruébalo

Al ejecutar el código, se reproduce un flujo de audio del archivo especificado en la llamada identificada con el UUID especificado.

Lecturas complementarias

  • Conferencias telefónicas - En esta guía se explican los dos conceptos que Vonage asocia a una llamada: «tramo» y «conversación».