appel : transfert
Article
08/23/2023
19 contributeurs
Commentaires
Dans cet article
Espace de noms: microsoft.graph
Importante
Les API sous la version /beta
dans Microsoft Graph sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge. Pour déterminer si une API est disponible dans v1.0, utilisez le sélecteur Version .
Transférez un appel d’égal à égal ou un appel de groupe actif.
Note: Cela n’est pris en charge que si le destinataire du transfert et la cible de transfert sont des utilisateurs Microsoft Teams qui appartiennent au même locataire. Le transfert vers un numéro RTC est pris en charge uniquement pour les instance d’application. Pour en savoir plus sur le transfert, le destinataire et la cible de transfert, consultez RFC 5589 .
Un transfert consultatif signifie que le cédant peut informer la personne à laquelle il souhaite transférer l’appel (le destinataire du transfert), avant que le transfert ne soit effectué. Cela s’oppose au transfert direct de l’appel.
Cette API est disponible dans les déploiements de cloud national suivants.
Service global
Gouvernement des États-Unis L4
Us Government L5 (DOD)
Chine gérée par 21Vianet
✅
❌
❌
❌
Autorisations
Choisissez l’autorisation ou les autorisations marquées comme moins privilégiées pour cette API. Utilisez une autorisation ou des autorisations privilégiées plus élevées uniquement si votre application en a besoin . Pour plus d’informations sur les autorisations déléguées et d’application, consultez Types d’autorisations . Pour en savoir plus sur ces autorisations, consultez les informations de référence sur les autorisations .
Type d’autorisation
Autorisations avec privilèges minimum
Autorisations privilégiées plus élevées
Déléguée (compte professionnel ou scolaire)
Non prise en charge.
Non prise en charge.
Déléguée (compte Microsoft personnel)
Non prise en charge.
Non prise en charge.
Application
Calls.Initiate.All
Non disponible.
Requête HTTP
POST /app/calls/{id}/transfer
POST /communications/calls/{id}/transfer
Remarque : le chemin d’accès /app
est obsolète. À l’avenir, utilisez le chemin d’accès /communications
.
Corps de la demande
Dans le corps de la demande, indiquez un objet JSON avec les paramètres suivants.
Paramètre
Type
Description
transferTarget
invitationParticipantInfo
Participant qui est la cible du transfert.
Cessionnaire
participantInfo
Participant qui est le destinataire du transfert. Il n’est nécessaire que lors du transfert à partir d’un appel de groupe.
Réponse
Si elle réussit, cette méthode renvoie un code de réponse 202 Accepted
.
Exemples
Ces exemples montrent le flux d’un appel entrant jusqu’aux différents types de notifications de transfert.
Exemple 1 : transfert d’appel à partir d’un appel d’égal à égal
Demande
L’exemple suivant illustre la demande.
POST https://graph.microsoft.com/beta/communications/calls/{id}/transfer
Content-Type: application/json
Content-Length: 430
{
"transferTarget": {
"endpointType": "default",
"identity": {
"user": {
"id": "550fae72-d251-43ec-868c-373732c2704f",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"displayName": "Heidi Steen"
}
},
"languageId": "languageId-value",
"region": "region-value"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Communications.Calls.Item.Transfer;
using Microsoft.Graph.Beta.Models;
var requestBody = new TransferPostRequestBody
{
TransferTarget = new InvitationParticipantInfo
{
EndpointType = EndpointType.Default,
Identity = new IdentitySet
{
User = new Identity
{
Id = "550fae72-d251-43ec-868c-373732c2704f",
DisplayName = "Heidi Steen",
AdditionalData = new Dictionary<string, object>
{
{
"tenantId" , "72f988bf-86f1-41af-91ab-2d7cd011db47"
},
},
},
},
AdditionalData = new Dictionary<string, object>
{
{
"languageId" , "languageId-value"
},
{
"region" , "region-value"
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Communications.Calls["{call-id}"].Transfer.PostAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc-beta communications calls transfer post --call-id {call-id} --body '{\
"transferTarget": {\
"endpointType": "default",\
"identity": {\
"user": {\
"id": "550fae72-d251-43ec-868c-373732c2704f",\
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",\
"displayName": "Heidi Steen"\
}\
},\
"languageId": "languageId-value",\
"region": "region-value"\
}\
}\
'
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphcommunications "github.com/microsoftgraph/msgraph-beta-sdk-go/communications"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphcommunications.NewTransferPostRequestBody()
transferTarget := graphmodels.NewInvitationParticipantInfo()
endpointType := graphmodels.DEFAULT_ENDPOINTTYPE
transferTarget.SetEndpointType(&endpointType)
identity := graphmodels.NewIdentitySet()
user := graphmodels.NewIdentity()
id := "550fae72-d251-43ec-868c-373732c2704f"
user.SetId(&id)
displayName := "Heidi Steen"
user.SetDisplayName(&displayName)
additionalData := map[string]interface{}{
"tenantId" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
user.SetAdditionalData(additionalData)
identity.SetUser(user)
transferTarget.SetIdentity(identity)
additionalData := map[string]interface{}{
"languageId" : "languageId-value",
"region" : "region-value",
}
transferTarget.SetAdditionalData(additionalData)
requestBody.SetTransferTarget(transferTarget)
graphClient.Communications().Calls().ByCallId("call-id").Transfer().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody transferPostRequestBody = new com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody();
InvitationParticipantInfo transferTarget = new InvitationParticipantInfo();
transferTarget.setEndpointType(EndpointType.Default);
IdentitySet identity = new IdentitySet();
Identity user = new Identity();
user.setId("550fae72-d251-43ec-868c-373732c2704f");
user.setDisplayName("Heidi Steen");
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("tenantId", "72f988bf-86f1-41af-91ab-2d7cd011db47");
user.setAdditionalData(additionalData);
identity.setUser(user);
transferTarget.setIdentity(identity);
HashMap<String, Object> additionalData1 = new HashMap<String, Object>();
additionalData1.put("languageId", "languageId-value");
additionalData1.put("region", "region-value");
transferTarget.setAdditionalData(additionalData1);
transferPostRequestBody.setTransferTarget(transferTarget);
graphClient.communications().calls().byCallId("{call-id}").transfer().post(transferPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const transfer = {
transferTarget: {
endpointType: 'default',
identity: {
user: {
id: '550fae72-d251-43ec-868c-373732c2704f',
tenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47',
displayName: 'Heidi Steen'
}
},
languageId: 'languageId-value',
region: 'region-value'
}
};
await client.api('/communications/calls/{id}/transfer')
.version('beta')
.post(transfer);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\TransferPostRequestBody;
use Microsoft\Graph\Generated\Models\InvitationParticipantInfo;
use Microsoft\Graph\Generated\Models\IdentitySet;
use Microsoft\Graph\Generated\Models\Identity;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new TransferPostRequestBody();
$transferTarget = new InvitationParticipantInfo();
$transferTarget->setEndpointType(new EndpointType('default'));
$transferTargetIdentity = new IdentitySet();
$transferTargetIdentityUser = new Identity();
$transferTargetIdentityUser->setId('550fae72-d251-43ec-868c-373732c2704f');
$transferTargetIdentityUser->setDisplayName('Heidi Steen');
$additionalData = [
'tenantId' => '72f988bf-86f1-41af-91ab-2d7cd011db47',
];
$transferTargetIdentityUser->setAdditionalData($additionalData);
$transferTargetIdentity->setUser($transferTargetIdentityUser);
$transferTarget->setIdentity($transferTargetIdentity);
$additionalData = [
'languageId' => 'languageId-value',
'region' => 'region-value',
];
$transferTarget->setAdditionalData($additionalData);
$requestBody->setTransferTarget($transferTarget);
$graphServiceClient->communications()->calls()->byCallId('call-id')->transfer()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.CloudCommunications
$params = @{
transferTarget = @{
endpointType = "default"
identity = @{
user = @{
id = "550fae72-d251-43ec-868c-373732c2704f"
tenantId = "72f988bf-86f1-41af-91ab-2d7cd011db47"
displayName = "Heidi Steen"
}
}
languageId = "languageId-value"
region = "region-value"
}
}
Move-MgBetaCommunicationCall -CallId $callId -BodyParameter $params
from msgraph import GraphServiceClient
from msgraph.generated.communications.calls.item.transfer.transfer_post_request_body import TransferPostRequestBody
from msgraph.generated.models.invitation_participant_info import InvitationParticipantInfo
from msgraph.generated.models.identity_set import IdentitySet
from msgraph.generated.models.identity import Identity
graph_client = GraphServiceClient(credentials, scopes)
request_body = TransferPostRequestBody(
transfer_target = InvitationParticipantInfo(
endpoint_type = EndpointType.Default,
identity = IdentitySet(
user = Identity(
id = "550fae72-d251-43ec-868c-373732c2704f",
display_name = "Heidi Steen",
additional_data = {
"tenant_id" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
),
),
additional_data = {
"language_id" : "languageId-value",
"region" : "region-value",
}
),
)
await graph_client.communications.calls.by_call_id('call-id').transfer.post(request_body)
Réponse
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 202 Accepted
Notification - transfert
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferring"
}
}
]
}
Notification : transfert accepté
Note: Le transfert accepté peut se produire après ou avant l’inactivité audio de l’état du média.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferAccepted"
}
}
]
}
Notification - Transfert terminé
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "deleted",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "terminated",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 0,
"subcode": 7015,
"message": "GracefulTransferCompleted"
}
}
}
]
}
Notification - Échec du transfert
Note: Lorsqu’un transfert d’appel échoue, l’état de l’appel est established
.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "established",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 500,
"subCode": 7000,
"message": "<message>"
}
}
}
]
}
Exemple 2 : Transfert consultatif à partir d’un appel d’égal à égal
Demande
L’exemple suivant illustre la demande.
POST https://graph.microsoft.com/beta/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b/transfer
Content-Type: application/json
{
"transferTarget": {
"@odata.type": "#microsoft.graph.invitationParticipantInfo",
"endpointType": "default",
"identity": {
"@odata.type": "#microsoft.graph.identitySet",
"user": {
"@odata.type": "#microsoft.graph.identity",
"id": "550fae72-d251-43ec-868c-373732c2704f",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"displayName": "Heidi Steen"
}
},
"languageId": "en-us",
"region": "amer",
"replacesCallId": "e5d39592-99bd-4db8-bca8-30fb894ec51d"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Communications.Calls.Item.Transfer;
using Microsoft.Graph.Beta.Models;
var requestBody = new TransferPostRequestBody
{
TransferTarget = new InvitationParticipantInfo
{
OdataType = "#microsoft.graph.invitationParticipantInfo",
EndpointType = EndpointType.Default,
Identity = new IdentitySet
{
OdataType = "#microsoft.graph.identitySet",
User = new Identity
{
OdataType = "#microsoft.graph.identity",
Id = "550fae72-d251-43ec-868c-373732c2704f",
DisplayName = "Heidi Steen",
AdditionalData = new Dictionary<string, object>
{
{
"tenantId" , "72f988bf-86f1-41af-91ab-2d7cd011db47"
},
},
},
},
ReplacesCallId = "e5d39592-99bd-4db8-bca8-30fb894ec51d",
AdditionalData = new Dictionary<string, object>
{
{
"languageId" , "en-us"
},
{
"region" , "amer"
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Communications.Calls["{call-id}"].Transfer.PostAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc-beta communications calls transfer post --call-id {call-id} --body '{\
"transferTarget": {\
"@odata.type": "#microsoft.graph.invitationParticipantInfo",\
"endpointType": "default",\
"identity": {\
"@odata.type": "#microsoft.graph.identitySet",\
"user": {\
"@odata.type": "#microsoft.graph.identity",\
"id": "550fae72-d251-43ec-868c-373732c2704f",\
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",\
"displayName": "Heidi Steen"\
}\
},\
"languageId": "en-us",\
"region": "amer",\
"replacesCallId": "e5d39592-99bd-4db8-bca8-30fb894ec51d"\
}\
}\
'
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphcommunications "github.com/microsoftgraph/msgraph-beta-sdk-go/communications"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphcommunications.NewTransferPostRequestBody()
transferTarget := graphmodels.NewInvitationParticipantInfo()
endpointType := graphmodels.DEFAULT_ENDPOINTTYPE
transferTarget.SetEndpointType(&endpointType)
identity := graphmodels.NewIdentitySet()
user := graphmodels.NewIdentity()
id := "550fae72-d251-43ec-868c-373732c2704f"
user.SetId(&id)
displayName := "Heidi Steen"
user.SetDisplayName(&displayName)
additionalData := map[string]interface{}{
"tenantId" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
user.SetAdditionalData(additionalData)
identity.SetUser(user)
transferTarget.SetIdentity(identity)
replacesCallId := "e5d39592-99bd-4db8-bca8-30fb894ec51d"
transferTarget.SetReplacesCallId(&replacesCallId)
additionalData := map[string]interface{}{
"languageId" : "en-us",
"region" : "amer",
}
transferTarget.SetAdditionalData(additionalData)
requestBody.SetTransferTarget(transferTarget)
graphClient.Communications().Calls().ByCallId("call-id").Transfer().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody transferPostRequestBody = new com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody();
InvitationParticipantInfo transferTarget = new InvitationParticipantInfo();
transferTarget.setOdataType("#microsoft.graph.invitationParticipantInfo");
transferTarget.setEndpointType(EndpointType.Default);
IdentitySet identity = new IdentitySet();
identity.setOdataType("#microsoft.graph.identitySet");
Identity user = new Identity();
user.setOdataType("#microsoft.graph.identity");
user.setId("550fae72-d251-43ec-868c-373732c2704f");
user.setDisplayName("Heidi Steen");
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("tenantId", "72f988bf-86f1-41af-91ab-2d7cd011db47");
user.setAdditionalData(additionalData);
identity.setUser(user);
transferTarget.setIdentity(identity);
transferTarget.setReplacesCallId("e5d39592-99bd-4db8-bca8-30fb894ec51d");
HashMap<String, Object> additionalData1 = new HashMap<String, Object>();
additionalData1.put("languageId", "en-us");
additionalData1.put("region", "amer");
transferTarget.setAdditionalData(additionalData1);
transferPostRequestBody.setTransferTarget(transferTarget);
graphClient.communications().calls().byCallId("{call-id}").transfer().post(transferPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const transfer = {
transferTarget: {
'@odata.type': '#microsoft.graph.invitationParticipantInfo',
endpointType: 'default',
identity: {
'@odata.type': '#microsoft.graph.identitySet',
user: {
'@odata.type': '#microsoft.graph.identity',
id: '550fae72-d251-43ec-868c-373732c2704f',
tenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47',
displayName: 'Heidi Steen'
}
},
languageId: 'en-us',
region: 'amer',
replacesCallId: 'e5d39592-99bd-4db8-bca8-30fb894ec51d'
}
};
await client.api('/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b/transfer')
.version('beta')
.post(transfer);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\TransferPostRequestBody;
use Microsoft\Graph\Generated\Models\InvitationParticipantInfo;
use Microsoft\Graph\Generated\Models\IdentitySet;
use Microsoft\Graph\Generated\Models\Identity;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new TransferPostRequestBody();
$transferTarget = new InvitationParticipantInfo();
$transferTarget->setOdataType('#microsoft.graph.invitationParticipantInfo');
$transferTarget->setEndpointType(new EndpointType('default'));
$transferTargetIdentity = new IdentitySet();
$transferTargetIdentity->setOdataType('#microsoft.graph.identitySet');
$transferTargetIdentityUser = new Identity();
$transferTargetIdentityUser->setOdataType('#microsoft.graph.identity');
$transferTargetIdentityUser->setId('550fae72-d251-43ec-868c-373732c2704f');
$transferTargetIdentityUser->setDisplayName('Heidi Steen');
$additionalData = [
'tenantId' => '72f988bf-86f1-41af-91ab-2d7cd011db47',
];
$transferTargetIdentityUser->setAdditionalData($additionalData);
$transferTargetIdentity->setUser($transferTargetIdentityUser);
$transferTarget->setIdentity($transferTargetIdentity);
$transferTarget->setReplacesCallId('e5d39592-99bd-4db8-bca8-30fb894ec51d');
$additionalData = [
'languageId' => 'en-us',
'region' => 'amer',
];
$transferTarget->setAdditionalData($additionalData);
$requestBody->setTransferTarget($transferTarget);
$graphServiceClient->communications()->calls()->byCallId('call-id')->transfer()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.CloudCommunications
$params = @{
transferTarget = @{
"@odata.type" = "#microsoft.graph.invitationParticipantInfo"
endpointType = "default"
identity = @{
"@odata.type" = "#microsoft.graph.identitySet"
user = @{
"@odata.type" = "#microsoft.graph.identity"
id = "550fae72-d251-43ec-868c-373732c2704f"
tenantId = "72f988bf-86f1-41af-91ab-2d7cd011db47"
displayName = "Heidi Steen"
}
}
languageId = "en-us"
region = "amer"
replacesCallId = "e5d39592-99bd-4db8-bca8-30fb894ec51d"
}
}
Move-MgBetaCommunicationCall -CallId $callId -BodyParameter $params
from msgraph import GraphServiceClient
from msgraph.generated.communications.calls.item.transfer.transfer_post_request_body import TransferPostRequestBody
from msgraph.generated.models.invitation_participant_info import InvitationParticipantInfo
from msgraph.generated.models.identity_set import IdentitySet
from msgraph.generated.models.identity import Identity
graph_client = GraphServiceClient(credentials, scopes)
request_body = TransferPostRequestBody(
transfer_target = InvitationParticipantInfo(
odata_type = "#microsoft.graph.invitationParticipantInfo",
endpoint_type = EndpointType.Default,
identity = IdentitySet(
odata_type = "#microsoft.graph.identitySet",
user = Identity(
odata_type = "#microsoft.graph.identity",
id = "550fae72-d251-43ec-868c-373732c2704f",
display_name = "Heidi Steen",
additional_data = {
"tenant_id" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
),
),
replaces_call_id = "e5d39592-99bd-4db8-bca8-30fb894ec51d",
additional_data = {
"language_id" : "en-us",
"region" : "amer",
}
),
)
await graph_client.communications.calls.by_call_id('call-id').transfer.post(request_body)
Réponse
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 202 Accepted
Notification - transfert
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferring"
}
}
]
}
Notification : transfert accepté
Note: Le transfert accepté peut se produire après ou avant l’inactivité audio de l’état du média.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferAccepted"
}
}
]
}
Notification - Transfert terminé
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "deleted",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "terminated",
"terminationReason": "AppTransferred"
}
}
]
}
Notification - Échec du transfert
Note: Lorsqu’un transfert d’appel échoue, l’état de l’appel est established
.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "established",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 500,
"subCode": 7700,
"message": "<message>"
},
"replacesContext": "<replacesContext>"
}
}
]
}
Exemple 3 : transfert d’appel d’un appel d’égal à égal vers un numéro RTC
Cet appel nécessite une application instance avec un numéro RTC attribué. Pour plus d’informations, consultez Attribuer un numéro de téléphone à votre bot .
Note: L’ID de téléphone est le numéro de téléphone au format E.164.
Demande
L’exemple suivant illustre la demande.
POST https://graph.microsoft.com/beta/communications/calls/{id}/transfer
Content-Type: application/json
Content-Length: 430
{
"transferTarget": {
"endpointType": "default",
"identity": {
"phone": {
"@odata.type": "#microsoft.graph.identity",
"id": "+12345678901"
}
},
"languageId": "languageId-value",
"region": "region-value"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Communications.Calls.Item.Transfer;
using Microsoft.Graph.Beta.Models;
var requestBody = new TransferPostRequestBody
{
TransferTarget = new InvitationParticipantInfo
{
EndpointType = EndpointType.Default,
Identity = new IdentitySet
{
AdditionalData = new Dictionary<string, object>
{
{
"phone" , new Identity
{
OdataType = "#microsoft.graph.identity",
Id = "+12345678901",
}
},
},
},
AdditionalData = new Dictionary<string, object>
{
{
"languageId" , "languageId-value"
},
{
"region" , "region-value"
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Communications.Calls["{call-id}"].Transfer.PostAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc-beta communications calls transfer post --call-id {call-id} --body '{\
"transferTarget": {\
"endpointType": "default",\
"identity": {\
"phone": {\
"@odata.type": "#microsoft.graph.identity",\
"id": "+12345678901"\
}\
},\
"languageId": "languageId-value",\
"region": "region-value"\
}\
}\
'
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphcommunications "github.com/microsoftgraph/msgraph-beta-sdk-go/communications"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphcommunications.NewTransferPostRequestBody()
transferTarget := graphmodels.NewInvitationParticipantInfo()
endpointType := graphmodels.DEFAULT_ENDPOINTTYPE
transferTarget.SetEndpointType(&endpointType)
identity := graphmodels.NewIdentitySet()
additionalData := map[string]interface{}{
phone := graphmodels.NewIdentity()
id := "+12345678901"
phone.SetId(&id)
identity.SetPhone(phone)
}
identity.SetAdditionalData(additionalData)
transferTarget.SetIdentity(identity)
additionalData := map[string]interface{}{
"languageId" : "languageId-value",
"region" : "region-value",
}
transferTarget.SetAdditionalData(additionalData)
requestBody.SetTransferTarget(transferTarget)
graphClient.Communications().Calls().ByCallId("call-id").Transfer().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody transferPostRequestBody = new com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody();
InvitationParticipantInfo transferTarget = new InvitationParticipantInfo();
transferTarget.setEndpointType(EndpointType.Default);
IdentitySet identity = new IdentitySet();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
Identity phone = new Identity();
phone.setOdataType("#microsoft.graph.identity");
phone.setId("+12345678901");
additionalData.put("phone", phone);
identity.setAdditionalData(additionalData);
transferTarget.setIdentity(identity);
HashMap<String, Object> additionalData1 = new HashMap<String, Object>();
additionalData1.put("languageId", "languageId-value");
additionalData1.put("region", "region-value");
transferTarget.setAdditionalData(additionalData1);
transferPostRequestBody.setTransferTarget(transferTarget);
graphClient.communications().calls().byCallId("{call-id}").transfer().post(transferPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const transfer = {
transferTarget: {
endpointType: 'default',
identity: {
phone: {
'@odata.type': '#microsoft.graph.identity',
id: '+12345678901'
}
},
languageId: 'languageId-value',
region: 'region-value'
}
};
await client.api('/communications/calls/{id}/transfer')
.version('beta')
.post(transfer);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\TransferPostRequestBody;
use Microsoft\Graph\Generated\Models\InvitationParticipantInfo;
use Microsoft\Graph\Generated\Models\IdentitySet;
use Microsoft\Graph\Generated\Models\Identity;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new TransferPostRequestBody();
$transferTarget = new InvitationParticipantInfo();
$transferTarget->setEndpointType(new EndpointType('default'));
$transferTargetIdentity = new IdentitySet();
$additionalData = [
'phone' => [
'@odata.type' => '#microsoft.graph.identity',
'id' => '+12345678901',
],
];
$transferTargetIdentity->setAdditionalData($additionalData);
$transferTarget->setIdentity($transferTargetIdentity);
$additionalData = [
'languageId' => 'languageId-value',
'region' => 'region-value',
];
$transferTarget->setAdditionalData($additionalData);
$requestBody->setTransferTarget($transferTarget);
$graphServiceClient->communications()->calls()->byCallId('call-id')->transfer()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.CloudCommunications
$params = @{
transferTarget = @{
endpointType = "default"
identity = @{
phone = @{
"@odata.type" = "#microsoft.graph.identity"
id = "+12345678901"
}
}
languageId = "languageId-value"
region = "region-value"
}
}
Move-MgBetaCommunicationCall -CallId $callId -BodyParameter $params
from msgraph import GraphServiceClient
from msgraph.generated.communications.calls.item.transfer.transfer_post_request_body import TransferPostRequestBody
from msgraph.generated.models.invitation_participant_info import InvitationParticipantInfo
from msgraph.generated.models.identity_set import IdentitySet
from msgraph.generated.models.identity import Identity
graph_client = GraphServiceClient(credentials, scopes)
request_body = TransferPostRequestBody(
transfer_target = InvitationParticipantInfo(
endpoint_type = EndpointType.Default,
identity = IdentitySet(
additional_data = {
"phone" : {
"@odata_type" : "#microsoft.graph.identity",
"id" : "+12345678901",
},
}
),
additional_data = {
"language_id" : "languageId-value",
"region" : "region-value",
}
),
)
await graph_client.communications.calls.by_call_id('call-id').transfer.post(request_body)
Réponse
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 202 Accepted
Notification - transfert
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferring"
}
}
]
}
Notification : transfert accepté
Note: Le transfert accepté peut se produire après ou avant l’inactivité audio de l’état du média.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferAccepted"
}
}
]
}
Notification - Transfert terminé
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "deleted",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "terminated",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 0,
"subcode": 7015,
"message": "GracefulTransferCompleted"
}
}
}
]
}
Notification - Échec du transfert
Note: Lorsqu’un transfert d’appel échoue, l’état de l’appel est established
.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "established",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 500,
"subCode": 7000,
"message": "<message>"
}
}
}
]
}
Exemple 4 : Transfert consultatif d’un appel d’égal à égal vers un numéro RTC
Cet appel nécessite une application instance avec un numéro RTC attribué. Pour plus d’informations, consultez Attribuer un numéro de téléphone à votre bot .
Note: L’ID de téléphone est le numéro de téléphone au format E.164.
Demande
L’exemple suivant illustre la demande.
POST https://graph.microsoft.com/beta/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b/transfer
Content-Type: application/json
{
"transferTarget": {
"@odata.type": "#microsoft.graph.invitationParticipantInfo",
"endpointType": "default",
"identity": {
"@odata.type": "#microsoft.graph.identitySet",
"phone": {
"@odata.type": "#microsoft.graph.identity",
"id": "+12345678901"
}
},
"languageId": "en-us",
"region": "amer",
"replacesCallId": "e5d39592-99bd-4db8-bca8-30fb894ec51d"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Communications.Calls.Item.Transfer;
using Microsoft.Graph.Beta.Models;
var requestBody = new TransferPostRequestBody
{
TransferTarget = new InvitationParticipantInfo
{
OdataType = "#microsoft.graph.invitationParticipantInfo",
EndpointType = EndpointType.Default,
Identity = new IdentitySet
{
OdataType = "#microsoft.graph.identitySet",
AdditionalData = new Dictionary<string, object>
{
{
"phone" , new Identity
{
OdataType = "#microsoft.graph.identity",
Id = "+12345678901",
}
},
},
},
ReplacesCallId = "e5d39592-99bd-4db8-bca8-30fb894ec51d",
AdditionalData = new Dictionary<string, object>
{
{
"languageId" , "en-us"
},
{
"region" , "amer"
},
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Communications.Calls["{call-id}"].Transfer.PostAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc-beta communications calls transfer post --call-id {call-id} --body '{\
"transferTarget": {\
"@odata.type": "#microsoft.graph.invitationParticipantInfo",\
"endpointType": "default",\
"identity": {\
"@odata.type": "#microsoft.graph.identitySet",\
"phone": {\
"@odata.type": "#microsoft.graph.identity",\
"id": "+12345678901"\
}\
},\
"languageId": "en-us",\
"region": "amer",\
"replacesCallId": "e5d39592-99bd-4db8-bca8-30fb894ec51d"\
}\
}\
'
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphcommunications "github.com/microsoftgraph/msgraph-beta-sdk-go/communications"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphcommunications.NewTransferPostRequestBody()
transferTarget := graphmodels.NewInvitationParticipantInfo()
endpointType := graphmodels.DEFAULT_ENDPOINTTYPE
transferTarget.SetEndpointType(&endpointType)
identity := graphmodels.NewIdentitySet()
additionalData := map[string]interface{}{
phone := graphmodels.NewIdentity()
id := "+12345678901"
phone.SetId(&id)
identity.SetPhone(phone)
}
identity.SetAdditionalData(additionalData)
transferTarget.SetIdentity(identity)
replacesCallId := "e5d39592-99bd-4db8-bca8-30fb894ec51d"
transferTarget.SetReplacesCallId(&replacesCallId)
additionalData := map[string]interface{}{
"languageId" : "en-us",
"region" : "amer",
}
transferTarget.SetAdditionalData(additionalData)
requestBody.SetTransferTarget(transferTarget)
graphClient.Communications().Calls().ByCallId("call-id").Transfer().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody transferPostRequestBody = new com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody();
InvitationParticipantInfo transferTarget = new InvitationParticipantInfo();
transferTarget.setOdataType("#microsoft.graph.invitationParticipantInfo");
transferTarget.setEndpointType(EndpointType.Default);
IdentitySet identity = new IdentitySet();
identity.setOdataType("#microsoft.graph.identitySet");
HashMap<String, Object> additionalData = new HashMap<String, Object>();
Identity phone = new Identity();
phone.setOdataType("#microsoft.graph.identity");
phone.setId("+12345678901");
additionalData.put("phone", phone);
identity.setAdditionalData(additionalData);
transferTarget.setIdentity(identity);
transferTarget.setReplacesCallId("e5d39592-99bd-4db8-bca8-30fb894ec51d");
HashMap<String, Object> additionalData1 = new HashMap<String, Object>();
additionalData1.put("languageId", "en-us");
additionalData1.put("region", "amer");
transferTarget.setAdditionalData(additionalData1);
transferPostRequestBody.setTransferTarget(transferTarget);
graphClient.communications().calls().byCallId("{call-id}").transfer().post(transferPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const transfer = {
transferTarget: {
'@odata.type': '#microsoft.graph.invitationParticipantInfo',
endpointType: 'default',
identity: {
'@odata.type': '#microsoft.graph.identitySet',
phone: {
'@odata.type': '#microsoft.graph.identity',
id: '+12345678901'
}
},
languageId: 'en-us',
region: 'amer',
replacesCallId: 'e5d39592-99bd-4db8-bca8-30fb894ec51d'
}
};
await client.api('/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b/transfer')
.version('beta')
.post(transfer);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\TransferPostRequestBody;
use Microsoft\Graph\Generated\Models\InvitationParticipantInfo;
use Microsoft\Graph\Generated\Models\IdentitySet;
use Microsoft\Graph\Generated\Models\Identity;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new TransferPostRequestBody();
$transferTarget = new InvitationParticipantInfo();
$transferTarget->setOdataType('#microsoft.graph.invitationParticipantInfo');
$transferTarget->setEndpointType(new EndpointType('default'));
$transferTargetIdentity = new IdentitySet();
$transferTargetIdentity->setOdataType('#microsoft.graph.identitySet');
$additionalData = [
'phone' => [
'@odata.type' => '#microsoft.graph.identity',
'id' => '+12345678901',
],
];
$transferTargetIdentity->setAdditionalData($additionalData);
$transferTarget->setIdentity($transferTargetIdentity);
$transferTarget->setReplacesCallId('e5d39592-99bd-4db8-bca8-30fb894ec51d');
$additionalData = [
'languageId' => 'en-us',
'region' => 'amer',
];
$transferTarget->setAdditionalData($additionalData);
$requestBody->setTransferTarget($transferTarget);
$graphServiceClient->communications()->calls()->byCallId('call-id')->transfer()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.CloudCommunications
$params = @{
transferTarget = @{
"@odata.type" = "#microsoft.graph.invitationParticipantInfo"
endpointType = "default"
identity = @{
"@odata.type" = "#microsoft.graph.identitySet"
phone = @{
"@odata.type" = "#microsoft.graph.identity"
id = "+12345678901"
}
}
languageId = "en-us"
region = "amer"
replacesCallId = "e5d39592-99bd-4db8-bca8-30fb894ec51d"
}
}
Move-MgBetaCommunicationCall -CallId $callId -BodyParameter $params
from msgraph import GraphServiceClient
from msgraph.generated.communications.calls.item.transfer.transfer_post_request_body import TransferPostRequestBody
from msgraph.generated.models.invitation_participant_info import InvitationParticipantInfo
from msgraph.generated.models.identity_set import IdentitySet
from msgraph.generated.models.identity import Identity
graph_client = GraphServiceClient(credentials, scopes)
request_body = TransferPostRequestBody(
transfer_target = InvitationParticipantInfo(
odata_type = "#microsoft.graph.invitationParticipantInfo",
endpoint_type = EndpointType.Default,
identity = IdentitySet(
odata_type = "#microsoft.graph.identitySet",
additional_data = {
"phone" : {
"@odata_type" : "#microsoft.graph.identity",
"id" : "+12345678901",
},
}
),
replaces_call_id = "e5d39592-99bd-4db8-bca8-30fb894ec51d",
additional_data = {
"language_id" : "en-us",
"region" : "amer",
}
),
)
await graph_client.communications.calls.by_call_id('call-id').transfer.post(request_body)
Réponse
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
HTTP/1.1 202 Accepted
Notification - transfert
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferring"
}
}
]
}
Notification : transfert accepté
Note: Le transfert accepté peut se produire après ou avant l’inactivité audio de l’état du média.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferAccepted"
}
}
]
}
Notification - Transfert terminé
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "deleted",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "terminated",
"terminationReason": "AppTransferred"
}
}
]
}
Notification - Échec du transfert
Note: Lorsqu’un transfert d’appel échoue, l’état de l’appel est established
.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "established",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 500,
"subCode": 7700,
"message": "<message>"
}
}
}
]
}
Exemple 5 : transfert d’appel à partir d’un appel de groupe
Note: Pour transférer à partir d’un appel de groupe, le paramètre transféré est requis. Tous les autres paramètres sont identiques à ceux d’un transfert à partir d’un appel d’égal à égal. Un transfert consultatif à partir d’un appel de groupe ou un transfert vers RTC à partir d’un appel de groupe sont similaires aux exemples 1 à 4, avec le paramètre transféré spécifié.
Demande
L’exemple suivant illustre la demande.
POST https://graph.microsoft.com/beta/communications/calls/{id}/transfer
Content-Type: application/json
Content-Length: 430
{
"transferTarget": {
"endpointType": "default",
"identity": {
"user": {
"id": "550fae72-d251-43ec-868c-373732c2704f",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"displayName": "Heidi Steen"
}
},
},
"transferee": {
"identity": {
"user": {
"id": "751f6800-3180-414d-bd94-333364659951",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
},
"participantId": "909c6581-5130-43e9-88f3-fcb3582cde37"
},
"languageId": "languageId-value",
"region": "region-value"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Communications.Calls.Item.Transfer;
using Microsoft.Graph.Beta.Models;
var requestBody = new TransferPostRequestBody
{
TransferTarget = new InvitationParticipantInfo
{
EndpointType = EndpointType.Default,
Identity = new IdentitySet
{
User = new Identity
{
Id = "550fae72-d251-43ec-868c-373732c2704f",
DisplayName = "Heidi Steen",
AdditionalData = new Dictionary<string, object>
{
{
"tenantId" , "72f988bf-86f1-41af-91ab-2d7cd011db47"
},
},
},
},
},
Transferee = new ParticipantInfo
{
Identity = new IdentitySet
{
User = new Identity
{
Id = "751f6800-3180-414d-bd94-333364659951",
AdditionalData = new Dictionary<string, object>
{
{
"tenantId" , "72f988bf-86f1-41af-91ab-2d7cd011db47"
},
},
},
},
ParticipantId = "909c6581-5130-43e9-88f3-fcb3582cde37",
},
AdditionalData = new Dictionary<string, object>
{
{
"languageId" , "languageId-value"
},
{
"region" , "region-value"
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Communications.Calls["{call-id}"].Transfer.PostAsync(requestBody);
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc-beta communications calls transfer post --call-id {call-id} --body '{\
"transferTarget": {\
"endpointType": "default",\
"identity": {\
"user": {\
"id": "550fae72-d251-43ec-868c-373732c2704f",\
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",\
"displayName": "Heidi Steen"\
}\
},\
},\
"transferee": {\
"identity": {\
"user": {\
"id": "751f6800-3180-414d-bd94-333364659951",\
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47"\
}\
},\
"participantId": "909c6581-5130-43e9-88f3-fcb3582cde37"\
},\
"languageId": "languageId-value",\
"region": "region-value"\
}\
'
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphcommunications "github.com/microsoftgraph/msgraph-beta-sdk-go/communications"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes)
requestBody := graphcommunications.NewTransferPostRequestBody()
transferTarget := graphmodels.NewInvitationParticipantInfo()
endpointType := graphmodels.DEFAULT_ENDPOINTTYPE
transferTarget.SetEndpointType(&endpointType)
identity := graphmodels.NewIdentitySet()
user := graphmodels.NewIdentity()
id := "550fae72-d251-43ec-868c-373732c2704f"
user.SetId(&id)
displayName := "Heidi Steen"
user.SetDisplayName(&displayName)
additionalData := map[string]interface{}{
"tenantId" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
user.SetAdditionalData(additionalData)
identity.SetUser(user)
transferTarget.SetIdentity(identity)
requestBody.SetTransferTarget(transferTarget)
transferee := graphmodels.NewParticipantInfo()
identity := graphmodels.NewIdentitySet()
user := graphmodels.NewIdentity()
id := "751f6800-3180-414d-bd94-333364659951"
user.SetId(&id)
additionalData := map[string]interface{}{
"tenantId" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
user.SetAdditionalData(additionalData)
identity.SetUser(user)
transferee.SetIdentity(identity)
participantId := "909c6581-5130-43e9-88f3-fcb3582cde37"
transferee.SetParticipantId(&participantId)
requestBody.SetTransferee(transferee)
additionalData := map[string]interface{}{
"languageId" : "languageId-value",
"region" : "region-value",
}
requestBody.SetAdditionalData(additionalData)
graphClient.Communications().Calls().ByCallId("call-id").Transfer().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody transferPostRequestBody = new com.microsoft.graph.beta.communications.calls.item.transfer.TransferPostRequestBody();
InvitationParticipantInfo transferTarget = new InvitationParticipantInfo();
transferTarget.setEndpointType(EndpointType.Default);
IdentitySet identity = new IdentitySet();
Identity user = new Identity();
user.setId("550fae72-d251-43ec-868c-373732c2704f");
user.setDisplayName("Heidi Steen");
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("tenantId", "72f988bf-86f1-41af-91ab-2d7cd011db47");
user.setAdditionalData(additionalData);
identity.setUser(user);
transferTarget.setIdentity(identity);
transferPostRequestBody.setTransferTarget(transferTarget);
ParticipantInfo transferee = new ParticipantInfo();
IdentitySet identity1 = new IdentitySet();
Identity user1 = new Identity();
user1.setId("751f6800-3180-414d-bd94-333364659951");
HashMap<String, Object> additionalData1 = new HashMap<String, Object>();
additionalData1.put("tenantId", "72f988bf-86f1-41af-91ab-2d7cd011db47");
user1.setAdditionalData(additionalData1);
identity1.setUser(user1);
transferee.setIdentity(identity1);
transferee.setParticipantId("909c6581-5130-43e9-88f3-fcb3582cde37");
transferPostRequestBody.setTransferee(transferee);
HashMap<String, Object> additionalData2 = new HashMap<String, Object>();
additionalData2.put("languageId", "languageId-value");
additionalData2.put("region", "region-value");
transferPostRequestBody.setAdditionalData(additionalData2);
graphClient.communications().calls().byCallId("{call-id}").transfer().post(transferPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const transfer = {
transferTarget: {
endpointType: 'default',
identity: {
user: {
id: '550fae72-d251-43ec-868c-373732c2704f',
tenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47',
displayName: 'Heidi Steen'
}
},
},
transferee: {
identity: {
user: {
id: '751f6800-3180-414d-bd94-333364659951',
tenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47'
}
},
participantId: '909c6581-5130-43e9-88f3-fcb3582cde37'
},
languageId: 'languageId-value',
region: 'region-value'
};
await client.api('/communications/calls/{id}/transfer')
.version('beta')
.post(transfer);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\TransferPostRequestBody;
use Microsoft\Graph\Generated\Models\InvitationParticipantInfo;
use Microsoft\Graph\Generated\Models\IdentitySet;
use Microsoft\Graph\Generated\Models\Identity;
use Microsoft\Graph\Generated\Models\ParticipantInfo;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new TransferPostRequestBody();
$transferTarget = new InvitationParticipantInfo();
$transferTarget->setEndpointType(new EndpointType('default'));
$transferTargetIdentity = new IdentitySet();
$transferTargetIdentityUser = new Identity();
$transferTargetIdentityUser->setId('550fae72-d251-43ec-868c-373732c2704f');
$transferTargetIdentityUser->setDisplayName('Heidi Steen');
$additionalData = [
'tenantId' => '72f988bf-86f1-41af-91ab-2d7cd011db47',
];
$transferTargetIdentityUser->setAdditionalData($additionalData);
$transferTargetIdentity->setUser($transferTargetIdentityUser);
$transferTarget->setIdentity($transferTargetIdentity);
$requestBody->setTransferTarget($transferTarget);
$transferee = new ParticipantInfo();
$transfereeIdentity = new IdentitySet();
$transfereeIdentityUser = new Identity();
$transfereeIdentityUser->setId('751f6800-3180-414d-bd94-333364659951');
$additionalData = [
'tenantId' => '72f988bf-86f1-41af-91ab-2d7cd011db47',
];
$transfereeIdentityUser->setAdditionalData($additionalData);
$transfereeIdentity->setUser($transfereeIdentityUser);
$transferee->setIdentity($transfereeIdentity);
$transferee->setParticipantId('909c6581-5130-43e9-88f3-fcb3582cde37');
$requestBody->setTransferee($transferee);
$additionalData = [
'languageId' => 'languageId-value',
'region' => 'region-value',
];
$requestBody->setAdditionalData($additionalData);
$graphServiceClient->communications()->calls()->byCallId('call-id')->transfer()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.CloudCommunications
$params = @{
transferTarget = @{
endpointType = "default"
identity = @{
user = @{
id = "550fae72-d251-43ec-868c-373732c2704f"
tenantId = "72f988bf-86f1-41af-91ab-2d7cd011db47"
displayName = "Heidi Steen"
}
}
}
transferee = @{
identity = @{
user = @{
id = "751f6800-3180-414d-bd94-333364659951"
tenantId = "72f988bf-86f1-41af-91ab-2d7cd011db47"
}
}
participantId = "909c6581-5130-43e9-88f3-fcb3582cde37"
}
languageId = "languageId-value"
region = "region-value"
}
Move-MgBetaCommunicationCall -CallId $callId -BodyParameter $params
from msgraph import GraphServiceClient
from msgraph.generated.communications.calls.item.transfer.transfer_post_request_body import TransferPostRequestBody
from msgraph.generated.models.invitation_participant_info import InvitationParticipantInfo
from msgraph.generated.models.identity_set import IdentitySet
from msgraph.generated.models.identity import Identity
from msgraph.generated.models.participant_info import ParticipantInfo
graph_client = GraphServiceClient(credentials, scopes)
request_body = TransferPostRequestBody(
transfer_target = InvitationParticipantInfo(
endpoint_type = EndpointType.Default,
identity = IdentitySet(
user = Identity(
id = "550fae72-d251-43ec-868c-373732c2704f",
display_name = "Heidi Steen",
additional_data = {
"tenant_id" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
),
),
),
transferee = ParticipantInfo(
identity = IdentitySet(
user = Identity(
id = "751f6800-3180-414d-bd94-333364659951",
additional_data = {
"tenant_id" : "72f988bf-86f1-41af-91ab-2d7cd011db47",
}
),
),
participant_id = "909c6581-5130-43e9-88f3-fcb3582cde37",
),
additional_data = {
"language_id" : "languageId-value",
"region" : "region-value",
}
)
await graph_client.communications.calls.by_call_id('call-id').transfer.post(request_body)
Réponse
HTTP/1.1 202 Accepted
Notification - transfert
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferring"
}
}
]
}
Notification : transfert accepté
Note: Le transfert accepté peut se produire après ou avant l’inactivité audio de l’état du média.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "transferAccepted"
}
}
]
}
Notification - Transfert terminé
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "deleted",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "terminated",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 0,
"subcode": 7015,
"message": "GracefulTransferCompleted"
}
}
}
]
}
Notification - Échec du transfert
Note: Lorsqu’un transfert d’appel échoue, l’état de l’appel est established
.
POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.commsNotifications",
"value": [
{
"@odata.type": "#microsoft.graph.commsNotification",
"changeType": "updated",
"resourceUrl": "/communications/calls/341a0500-d4bf-4224-8b19-1581168d328b",
"resourceData": {
"@odata.type": "#microsoft.graph.call",
"state": "established",
"resultInfo": {
"@odata.type": "#microsoft.graph.resultInfo",
"code": 500,
"subCode": 7000,
"message": "<message>"
}
}
}
]
}