Transférer un appel

Un extrait de code qui montre comment transférer le contrôle de l'appel en cours au contrôle d'un nouveau NCCO.

Exemple

Remplacez les variables suivantes dans le code de l'exemple :

CléDescription
VOICE_CALL_ID

The UUID of the call leg.

VOICE_NCCO_URL

The URL of the NCCO to execute. URLs must be array type.

Conditions préalables

Exécutez la commande suivante à l'invite de votre terminal pour créer le site JWT pour l'authentification :

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

Rédiger le code

Ajouter ce qui suit à transfer-a-call.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", "url": ["'"$VOICE_NCCO_URL"'"]}}'

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

bash transfer-a-call.sh

Conditions préalables

npm install @vonage/server-sdk

Créez un fichier nommé transfer-a-call.js et ajoutez le code suivant :

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

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

Voir la source complète

Rédiger le code

Ajouter ce qui suit à transfer-a-call.js:

vonage.voice.transferCallWithURL(VOICE_CALL_ID, VOICE_NCCO_URL)
  .then(() => console.log(`Call transfered to ${VOICE_NCCO_URL}`))
  .catch((error) => console.error(error));

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

node transfer-a-call.js

Conditions préalables

Ajouter ce qui suit à build.gradle:

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

Créez un fichier nommé TransferCall et ajoutez le code suivant à la méthode main:

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

Voir la source complète

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier TransferCall:

client.voice.call(VOICE_CALL_ID).transfer(VOICE_NCCO_URL)

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application 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') : ''

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.voice par le paquet contenant TransferCall:

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

Conditions préalables

Ajouter ce qui suit à build.gradle:

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

Créez un fichier nommé TransferCall et ajoutez le code suivant à la méthode main:

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

Voir la source complète

Rédiger le code

Ajouter ce qui suit à la méthode main du fichier TransferCall:

client.getVoiceClient().transferCall(VOICE_CALL_ID, VOICE_NCCO_URL);

Voir la source complète

Exécutez votre code

Nous pouvons utiliser le plugin application 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') : ''

Lancez la commande suivante gradle pour exécuter votre application, en remplaçant com.vonage.quickstart.voice par le paquet contenant TransferCall:

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

Conditions préalables

Install-Package Vonage

Rédiger le code

Ajouter ce qui suit à TransferCall.cs:

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

var callEditCommand = new CallEditCommand()
{
    Action = CallEditCommand.ActionType.transfer,
    Destination = new Destination()
    {
        Url = new[] { VOICE_NCCO_URL }
    }
};

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

Voir la source complète

Conditions préalables

composer require vonage/client

Rédiger le code

Ajouter ce qui suit à 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);

$call = $client->voice()->get(UUID);
$client->voice()->transferCall(
    $call->getUuid(),
    new \Vonage\Voice\NCCO\Action\Transfer("https://raw.githubusercontent.com/nexmo-community/ncco-examples/gh-pages/transfer.json")
);

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

php index.php

Conditions préalables

pip install vonage python-dotenv

Rédiger le code

Ajouter ce qui suit à transfer-a-call.py:

from vonage import Auth, Vonage

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

client.voice.transfer_call_answer_url(VOICE_CALL_ID, VOICE_NCCO_URL)

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

python voice/transfer-a-call.py

Conditions préalables

gem install vonage

Rédiger le code

Ajouter ce qui suit à transfer-a-call.rb:

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

ncco = {"type": "ncco", "url": [VOICE_NCCO_URL]}

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

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

ruby transfer-a-call.rb

Essayez-le

Vous devrez :

  1. Établissez un appel et obtenez l'UUID de l'appel. Pour ce faire, vous pouvez utiliser l'extrait de code "connecter un appel entrant".
  2. Exécutez l'exemple de code pour transférer l'appel.
  3. Le contrôle sera transféré à un nouveau BCN et vous entendrez un message de synthèse vocale pour le confirmer.

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.