Transferir una llamada con NCCO en línea

Un fragmento de código que muestra cómo transferir el control de la llamada actual al control utilizando NCCO en línea.

Ejemplo

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

ClaveDescripción
VOICE_CALL_ID

The UUID of the call leg.

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 transfer-call-inline-ncco.sh:

curl -X PUT https://api.nexmo.com/v1/calls/$VOICE_CALL_ID \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json"\
  -d '{"action": "transfer",
      "destination": {"type": "ncco", "ncco": [{"action":"talk", "text":"This is a transfer action using an inline NCCO"}]}}'

Ver fuente completa

Ejecute su código

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

bash transfer-call-inline-ncco.sh

Requisitos previos

npm install @vonage/server-sdk

Crea un archivo llamado transfer-a-call-inline-ncco.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 transfer-a-call-inline-ncco.js:

vonage.voice.transferCallWithNCCO(VOICE_CALL_ID, {
  action: 'transfer',
  destination: {
    'type': 'ncco',
    'ncco': [
      {
        'action': 'talk',
        'text': 'This is a transfer action using an inline NCCO',
      },
    ],
  },
})
  .then(() => console.log('Call Transferred'))
  .catch((error) => console.error(error));

Ver fuente completa

Ejecute su código

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

node transfer-a-call-inline-ncco.js

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado TransferCallWithNcco 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 TransferCallWithNcco:

client.voice.call(VOICE_CALL_ID).transfer(
    talkAction("This is a transfer action using an inline NCCO.")
)

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 TransferCallWithNcco:

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

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado TransferCallNCCO 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 TransferCallNCCO:

TalkAction talkAction = TalkAction.builder("This is a transfer action using an inline NCCO.").build();
client.getVoiceClient().transferCall(VOICE_CALL_ID, new Ncco(talkAction));

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 TransferCallNCCO:

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

Requisitos previos

Install-Package Vonage

Escriba el código

Añada lo siguiente a TransferCallNcco.cs:

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

var talkAction = new TalkAction() { Text = "This is a transfer action using an inline NCCO" };
var ncco = new Ncco(talkAction);
var callEditCommand = new CallEditCommand() 
{ 
    Action = CallEditCommand.ActionType.transfer, 
    Destination = new Destination() 
    { 
        Ncco = ncco
    } 
};

var response = await client.VoiceClient.UpdateCallAsync(VOICE_CALL_ID, callEditCommand);

Ver fuente completa

Requisitos previos

composer require vonage/client

Escriba el código

Añada lo siguiente a index.php:

require_once __DIR__ . '/../../config.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);

if (count($argv) != 2) {
    error_log("You must supply a UUID of currently connected call to update");
    exit(1);
}

define('UUID', $argv[1]);

try {
    $call = $client->voice()->get(UUID);
    $ncco = new \Vonage\Voice\NCCO\NCCO();
    $ncco->addAction(new \Vonage\Voice\NCCO\Action\Talk('This call was transferred'));

    $client->voice()->transferCall(
        $call->getUuid(),
        new \Vonage\Voice\NCCO\Action\Transfer($ncco)
    );
} catch (\Vonage\Client\Exception\Request $e) {
    error_log("Client error: " . $e->getMessage());
    exit(1);
} catch (\Vonage\Client\Exception\Server $e) {
    error_log("Server error: " . $e->getMessage());
    exit(1);
}

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 transfer-call-inline-ncco.py:

from vonage import Auth, Vonage
from vonage_voice import Talk

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

ncco = [Talk(text='This is a transfer action using an inline NCCO')]

client.voice.transfer_call_ncco(VOICE_CALL_ID, ncco)

Ver fuente completa

Ejecute su código

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

python voice/transfer-call-inline-ncco.py

Requisitos previos

gem install vonage

Escriba el código

Añada lo siguiente a transfer-a-call-ncco.rb:

client = Vonage::Client.new(
  application_id: VONAGE_APPLICATION_ID,
  private_key: VONAGE_PRIVATE_KEY
)

ncco = {
  "type": 'ncco',
  "ncco": [
    "action": 'talk',
    "text": 'This is a transfer action using an inline NCCO'
  ]
}

response = client.voice.transfer(VOICE_CALL_ID, destination: ncco)

Ver fuente completa

Ejecute su código

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

ruby transfer-a-call-ncco.rb

Pruébalo

Necesitarás:

  1. Establece una llamada y obtén el UUID de la misma. Para ello, puedes utilizar el fragmento de código «conectar una llamada entrante».
  2. Ejecute el código de ejemplo para transferir la llamada.
  3. El control se transferirá a un nuevo NCCO y oirás un mensaje de texto a voz para confirmarlo.

Lecturas complementarias

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