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"'"]}}'Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
npm install @vonage/server-sdkCré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,
});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));Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
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)
}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)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 :
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.kt.voice par le paquet contenant 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();Rédiger le code
Ajouter ce qui suit à la méthode main du fichier TransferCall:
client.getVoiceClient().transferCall(VOICE_CALL_ID, VOICE_NCCO_URL);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 :
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Exécutez la commande gradle suivante pour exécuter votre application, en remplaçant com.vonage.quickstart.voice par le paquet contenant TransferCall:
Conditions préalables
Install-Package VonageRé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);Conditions préalables
composer require vonage/clientRé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")
);
Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
pip install vonage python-dotenvRé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)Exécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Conditions préalables
gem install vonageExécutez votre code
Enregistrez ce fichier sur votre machine et exécutez-le :
Essayez-le
Vous devrez :
- Établissez un appel et obtenez l'UUID de l'appel. Pour ce faire, vous pouvez utiliser l'extrait de code "connecter un appel entrant".
- Exécutez l'exemple de code pour transférer l'appel.
- 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.