Delen via


Contextuele gegevens doorgeven tussen aanroepen

Met Call Automation kunnen ontwikkelaars aangepaste contextuele informatie doorgeven bij het routeren van oproepen. Ontwikkelaars kunnen metagegevens doorgeven over de aanroep, oproep of andere informatie die relevant is voor hun toepassing of bedrijfslogica. Hierdoor kunnen bedrijven oproepen via netwerken beheren en routeren zonder dat ze zich zorgen hoeven te maken over het verliezen van context.

Het doorgeven van context wordt ondersteund door aangepaste headers op te geven. Dit is een optionele lijst met sleutel-waardeparen die kunnen worden opgenomen als onderdeel van AddParticipant of Transfer acties. De context kan later worden opgehaald als onderdeel van de nettolading van de IncomingCall gebeurtenis.

Aangepaste oproepcontext wordt ook doorgestuurd naar het SIP-protocol, dit omvat zowel de aangepaste freeform-headers als de standaard UUI SIP-header (User-to-User Information). Bij het routeren van een inkomende oproep vanuit uw telefonienetwerk, wordt de gegevensset van uw SBC in de aangepaste headers en UUI op dezelfde manier opgenomen in de nettolading van de IncomingCall gebeurtenis.

Alle aangepaste contextgegevens zijn ondoorzichtig voor call automation- of SIP-protocollen en de inhoud ervan is niet gerelateerd aan alle basisfuncties.

Hieronder ziet u voorbeelden voor het gebruik van aangepaste contextheaders in Gespreksautomatisering.

Als vereiste raden we u aan deze artikelen te lezen om optimaal gebruik te maken van deze handleiding:

Voor alle codevoorbeelden client is CallAutomationClient-object dat kan worden gemaakt zoals weergegeven en callConnection het object Call Verbinding maken ion is verkregen uit answer of CreateCall-antwoord. U kunt deze ook verkrijgen via callbackgebeurtenissen die door uw toepassing zijn ontvangen.

Technische parameters

Call Automation ondersteunt maximaal 5 aangepaste SIP-headers en 1000 aangepaste VOIP-headers. Daarnaast kunnen ontwikkelaars een speciale user-to-user-header opnemen als onderdeel van de SIP-headerslijst.

De aangepaste SIP-headersleutel moet beginnen met een verplicht voorvoegsel 'X-MS-Custom-'. De maximale lengte van een SIP-headersleutel is 64 tekens, inclusief het X-MS-Custom-voorvoegsel. De SIP-headersleutel kan bestaan uit alfanumerieke tekens en enkele geselecteerde symbolen, waaronder ., , !%, *, , _, +, , ~. - De maximale lengte van de SIP-headerwaarde is 256 tekens. Dezelfde beperkingen gelden voor het configureren van de SIP-headers op uw SBC. De SIP-headerwaarde kan bestaan uit alfanumerieke tekens en enkele geselecteerde symbolen, waaronder =, , ;., !, , %, *, _, , , +, , . ~-

De maximale lengte van een VOIP-headersleutel is 64 tekens. Deze headers kunnen worden verzonden zonder voorvoegsel 'x-MS-Custom'. De maximale lengte van VOIP-headerwaarde is 1024 tekens.

Aangepaste context toevoegen bij het uitnodigen van een deelnemer

// Invite a communication services user and include one VOIP header
var addThisPerson = new CallInvite(new CommunicationUserIdentifier("<user_id>"));
addThisPerson.CustomCallingContext.AddVoip("myHeader", "myValue");
AddParticipantsResult result = await callConnection.AddParticipantAsync(addThisPerson);
// Invite a PSTN user and set UUI and custom SIP headers
var callerIdNumber = new PhoneNumberIdentifier("+16044561234"); 
var addThisPerson = new CallInvite(new PhoneNumberIdentifier("+16041234567"), callerIdNumber);

// Set custom UUI header. This key is sent on SIP protocol as User-to-User
addThisPerson.CustomCallingContext.AddSipUui("value");

// This provided key will be automatically prefixed with X-MS-Custom on SIP protocol, such as 'X-MS-Custom-{key}'
addThisPerson.CustomCallingContext.AddSipX("header1", "customSipHeaderValue1");
AddParticipantsResult result = await callConnection.AddParticipantAsync(addThisPerson);

Aangepaste context toevoegen tijdens het doorschakelen van oproepen

//Transfer to communication services user and include one VOIP header
var transferDestination = new CommunicationUserIdentifier("<user_id>"); 
var transferOption = new TransferToParticipantOptions(transferDestination);   
var transferOption = new TransferToParticipantOptions(transferDestination) {
    OperationContext = "<Your_context>",
    OperationCallbackUri = new Uri("<uri_endpoint>") // Sending event to a non-default endpoint.
};
transferOption.CustomCallingContext.AddVoip("customVoipHeader1", "customVoipHeaderValue1");
TransferCallToParticipantResult result = await callConnection.TransferCallToParticipantAsync(transferOption);

//Transfer a PSTN call to phone number and set UUI and custom SIP headers
var transferDestination = new PhoneNumberIdentifier("<target_phoneNumber>");
var transferOption = new TransferToParticipantOptions(transferDestination);
transferOption.CustomCallingContext.AddSipUui("uuivalue");
transferOption.CustomCallingContext.AddSipX("header1", "headerValue");
TransferCallToParticipantResult result = await callConnection.TransferCallToParticipantAsync(transferOption)

Aangepaste context lezen vanuit een gebeurtenis voor binnenkomende oproepen

AcsIncomingCallEventData incomingEvent = <incoming call event from Event Grid>;
// Retrieve incoming call custom context
AcsIncomingCallCustomContext callCustomContext = incomingEvent.CustomContext;

// Inspect dictionary with key/value pairs
var voipHeaders = callCustomContext.VoipHeaders;
var sipHeaders = callCustomContext.SipHeaders;

// Get SIP UUI header value
var userToUser = sipHeaders["user-To-User"]

// Proceed to answer or reject call as usual

Aanvullende bronnen