diff --git a/sdk/communication/Azure.Communication.CallAutomation/CHANGELOG.md b/sdk/communication/Azure.Communication.CallAutomation/CHANGELOG.md index 40a3e8a0d5624..9fc5e04166480 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/CHANGELOG.md +++ b/sdk/communication/Azure.Communication.CallAutomation/CHANGELOG.md @@ -1,14 +1,21 @@ # Release History -## 1.1.0-beta.1 (Unreleased) +## 1.0.0 (2023-06-14) -### Features Added - -### Breaking Changes - -### Bugs Fixed +### Features Added +- Outbound calls can now be created without providing a User Identifier. This value can be specified in the CallAutomationClientOption if desired. +- AnswerCall now accepts OperationContext. +- Calls can be answered by a specific communication identifier user. +- RemoveParticipant now sends success and failure events with the request. +- ParticipantsUpdated event now includes a sequence number to distinguish the ordering of events. +- CallConnectionProperties now includes CorrelationId. +- StartRecording now accepts ChannelAffinity. +- Added EventProcessor, an easy and powerful way to handle Call Automation events. See README for details. -### Other Changes +### Breaking Changes +- AddParticipant and RemoveParticipant now only accept one participant at a time. +- CallSource has been flattened out. +- CallInvite model replaces previous models for handling outbound calls. ## 1.0.0 (2023-06-14) diff --git a/sdk/communication/Azure.Communication.CallAutomation/README.md b/sdk/communication/Azure.Communication.CallAutomation/README.md index ac399b2469c72..ecb9714cabd88 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/README.md +++ b/sdk/communication/Azure.Communication.CallAutomation/README.md @@ -87,11 +87,11 @@ public IActionResult OnMidConnectionCallBackEvent([FromBody] CloudEvent[] events # cast the event into a ParticipantUpdated event and do something with it. Eg. iterate through the participants ParticipantsUpdated updatedEvent = (ParticipantsUpdated)ev; break; - case AddParticipantsSucceeded ev: - # logic to handle an AddParticipantsSucceeded event + case AddParticipantSucceeded ev: + # logic to handle an AddParticipantSucceeded event break; - case AddParticipantsFailed ev: - # logic to handle an AddParticipantsFailed event + case AddParticipantFailed ev: + # logic to handle an AddParticipantFailed event break; case CallTransferAccepted ev: # logic to handle CallTransferAccepted event @@ -155,10 +155,10 @@ CancellationToken token = cts.Token; try { // this will wait until CreateCall is completed or Timesout! - CreateCallEventResult eventResult = await createCallResult.WaitForEventAsync(token); + CreateCallEventResult eventResult = await createCallResult.WaitForEventProcessorAsync(token); // Once this is recieved, you know the call is now connected. - CallConnected returnedEvent = eventResult.SuccessEvent; + CallConnected returnedEvent = eventResult.SuccessResult; // ...Do more actions, such as Play or AddParticipant, since the call is established... } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Azure.Communication.CallAutomation.csproj b/sdk/communication/Azure.Communication.CallAutomation/src/Azure.Communication.CallAutomation.csproj index 3e6e9c1a8210b..f89d55b578cc0 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Azure.Communication.CallAutomation.csproj +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Azure.Communication.CallAutomation.csproj @@ -6,7 +6,7 @@ Microsoft Azure Communication Call Automation quickstart - https://learn.microsoft.com/azure/communication-services/quickstarts/voice-video-calling/callflows-for-customer-interactions?pivots=programming-language-csharp Azure Communication CallAutomation Service - 1.1.0-beta.1 + 1.0.0 Microsoft Azure Communication CallAutomation Service;Microsoft;Azure;Azure Communication Service;Azure Communication CallAutomation Service;Calling;Communication;$(PackageCommonTags) $(RequiredTargetFrameworks) diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs index 462fcb6864628..58a9203c5cf7f 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs @@ -34,6 +34,7 @@ public class CallAutomationClient /// This can be provided by providing CallAutomationClientOption during construction of CallAutomationClient. /// If left blank, service will create one each request. /// + /// public CommunicationUserIdentifier Source { get; } #region public constructors @@ -64,31 +65,6 @@ public CallAutomationClient(Uri endpoint, TokenCredential credential, CallAutoma Argument.CheckNotNull(credential, nameof(credential)), options ?? new CallAutomationClientOptions()) { } - - /// Initializes a new instance of with custom PMA endpoint. - /// Endpoint for PMA - /// Connection string acquired from the Azure Communication Services resource. - /// Client option exposing , , , etc. - public CallAutomationClient(Uri pmaEndpoint, string connectionString, CallAutomationClientOptions options = default) - : this( - pmaEndpoint, - options ?? new CallAutomationClientOptions(), - ConnectionString.Parse(connectionString)) - { } - - /// Initializes a new instance of . - /// Endpoint for PMA - /// The URI of the Azure Communication Services resource. - /// The TokenCredential used to authenticate requests, such as DefaultAzureCredential. - /// Client option exposing , , , etc. - public CallAutomationClient(Uri pmaEndpoint, Uri acsEndpoint, TokenCredential credential, CallAutomationClientOptions options = default) - : this( - pmaEndpoint, - acsEndpoint, - options ?? new CallAutomationClientOptions(), - credential - ) - { } #endregion #region private constructors @@ -120,14 +96,6 @@ private CallAutomationClient(Uri endpoint, HttpPipeline httpPipeline, CallAutoma EventProcessor = new CallAutomationEventProcessor(); Source = options.Source; } - - private CallAutomationClient( - Uri pmaEndpoint, - Uri acsEndpoint, - CallAutomationClientOptions options, - TokenCredential tokenCredential) - : this(pmaEndpoint, options.CustomBuildHttpPipeline(acsEndpoint, tokenCredential), options) - { } #endregion /// Initializes a new instance of for mocking. @@ -245,8 +213,7 @@ private AnswerCallRequestInternal CreateAnswerCallRequest(AnswerCallOptions opti { request.AzureCognitiveServicesEndpointUrl = options.AzureCognitiveServicesEndpointUri.AbsoluteUri; } - request.MediaStreamingConfiguration = CreateMediaStreamingOptionsInternal(options.MediaStreamingOptions); - request.AnsweredByIdentifier = Source == null ? null : new CommunicationUserIdentifierModel(Source.Id); + request.AnsweredBy = Source == null ? null : new CommunicationUserIdentifierModel(Source.Id); request.OperationContext = options.OperationContext; return request; @@ -282,9 +249,6 @@ public virtual async Task RedirectCallAsync(RedirectCallOptions option RedirectCallRequestInternal request = new RedirectCallRequestInternal(options.IncomingCallContext, CommunicationIdentifierSerializer.Serialize(options.CallInvite.Target)); - request.CustomContext = new CustomContextInternal( - options.CallInvite.CustomContext.SipHeaders == null ? new ChangeTrackingDictionary() : options.CallInvite.CustomContext.SipHeaders, - options.CallInvite.CustomContext.VoipHeaders == null ? new ChangeTrackingDictionary() : options.CallInvite.CustomContext.VoipHeaders); return await AzureCommunicationServicesRestClient.RedirectCallAsync(request, cancellationToken).ConfigureAwait(false); } @@ -325,10 +289,6 @@ public virtual Response RedirectCall(RedirectCallOptions options, CancellationTo RedirectCallRequestInternal request = new RedirectCallRequestInternal(options.IncomingCallContext, CommunicationIdentifierSerializer.Serialize(options.CallInvite.Target)); - request.CustomContext = new CustomContextInternal( - options.CallInvite.CustomContext.SipHeaders == null ? new ChangeTrackingDictionary() : options.CallInvite.CustomContext.SipHeaders, - options.CallInvite.CustomContext.VoipHeaders == null ? new ChangeTrackingDictionary() : options.CallInvite.CustomContext.VoipHeaders); - return AzureCommunicationServicesRestClient.RedirectCall(request, cancellationToken); } catch (Exception ex) @@ -610,20 +570,15 @@ private CreateCallRequestInternal CreateCallRequest(CreateCallOptions options) ? null : new PhoneNumberIdentifierModel(options?.CallInvite?.SourceCallerIdNumber?.PhoneNumber), SourceDisplayName = options?.CallInvite?.SourceDisplayName, - SourceIdentity = Source == null ? null : new CommunicationUserIdentifierModel(Source.Id), + Source = Source == null ? null : new CommunicationUserIdentifierModel(Source.Id), }; - request.CustomContext = new CustomContextInternal( - options.CallInvite.CustomContext.SipHeaders == null ? new ChangeTrackingDictionary() : options.CallInvite.CustomContext.SipHeaders, - options.CallInvite.CustomContext.VoipHeaders == null ? new ChangeTrackingDictionary() : options.CallInvite.CustomContext.VoipHeaders); - // Add custom cognitive service domain name if (options.AzureCognitiveServicesEndpointUri != null) { request.AzureCognitiveServicesEndpointUrl = options.AzureCognitiveServicesEndpointUri.AbsoluteUri; } request.OperationContext = options.OperationContext; - request.MediaStreamingConfiguration = CreateMediaStreamingOptionsInternal(options.MediaStreamingOptions); return request; } @@ -638,21 +593,15 @@ private CreateCallRequestInternal CreateCallRequest(CreateGroupCallOptions optio ? null : new PhoneNumberIdentifierModel(options?.SourceCallerIdNumber?.PhoneNumber), SourceDisplayName = options?.SourceDisplayName, - SourceIdentity = Source == null ? null : new CommunicationUserIdentifierModel(Source.Id), + Source = Source == null ? null : new CommunicationUserIdentifierModel(Source.Id), }; - request.CustomContext = new CustomContextInternal( - options.CustomContext.SipHeaders == null ? new ChangeTrackingDictionary() : options.CustomContext.SipHeaders, - options.CustomContext.VoipHeaders == null ? new ChangeTrackingDictionary() : options.CustomContext.VoipHeaders); - // Add custom cognitive service domain name if (options.AzureCognitiveServicesEndpointUri != null) { request.AzureCognitiveServicesEndpointUrl = options.AzureCognitiveServicesEndpointUri.AbsoluteUri; } request.OperationContext = options.OperationContext; - request.MediaStreamingConfiguration = CreateMediaStreamingOptionsInternal(options.MediaStreamingOptions); - return request; } @@ -668,14 +617,6 @@ private static bool IsValidHttpsUri(Uri uri) { return Uri.IsWellFormedUriString(uriString, UriKind.Absolute) && new Uri(uriString).Scheme == Uri.UriSchemeHttps; } - private static MediaStreamingOptionsInternal CreateMediaStreamingOptionsInternal(MediaStreamingOptions configuration) - { - return configuration == default - ? default - : new MediaStreamingOptionsInternal(configuration.TransportUri.AbsoluteUri, configuration.MediaStreamingTransport, configuration.MediaStreamingContent, - configuration.MediaStreamingAudioChannel); - } - /// Initializes a new instance of CallConnection. . /// The call connection id for the GetCallConnection instance. public virtual CallConnection GetCallConnection(string callConnectionId) diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClientOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClientOptions.cs index cdb8687367e21..17645318596f2 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClientOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClientOptions.cs @@ -16,7 +16,7 @@ public class CallAutomationClientOptions : ClientOptions /// /// The latest version of the CallAutomation service. /// - internal const ServiceVersion LatestVersion = ServiceVersion.V2023_01_15_Preview; + internal const ServiceVersion LatestVersion = ServiceVersion.V2023_03_06; internal string ApiVersion { get; } @@ -32,7 +32,7 @@ public CallAutomationClientOptions(ServiceVersion version = LatestVersion) { ApiVersion = version switch { - ServiceVersion.V2023_01_15_Preview => "2023-01-15-preview", + ServiceVersion.V2023_03_06 => "2023-03-06", _ => throw new ArgumentOutOfRangeException(nameof(version)), }; } @@ -43,10 +43,10 @@ public CallAutomationClientOptions(ServiceVersion version = LatestVersion) public enum ServiceVersion { /// - /// The Beta of the CallAutomation service. + /// The GA1 of the CallAutomation service. /// #pragma warning disable CA1707 // Identifiers should not contain underscores - V2023_01_15_Preview = 1 + V2023_03_06 = 1 #pragma warning restore CA1707 // Identifiers should not contain underscores } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationEventProcessor/EventResult/SendDtmfEventResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationEventProcessor/EventResult/SendDtmfEventResult.cs deleted file mode 100644 index aae51d7e1d704..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationEventProcessor/EventResult/SendDtmfEventResult.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Azure.Communication.CallAutomation -{ - /// is returned from WaitForEvent of . - public class SendDtmfEventResult - { - /// - /// Indicates whether the returned event is considered successful or not. - /// - public bool IsSuccess { get; internal set; } - - /// - /// event will be returned once the dtmf tones have been sent successfully. - /// - public SendDtmfCompleted SuccessResult { get; } - - /// - /// event will be returned if send dtmf tones completed unsuccessfully. - /// - public SendDtmfFailed FailureResult { get; } - - internal SendDtmfEventResult(bool isSuccess, SendDtmfCompleted successResult, SendDtmfFailed failureResult) - { - IsSuccess = isSuccess; - SuccessResult = successResult; - FailureResult = failureResult; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs index e07eb37e97a39..a9facf1b86174 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs @@ -278,18 +278,8 @@ private static TransferToParticipantRequestInternal CreateTransferToParticipantR { TransferToParticipantRequestInternal request = new TransferToParticipantRequestInternal(CommunicationIdentifierSerializer.Serialize(options.Target)); - request.CustomContext = new CustomContextInternal( - options.CustomContext.SipHeaders == null ? new ChangeTrackingDictionary() : options.CustomContext.SipHeaders, - options.CustomContext.VoipHeaders == null ? new ChangeTrackingDictionary() : options.CustomContext.VoipHeaders); - request.OperationContext = options.OperationContext == default ? Guid.NewGuid().ToString() : options.OperationContext; - if (options.Transferee != null) - { - request.Transferee = CommunicationIdentifierSerializer.Serialize(options.Transferee); - } - - request.CallbackUri = options.CallbackUri?.AbsoluteUri; return request; } @@ -392,11 +382,6 @@ private static AddParticipantRequestInternal CreateAddParticipantRequest(AddPart }; request.InvitationTimeoutInSeconds = options.InvitationTimeoutInSeconds; - request.CallbackUri = options.CallbackUri?.AbsoluteUri; - - request.CustomContext = new CustomContextInternal( - options.ParticipantToAdd.CustomContext.SipHeaders == null ? new ChangeTrackingDictionary() : options.ParticipantToAdd.CustomContext.SipHeaders, - options.ParticipantToAdd.CustomContext.VoipHeaders == null ? new ChangeTrackingDictionary() : options.ParticipantToAdd.CustomContext.VoipHeaders); return request; } @@ -470,7 +455,7 @@ public virtual async Task>> GetParticipa cancellationToken: cancellationToken ).ConfigureAwait(false); - IReadOnlyList result = response.Value.Values.Select(t => new CallParticipant(t)).ToList(); + IReadOnlyList result = response.Value.Value.Select(t => new CallParticipant(t)).ToList(); return Response.FromValue(result, response.GetRawResponse()); } @@ -496,7 +481,7 @@ public virtual Response> GetParticipants(Cancella cancellationToken: cancellationToken ); - IReadOnlyList result = response.Value.Values.Select(t => new CallParticipant(t)).ToList(); + IReadOnlyList result = response.Value.Value.Select(t => new CallParticipant(t)).ToList(); return Response.FromValue(result, response.GetRawResponse()); } @@ -544,7 +529,6 @@ public virtual async Task> RemoveParticipantAs request.OperationContext = options.OperationContext == default ? Guid.NewGuid().ToString() : options.OperationContext; - request.CallbackUri = options.CallbackUri?.AbsoluteUri; var response = await RestClient.RemoveParticipantAsync(CallConnectionId, request, cancellationToken).ConfigureAwait(false); var result = new RemoveParticipantResult(response); @@ -624,22 +608,6 @@ public virtual CallMedia GetCallMedia() } } - /// Initializes a new instance of CallDialog. - public virtual CallDialog GetCallDialog() - { - using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallConnection)}.{nameof(GetCallDialog)}"); - scope.Start(); - try - { - return new CallDialog(CallConnectionId, CallDialogRestClient, _clientDiagnostics, EventProcessor); - } - catch (Exception ex) - { - scope.Failed(ex); - throw; - } - } - /// /// Mute participant from the call. /// Only Acs Users are currently supported. @@ -791,54 +759,5 @@ public async virtual Task> MuteParticipantsAsyn throw; } } - - /// - /// Unmute participants on the call. - /// Only Acs Users are currently supported. - /// - /// Participant to unmute. - /// The Operation Context. - /// The cancellation token. - /// The server returned an error. See for details returned from the server. - /// - public async virtual Task> UnmuteParticipantsAsync(CommunicationIdentifier targetParticipant, string operationContext = default, CancellationToken cancellationToken = default) - { - var options = new UnmuteParticipantsOptions(new List { targetParticipant }) - { - OperationContext = operationContext - }; - - return await UnmuteParticipantsAsync(options, cancellationToken).ConfigureAwait(false); - } - - /// - /// Unmute participants from the call. - /// Only Acs Users are currently supported. - /// - /// Options for the UnmuteParticipant operation. - /// The cancellation token. - /// is null. - /// OperationContext is too long. - /// The server returned an error. See for details returned from the server. - /// - public async virtual Task> UnmuteParticipantsAsync(UnmuteParticipantsOptions options, CancellationToken cancellationToken = default) - { - using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallConnection)}.{nameof(UnmuteParticipants)}"); - scope.Start(); - try - { - UnmuteParticipantsRequestInternal request = new UnmuteParticipantsRequestInternal( - options.TargetParticipants.Select(participant => CommunicationIdentifierSerializer.Serialize(participant)).ToList()); - - request.OperationContext = options.OperationContext; - - return await RestClient.UnmuteAsync(CallConnectionId, request, cancellationToken).ConfigureAwait(false); - } - catch (Exception ex) - { - scope.Failed(ex); - throw; - } - } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallMedia.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallMedia.cs index 52ccc63ba0873..46fd720d27429 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallMedia.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallMedia.cs @@ -82,7 +82,7 @@ public virtual async Task> PlayAsync(PlaySource playSource, scope.Start(); try { - var playOptions = new PlayOptions(playSource, playTo) + var playOptions = new PlayOptions(new List { playSource }, playTo) { Loop = false, OperationContext = null @@ -145,7 +145,7 @@ public virtual Response Play(PlaySource playSource, IEnumerable { playSource }, playTo) { Loop = false, OperationContext = null @@ -169,30 +169,22 @@ public virtual Response Play(PlaySource playSource, IEnumerable TranslatePlaySourceToInternal(t)).ToList()); - if (sourceInternal != null) - { - PlayRequestInternal request = new PlayRequestInternal(sourceInternal); - request.PlayTo = options.PlayTo.Select(t => CommunicationIdentifierSerializer.Serialize(t)).ToList(); - - if (options != null) - { - request.PlayOptions = new PlayOptionsInternal(options.Loop); - request.OperationContext = options.OperationContext; - } - - if (request.OperationContext == default) - { - request.OperationContext = Guid.NewGuid().ToString(); - } + request.PlayTo = options.PlayTo.Select(t => CommunicationIdentifierSerializer.Serialize(t)).ToList(); - request.CallbackUri = options.CallbackUri?.AbsoluteUri; + if (options != null) + { + request.PlayOptions = new PlayOptionsInternal(options.Loop); + request.OperationContext = options.OperationContext; + } - return request; + if (request.OperationContext == default) + { + request.OperationContext = Guid.NewGuid().ToString(); } - throw new NotSupportedException(options.PlaySource.GetType().Name); + return request; } /// @@ -207,7 +199,7 @@ public virtual async Task> PlayToAllAsync(PlayToAllOptions scope.Start(); try { - PlayOptions playOptions = new PlayOptions(options.PlaySource, Enumerable.Empty()); + PlayOptions playOptions = new PlayOptions(options.PlaySources, Enumerable.Empty()); playOptions.OperationContext = options.OperationContext; playOptions.Loop = options.Loop; playOptions.CallbackUri = options.CallbackUri; @@ -253,7 +245,7 @@ public virtual Response PlayToAll(PlayToAllOptions options, Cancella scope.Start(); try { - PlayOptions playOptions = new PlayOptions(options.PlaySource, Enumerable.Empty()); + PlayOptions playOptions = new PlayOptions(options.PlaySources, Enumerable.Empty()); playOptions.OperationContext = options.OperationContext; playOptions.Loop = options.Loop; playOptions.CallbackUri = options.CallbackUri; @@ -272,7 +264,7 @@ public virtual Response PlayToAll(PlayToAllOptions options, Cancella /// /// /// Returns , which can be used to wait for Play's related events. - public virtual Response PlayToAll(PlaySource playSource, CancellationToken cancellationToken = default) + public virtual Response PlayToAll(PlaySource playSource, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallMedia)}.{nameof(PlayToAll)}"); scope.Start(); @@ -419,7 +411,6 @@ private static RecognizeRequestInternal CreateRecognizeRequest(CallMediaRecogniz request.PlayPrompt = TranslatePlaySourceToInternal(recognizeDtmfOptions.Prompt); request.InterruptCallMediaOperation = recognizeOptions.InterruptCallMediaOperation; request.OperationContext = recognizeOptions.OperationContext == default ? Guid.NewGuid().ToString() : recognizeOptions.OperationContext; - request.CallbackUri = recognizeOptions.CallbackUri?.AbsoluteUri; return request; } @@ -523,7 +514,6 @@ private static RecognizeRequestInternal CreateRecognizeRequest(CallMediaRecogniz request.PlayPrompt = TranslatePlaySourceToInternal(recognizeSpeechOrDtmfOptions.Prompt); request.InterruptCallMediaOperation = recognizeOptions.InterruptCallMediaOperation; request.OperationContext = recognizeOptions.OperationContext == default ? Guid.NewGuid().ToString() : recognizeOptions.OperationContext; - request.CallbackUri = recognizeOptions.CallbackUri?.AbsoluteUri; return request; } @@ -540,8 +530,8 @@ private static PlaySourceInternal TranslatePlaySourceToInternal(PlaySource playS if (playSource != null && playSource is FileSource fileSource) { sourceInternal = new PlaySourceInternal(PlaySourceTypeInternal.File); - sourceInternal.FileSource = new FileSourceInternal(fileSource.FileUri.AbsoluteUri); - sourceInternal.PlaySourceId = fileSource.PlaySourceCacheId; + sourceInternal.File = new FileSourceInternal(fileSource.FileUri.AbsoluteUri); + sourceInternal.PlaySourceCacheId = fileSource.PlaySourceCacheId; return sourceInternal; } else if (playSource != null && playSource is TextSource textSource) @@ -552,7 +542,7 @@ private static PlaySourceInternal TranslatePlaySourceToInternal(PlaySource playS sourceInternal.TextSource.VoiceGender = textSource.VoiceGender ?? GenderType.Male; sourceInternal.TextSource.VoiceName = textSource.VoiceName ?? null; sourceInternal.TextSource.CustomVoiceEndpointId = textSource.CustomVoiceEndpointId ?? null; - sourceInternal.PlaySourceId = textSource.PlaySourceCacheId; + sourceInternal.PlaySourceCacheId = textSource.PlaySourceCacheId; return sourceInternal; } else if (playSource != null && playSource is SsmlSource ssmlSource) diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallRecording.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallRecording.cs index b75ace67fe1a2..b1b1d1b71ad01 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallRecording.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallRecording.cs @@ -85,11 +85,6 @@ public virtual Response Start(StartRecordingOptions option } } - if (options.ExternalStorage is not null) - { - request.ExternalStorage = TranslateExternalStorageToInternal(options.ExternalStorage); - } - return _callRecordingRestClient.StartRecording(request, cancellationToken: cancellationToken); } catch (Exception ex) @@ -142,11 +137,6 @@ public virtual async Task> StartAsync(StartRecord } } - if (options.ExternalStorage is not null) - { - request.ExternalStorage = TranslateExternalStorageToInternal(options.ExternalStorage); - } - return await _callRecordingRestClient.StartRecordingAsync(request, cancellationToken: cancellationToken).ConfigureAwait(false); } catch (Exception ex) @@ -621,24 +611,5 @@ public virtual async Task DeleteAsync(Uri recordingLocation, Cancellat throw; } } - - #region private functions - - private static ExternalStorageInternal TranslateExternalStorageToInternal(ExternalStorage externalStorage) - { - ExternalStorageInternal result = null; - - if (externalStorage is BlobStorage blobStorage) - { - result = new ExternalStorageInternal(blobStorage.StorageType) - { - BlobStorage = new BlobStorageInternal(blobStorage.ContainerUri.AbsoluteUri), - }; - } - - return result; - } - - #endregion private functions } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CustomBuildHttpPieline.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CustomBuildHttpPieline.cs deleted file mode 100644 index 47ed002268d9f..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CustomBuildHttpPieline.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using Azure.Core; -using Azure.Core.Pipeline; - -namespace Azure.Communication.Pipeline -{ - internal static class CustomBuildHttpPieline - { - public static HttpPipeline CustomBuildHttpPipeline(this ClientOptions options, ConnectionString connectionString) - { - string stringSign = new Uri(connectionString.GetRequired("endpoint")).Host; - - var authPolicy = new CustomHMACAuthenticationPolicy(new AzureKeyCredential(connectionString.GetRequired("accesskey")), stringSign); - HttpPipelineOptions httpPipelineOptions = new(options) { PerRetryPolicies = { authPolicy } }; - HttpPipelineTransportOptions httpPipelineTransportOptions = new() { IsClientRedirectEnabled = true }; - return HttpPipelineBuilder.Build(httpPipelineOptions, httpPipelineTransportOptions); - } - - public static HttpPipeline CustomBuildHttpPipeline(this ClientOptions options, Uri acsEndpoint, TokenCredential tokenCredential) - { - string stringSign = acsEndpoint.Host; - - var authPolicy = new CustomBearerTokenAuthenticationPolicy(tokenCredential, "https://communication.azure.com//.default", stringSign); - return HttpPipelineBuilder.Build(options, authPolicy); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CustomHMACAuthenticationPolicy.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CustomHMACAuthenticationPolicy.cs deleted file mode 100644 index 50cd937ad59d8..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CustomHMACAuthenticationPolicy.cs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; -using Azure.Core.Pipeline; -using System; -using System.Globalization; -using System.IO; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; - -namespace Azure.Communication.Pipeline -{ - internal class CustomHMACAuthenticationPolicy : HttpPipelinePolicy - { - private readonly string DATE_HEADER_NAME = "x-ms-date"; - private readonly AzureKeyCredential _keyCredential; - private readonly string _acsEndpoint; - - public CustomHMACAuthenticationPolicy(AzureKeyCredential keyCredential, string acsEndpoint) - { - _keyCredential = keyCredential; - _acsEndpoint = acsEndpoint; - } - - public override void Process(HttpMessage message, ReadOnlyMemory pipeline) - { - var contentHash = CreateContentHash(message); - AddHeaders(message, contentHash); - ProcessNext(message, pipeline); - } - - public override async ValueTask ProcessAsync(HttpMessage message, ReadOnlyMemory pipeline) - { - var contentHash = await CreateContentHashAsync(message).ConfigureAwait(false); - AddHeaders(message, contentHash); - await ProcessNextAsync(message, pipeline).ConfigureAwait(false); - } - - private static string CreateContentHash(HttpMessage message) - { - var alg = SHA256.Create(); - - using (var memoryStream = new MemoryStream()) - using (var contentHashStream = new CryptoStream(memoryStream, alg, CryptoStreamMode.Write)) - { - message.Request.Content?.WriteTo(contentHashStream, message.CancellationToken); - } - - return Convert.ToBase64String(alg.Hash!); - } - - private static async ValueTask CreateContentHashAsync(HttpMessage message) - { - var alg = SHA256.Create(); - - using (var memoryStream = new MemoryStream()) - using (var contentHashStream = new CryptoStream(memoryStream, alg, CryptoStreamMode.Write)) - { - if (message.Request.Content != null) - await message.Request.Content.WriteToAsync(contentHashStream, message.CancellationToken).ConfigureAwait(false); - } - - return Convert.ToBase64String(alg.Hash!); - } - - private void AddHeaders(HttpMessage message, string contentHash) - { - var utcNowString = DateTimeOffset.UtcNow.ToString("r", CultureInfo.InvariantCulture); - string authorization; - - message.TryGetProperty("uriToSignRequestWith", out var uriToSignWith); - if (uriToSignWith != null && uriToSignWith.GetType() == typeof(Uri)) - { - authorization = GetAuthorizationHeader(message.Request.Method, (Uri)uriToSignWith, contentHash, utcNowString); - } - else - { - authorization = GetAuthorizationHeader(message.Request.Method, message.Request.Uri.ToUri(), contentHash, utcNowString); - } - - message.Request.Headers.SetValue("X-FORWARDED-HOST", _acsEndpoint); - message.Request.Headers.SetValue("x-ms-content-sha256", contentHash); - message.Request.Headers.SetValue(DATE_HEADER_NAME, utcNowString); - message.Request.Headers.SetValue(HttpHeader.Names.Authorization, authorization); - } - - private string GetAuthorizationHeader(RequestMethod method, Uri uri, string contentHash, string date) - { - var host = uri.Authority; - var pathAndQuery = uri.PathAndQuery; - - var stringToSign = $"{method.Method}\n{pathAndQuery}\n{date};{_acsEndpoint};{contentHash}"; - var signature = ComputeHMAC(stringToSign); - - string signedHeaders = $"{DATE_HEADER_NAME};host;x-ms-content-sha256"; - return $"HMAC-SHA256 SignedHeaders={signedHeaders}&Signature={signature}"; - } - - private string ComputeHMAC(string value) - { - using var hmac = new HMACSHA256(Convert.FromBase64String(_keyCredential.Key)); - var hash = hmac.ComputeHash(Encoding.ASCII.GetBytes(value)); - return Convert.ToBase64String(hash); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/AzureCommunicationServicesRestClient.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/AzureCommunicationServicesRestClient.cs index 838300cdcc4f0..02e4a66c74f35 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/AzureCommunicationServicesRestClient.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/AzureCommunicationServicesRestClient.cs @@ -30,7 +30,7 @@ internal partial class AzureCommunicationServicesRestClient /// The endpoint of the Azure Communication resource. /// Api Version. /// , , or is null. - public AzureCommunicationServicesRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-01-15-preview") + public AzureCommunicationServicesRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-03-06") { ClientDiagnostics = clientDiagnostics ?? throw new ArgumentNullException(nameof(clientDiagnostics)); _pipeline = pipeline ?? throw new ArgumentNullException(nameof(pipeline)); @@ -38,7 +38,7 @@ public AzureCommunicationServicesRestClient(ClientDiagnostics clientDiagnostics, _apiVersion = apiVersion ?? throw new ArgumentNullException(nameof(apiVersion)); } - internal HttpMessage CreateCreateCallRequest(CreateCallRequestInternal createCallRequest) + internal HttpMessage CreateCreateCallRequest(CreateCallRequestInternal createCallRequest, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -48,8 +48,14 @@ internal HttpMessage CreateCreateCallRequest(CreateCallRequestInternal createCal uri.AppendPath("/calling/callConnections", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -60,16 +66,18 @@ internal HttpMessage CreateCreateCallRequest(CreateCallRequestInternal createCal /// Create an outbound call. /// The create call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public async Task> CreateCallAsync(CreateCallRequestInternal createCallRequest, CancellationToken cancellationToken = default) + public async Task> CreateCallAsync(CreateCallRequestInternal createCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (createCallRequest == null) { throw new ArgumentNullException(nameof(createCallRequest)); } - using var message = CreateCreateCallRequest(createCallRequest); + using var message = CreateCreateCallRequest(createCallRequest, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -87,16 +95,18 @@ public async Task> CreateCallAsync(Cr /// Create an outbound call. /// The create call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public Response CreateCall(CreateCallRequestInternal createCallRequest, CancellationToken cancellationToken = default) + public Response CreateCall(CreateCallRequestInternal createCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (createCallRequest == null) { throw new ArgumentNullException(nameof(createCallRequest)); } - using var message = CreateCreateCallRequest(createCallRequest); + using var message = CreateCreateCallRequest(createCallRequest, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -112,7 +122,7 @@ public Response CreateCall(CreateCallRequestIn } } - internal HttpMessage CreateAnswerCallRequest(AnswerCallRequestInternal answerCallRequest) + internal HttpMessage CreateAnswerCallRequest(AnswerCallRequestInternal answerCallRequest, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -122,8 +132,14 @@ internal HttpMessage CreateAnswerCallRequest(AnswerCallRequestInternal answerCal uri.AppendPath("/calling/callConnections:answer", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -134,17 +150,19 @@ internal HttpMessage CreateAnswerCallRequest(AnswerCallRequestInternal answerCal /// Answer a Call. /// The answer call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. /// Answer a call using the IncomingCallContext from Event Grid. - public async Task> AnswerCallAsync(AnswerCallRequestInternal answerCallRequest, CancellationToken cancellationToken = default) + public async Task> AnswerCallAsync(AnswerCallRequestInternal answerCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (answerCallRequest == null) { throw new ArgumentNullException(nameof(answerCallRequest)); } - using var message = CreateAnswerCallRequest(answerCallRequest); + using var message = CreateAnswerCallRequest(answerCallRequest, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -162,17 +180,19 @@ public async Task> AnswerCallAsync(An /// Answer a Call. /// The answer call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. /// Answer a call using the IncomingCallContext from Event Grid. - public Response AnswerCall(AnswerCallRequestInternal answerCallRequest, CancellationToken cancellationToken = default) + public Response AnswerCall(AnswerCallRequestInternal answerCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (answerCallRequest == null) { throw new ArgumentNullException(nameof(answerCallRequest)); } - using var message = CreateAnswerCallRequest(answerCallRequest); + using var message = CreateAnswerCallRequest(answerCallRequest, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -188,7 +208,7 @@ public Response AnswerCall(AnswerCallRequestIn } } - internal HttpMessage CreateRedirectCallRequest(RedirectCallRequestInternal redirectCallRequest) + internal HttpMessage CreateRedirectCallRequest(RedirectCallRequestInternal redirectCallRequest, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -198,8 +218,14 @@ internal HttpMessage CreateRedirectCallRequest(RedirectCallRequestInternal redir uri.AppendPath("/calling/callConnections:redirect", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -210,16 +236,18 @@ internal HttpMessage CreateRedirectCallRequest(RedirectCallRequestInternal redir /// Redirect a call. /// The redirect call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public async Task RedirectCallAsync(RedirectCallRequestInternal redirectCallRequest, CancellationToken cancellationToken = default) + public async Task RedirectCallAsync(RedirectCallRequestInternal redirectCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (redirectCallRequest == null) { throw new ArgumentNullException(nameof(redirectCallRequest)); } - using var message = CreateRedirectCallRequest(redirectCallRequest); + using var message = CreateRedirectCallRequest(redirectCallRequest, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -232,16 +260,18 @@ public async Task RedirectCallAsync(RedirectCallRequestInternal redire /// Redirect a call. /// The redirect call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public Response RedirectCall(RedirectCallRequestInternal redirectCallRequest, CancellationToken cancellationToken = default) + public Response RedirectCall(RedirectCallRequestInternal redirectCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (redirectCallRequest == null) { throw new ArgumentNullException(nameof(redirectCallRequest)); } - using var message = CreateRedirectCallRequest(redirectCallRequest); + using var message = CreateRedirectCallRequest(redirectCallRequest, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -252,7 +282,7 @@ public Response RedirectCall(RedirectCallRequestInternal redirectCallRequest, Ca } } - internal HttpMessage CreateRejectCallRequest(RejectCallRequestInternal rejectCallRequest) + internal HttpMessage CreateRejectCallRequest(RejectCallRequestInternal rejectCallRequest, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -262,8 +292,14 @@ internal HttpMessage CreateRejectCallRequest(RejectCallRequestInternal rejectCal uri.AppendPath("/calling/callConnections:reject", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -274,16 +310,18 @@ internal HttpMessage CreateRejectCallRequest(RejectCallRequestInternal rejectCal /// Reject the call. /// The reject call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public async Task RejectCallAsync(RejectCallRequestInternal rejectCallRequest, CancellationToken cancellationToken = default) + public async Task RejectCallAsync(RejectCallRequestInternal rejectCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (rejectCallRequest == null) { throw new ArgumentNullException(nameof(rejectCallRequest)); } - using var message = CreateRejectCallRequest(rejectCallRequest); + using var message = CreateRejectCallRequest(rejectCallRequest, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -296,16 +334,18 @@ public async Task RejectCallAsync(RejectCallRequestInternal rejectCall /// Reject the call. /// The reject call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public Response RejectCall(RejectCallRequestInternal rejectCallRequest, CancellationToken cancellationToken = default) + public Response RejectCall(RejectCallRequestInternal rejectCallRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (rejectCallRequest == null) { throw new ArgumentNullException(nameof(rejectCallRequest)); } - using var message = CreateRejectCallRequest(rejectCallRequest); + using var message = CreateRejectCallRequest(rejectCallRequest, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallConnectionRestClient.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallConnectionRestClient.cs index e6a8096690734..7d3a95b6db026 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallConnectionRestClient.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallConnectionRestClient.cs @@ -30,7 +30,7 @@ internal partial class CallConnectionRestClient /// The endpoint of the Azure Communication resource. /// Api Version. /// , , or is null. - public CallConnectionRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-01-15-preview") + public CallConnectionRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-03-06") { ClientDiagnostics = clientDiagnostics ?? throw new ArgumentNullException(nameof(clientDiagnostics)); _pipeline = pipeline ?? throw new ArgumentNullException(nameof(pipeline)); @@ -53,7 +53,7 @@ internal HttpMessage CreateGetCallRequest(string callConnectionId) return message; } - /// Get call connection. + /// Get the detail properties of an ongoing call. /// The call connection id. /// The cancellation token to use. /// is null. @@ -80,7 +80,7 @@ public async Task> GetCallAsync(strin } } - /// Get call connection. + /// Get the detail properties of an ongoing call. /// The call connection id. /// The cancellation token to use. /// is null. @@ -122,7 +122,7 @@ internal HttpMessage CreateHangupCallRequest(string callConnectionId) return message; } - /// Hangup the call. + /// Hang up call automation service from the call. This will make call automation service leave the call, but does not terminate if there are more than 1 caller in the call. /// The call connection id. /// The cancellation token to use. /// is null. @@ -144,7 +144,7 @@ public async Task HangupCallAsync(string callConnectionId, Cancellatio } } - /// Hangup the call. + /// Hang up call automation service from the call. This will make call automation service leave the call, but does not terminate if there are more than 1 caller in the call. /// The call connection id. /// The cancellation token to use. /// is null. @@ -166,7 +166,7 @@ public Response HangupCall(string callConnectionId, CancellationToken cancellati } } - internal HttpMessage CreateTerminateCallRequest(string callConnectionId) + internal HttpMessage CreateTerminateCallRequest(string callConnectionId, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -178,24 +178,32 @@ internal HttpMessage CreateTerminateCallRequest(string callConnectionId) uri.AppendPath(":terminate", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); return message; } /// Terminate a call using CallConnectionId. /// The terminate call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public async Task TerminateCallAsync(string callConnectionId, CancellationToken cancellationToken = default) + public async Task TerminateCallAsync(string callConnectionId, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { throw new ArgumentNullException(nameof(callConnectionId)); } - using var message = CreateTerminateCallRequest(callConnectionId); + using var message = CreateTerminateCallRequest(callConnectionId, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -208,16 +216,18 @@ public async Task TerminateCallAsync(string callConnectionId, Cancella /// Terminate a call using CallConnectionId. /// The terminate call request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public Response TerminateCall(string callConnectionId, CancellationToken cancellationToken = default) + public Response TerminateCall(string callConnectionId, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { throw new ArgumentNullException(nameof(callConnectionId)); } - using var message = CreateTerminateCallRequest(callConnectionId); + using var message = CreateTerminateCallRequest(callConnectionId, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -228,7 +238,7 @@ public Response TerminateCall(string callConnectionId, CancellationToken cancell } } - internal HttpMessage CreateTransferToParticipantRequest(string callConnectionId, TransferToParticipantRequestInternal transferToParticipantRequest) + internal HttpMessage CreateTransferToParticipantRequest(string callConnectionId, TransferToParticipantRequestInternal transferToParticipantRequest, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -240,8 +250,14 @@ internal HttpMessage CreateTransferToParticipantRequest(string callConnectionId, uri.AppendPath(":transferToParticipant", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -253,9 +269,11 @@ internal HttpMessage CreateTransferToParticipantRequest(string callConnectionId, /// Transfer the call to a participant. /// The call connection id. /// The transfer to participant request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// or is null. - public async Task> TransferToParticipantAsync(string callConnectionId, TransferToParticipantRequestInternal transferToParticipantRequest, CancellationToken cancellationToken = default) + public async Task> TransferToParticipantAsync(string callConnectionId, TransferToParticipantRequestInternal transferToParticipantRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { @@ -266,7 +284,7 @@ public async Task> TransferToParticipa throw new ArgumentNullException(nameof(transferToParticipantRequest)); } - using var message = CreateTransferToParticipantRequest(callConnectionId, transferToParticipantRequest); + using var message = CreateTransferToParticipantRequest(callConnectionId, transferToParticipantRequest, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -285,9 +303,11 @@ public async Task> TransferToParticipa /// Transfer the call to a participant. /// The call connection id. /// The transfer to participant request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// or is null. - public Response TransferToParticipant(string callConnectionId, TransferToParticipantRequestInternal transferToParticipantRequest, CancellationToken cancellationToken = default) + public Response TransferToParticipant(string callConnectionId, TransferToParticipantRequestInternal transferToParticipantRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { @@ -298,7 +318,7 @@ public Response TransferToParticipant(string ca throw new ArgumentNullException(nameof(transferToParticipantRequest)); } - using var message = CreateTransferToParticipantRequest(callConnectionId, transferToParticipantRequest); + using var message = CreateTransferToParticipantRequest(callConnectionId, transferToParticipantRequest, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -384,7 +404,7 @@ public Response GetParticipants(string callConn } } - internal HttpMessage CreateAddParticipantRequest(string callConnectionId, AddParticipantRequestInternal addParticipantRequest) + internal HttpMessage CreateAddParticipantRequest(string callConnectionId, AddParticipantRequestInternal addParticipantRequest, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -396,8 +416,14 @@ internal HttpMessage CreateAddParticipantRequest(string callConnectionId, AddPar uri.AppendPath("/participants:add", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -406,12 +432,14 @@ internal HttpMessage CreateAddParticipantRequest(string callConnectionId, AddPar return message; } - /// Add participants to the call. + /// Add a participant to the call. /// The call connection Id. /// The AddParticipantRequest to use. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// or is null. - public async Task> AddParticipantAsync(string callConnectionId, AddParticipantRequestInternal addParticipantRequest, CancellationToken cancellationToken = default) + public async Task> AddParticipantAsync(string callConnectionId, AddParticipantRequestInternal addParticipantRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { @@ -422,7 +450,7 @@ public async Task> AddParticipantAsync( throw new ArgumentNullException(nameof(addParticipantRequest)); } - using var message = CreateAddParticipantRequest(callConnectionId, addParticipantRequest); + using var message = CreateAddParticipantRequest(callConnectionId, addParticipantRequest, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -438,12 +466,14 @@ public async Task> AddParticipantAsync( } } - /// Add participants to the call. + /// Add a participant to the call. /// The call connection Id. /// The AddParticipantRequest to use. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// or is null. - public Response AddParticipant(string callConnectionId, AddParticipantRequestInternal addParticipantRequest, CancellationToken cancellationToken = default) + public Response AddParticipant(string callConnectionId, AddParticipantRequestInternal addParticipantRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { @@ -454,7 +484,7 @@ public Response AddParticipant(string callConnec throw new ArgumentNullException(nameof(addParticipantRequest)); } - using var message = CreateAddParticipantRequest(callConnectionId, addParticipantRequest); + using var message = CreateAddParticipantRequest(callConnectionId, addParticipantRequest, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -470,7 +500,7 @@ public Response AddParticipant(string callConnec } } - internal HttpMessage CreateRemoveParticipantRequest(string callConnectionId, RemoveParticipantRequestInternal removeParticipantRequest) + internal HttpMessage CreateRemoveParticipantRequest(string callConnectionId, RemoveParticipantRequestInternal removeParticipantRequest, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -482,8 +512,14 @@ internal HttpMessage CreateRemoveParticipantRequest(string callConnectionId, Rem uri.AppendPath("/participants:remove", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -492,12 +528,14 @@ internal HttpMessage CreateRemoveParticipantRequest(string callConnectionId, Rem return message; } - /// Remove participant from the call using identifier. + /// Remove a participant from the call using identifier. /// The call connection id. /// The participant to be removed from the call. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// or is null. - public async Task> RemoveParticipantAsync(string callConnectionId, RemoveParticipantRequestInternal removeParticipantRequest, CancellationToken cancellationToken = default) + public async Task> RemoveParticipantAsync(string callConnectionId, RemoveParticipantRequestInternal removeParticipantRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { @@ -508,7 +546,7 @@ public async Task> RemoveParticipant throw new ArgumentNullException(nameof(removeParticipantRequest)); } - using var message = CreateRemoveParticipantRequest(callConnectionId, removeParticipantRequest); + using var message = CreateRemoveParticipantRequest(callConnectionId, removeParticipantRequest, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -524,12 +562,14 @@ public async Task> RemoveParticipant } } - /// Remove participant from the call using identifier. + /// Remove a participant from the call using identifier. /// The call connection id. /// The participant to be removed from the call. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// or is null. - public Response RemoveParticipant(string callConnectionId, RemoveParticipantRequestInternal removeParticipantRequest, CancellationToken cancellationToken = default) + public Response RemoveParticipant(string callConnectionId, RemoveParticipantRequestInternal removeParticipantRequest, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (callConnectionId == null) { @@ -540,7 +580,7 @@ public Response RemoveParticipant(string call throw new ArgumentNullException(nameof(removeParticipantRequest)); } - using var message = CreateRemoveParticipantRequest(callConnectionId, removeParticipantRequest); + using var message = CreateRemoveParticipantRequest(callConnectionId, removeParticipantRequest, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { @@ -556,178 +596,6 @@ public Response RemoveParticipant(string call } } - internal HttpMessage CreateMuteRequest(string callConnectionId, MuteParticipantsRequestInternal muteParticipantsRequest) - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Post; - var uri = new RawRequestUriBuilder(); - uri.Reset(_endpoint); - uri.AppendPath("/calling/callConnections/", false); - uri.AppendPath(callConnectionId, true); - uri.AppendPath("/participants:mute", false); - uri.AppendQuery("api-version", _apiVersion, true); - request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); - request.Headers.Add("Accept", "application/json"); - request.Headers.Add("Content-Type", "application/json"); - var content = new Utf8JsonRequestContent(); - content.JsonWriter.WriteObjectValue(muteParticipantsRequest); - request.Content = content; - return message; - } - - /// Mute participants from the call using identifier. - /// The call connection id. - /// The participants to be muted from the call. - /// The cancellation token to use. - /// or is null. - public async Task> MuteAsync(string callConnectionId, MuteParticipantsRequestInternal muteParticipantsRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (muteParticipantsRequest == null) - { - throw new ArgumentNullException(nameof(muteParticipantsRequest)); - } - - using var message = CreateMuteRequest(callConnectionId, muteParticipantsRequest); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) - { - case 202: - { - MuteParticipantsResult value = default; - using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - value = MuteParticipantsResult.DeserializeMuteParticipantsResult(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw new RequestFailedException(message.Response); - } - } - - /// Mute participants from the call using identifier. - /// The call connection id. - /// The participants to be muted from the call. - /// The cancellation token to use. - /// or is null. - public Response Mute(string callConnectionId, MuteParticipantsRequestInternal muteParticipantsRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (muteParticipantsRequest == null) - { - throw new ArgumentNullException(nameof(muteParticipantsRequest)); - } - - using var message = CreateMuteRequest(callConnectionId, muteParticipantsRequest); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) - { - case 202: - { - MuteParticipantsResult value = default; - using var document = JsonDocument.Parse(message.Response.ContentStream); - value = MuteParticipantsResult.DeserializeMuteParticipantsResult(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw new RequestFailedException(message.Response); - } - } - - internal HttpMessage CreateUnmuteRequest(string callConnectionId, UnmuteParticipantsRequestInternal unmuteParticipantsRequest) - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Post; - var uri = new RawRequestUriBuilder(); - uri.Reset(_endpoint); - uri.AppendPath("/calling/callConnections/", false); - uri.AppendPath(callConnectionId, true); - uri.AppendPath("/participants:unmute", false); - uri.AppendQuery("api-version", _apiVersion, true); - request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); - request.Headers.Add("Accept", "application/json"); - request.Headers.Add("Content-Type", "application/json"); - var content = new Utf8JsonRequestContent(); - content.JsonWriter.WriteObjectValue(unmuteParticipantsRequest); - request.Content = content; - return message; - } - - /// Unmute participants from the call using identifier. - /// The call connection id. - /// The participants to be unmuted from the call. - /// The cancellation token to use. - /// or is null. - public async Task> UnmuteAsync(string callConnectionId, UnmuteParticipantsRequestInternal unmuteParticipantsRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (unmuteParticipantsRequest == null) - { - throw new ArgumentNullException(nameof(unmuteParticipantsRequest)); - } - - using var message = CreateUnmuteRequest(callConnectionId, unmuteParticipantsRequest); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) - { - case 202: - { - UnmuteParticipantsResult value = default; - using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); - value = UnmuteParticipantsResult.DeserializeUnmuteParticipantsResult(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw new RequestFailedException(message.Response); - } - } - - /// Unmute participants from the call using identifier. - /// The call connection id. - /// The participants to be unmuted from the call. - /// The cancellation token to use. - /// or is null. - public Response Unmute(string callConnectionId, UnmuteParticipantsRequestInternal unmuteParticipantsRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (unmuteParticipantsRequest == null) - { - throw new ArgumentNullException(nameof(unmuteParticipantsRequest)); - } - - using var message = CreateUnmuteRequest(callConnectionId, unmuteParticipantsRequest); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) - { - case 202: - { - UnmuteParticipantsResult value = default; - using var document = JsonDocument.Parse(message.Response.ContentStream); - value = UnmuteParticipantsResult.DeserializeUnmuteParticipantsResult(document.RootElement); - return Response.FromValue(value, message.Response); - } - default: - throw new RequestFailedException(message.Response); - } - } - internal HttpMessage CreateGetParticipantRequest(string callConnectionId, string participantRawId) { var message = _pipeline.CreateMessage(); diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallMediaRestClient.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallMediaRestClient.cs index c518ab9f4cf09..7f78968da3510 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallMediaRestClient.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallMediaRestClient.cs @@ -29,7 +29,7 @@ internal partial class CallMediaRestClient /// The endpoint of the Azure Communication resource. /// Api Version. /// , , or is null. - public CallMediaRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-01-15-preview") + public CallMediaRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-03-06") { ClientDiagnostics = clientDiagnostics ?? throw new ArgumentNullException(nameof(clientDiagnostics)); _pipeline = pipeline ?? throw new ArgumentNullException(nameof(pipeline)); @@ -244,227 +244,5 @@ public Response Recognize(string callConnectionId, RecognizeRequestInternal reco throw new RequestFailedException(message.Response); } } - - internal HttpMessage CreateStartContinuousDtmfRecognitionRequest(string callConnectionId, ContinuousDtmfRecognitionRequestInternal continuousDtmfRecognitionRequest) - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Post; - var uri = new RawRequestUriBuilder(); - uri.Reset(_endpoint); - uri.AppendPath("/calling/callConnections/", false); - uri.AppendPath(callConnectionId, true); - uri.AppendPath(":startContinuousDtmfRecognition", false); - uri.AppendQuery("api-version", _apiVersion, true); - request.Uri = uri; - request.Headers.Add("Accept", "application/json"); - request.Headers.Add("Content-Type", "application/json"); - var content = new Utf8JsonRequestContent(); - content.JsonWriter.WriteObjectValue(continuousDtmfRecognitionRequest); - request.Content = content; - return message; - } - - /// Start continuous Dtmf recognition by subscribing to tones. - /// The call connection id. - /// The continuous recognize request. - /// The cancellation token to use. - /// or is null. - public async Task StartContinuousDtmfRecognitionAsync(string callConnectionId, ContinuousDtmfRecognitionRequestInternal continuousDtmfRecognitionRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (continuousDtmfRecognitionRequest == null) - { - throw new ArgumentNullException(nameof(continuousDtmfRecognitionRequest)); - } - - using var message = CreateStartContinuousDtmfRecognitionRequest(callConnectionId, continuousDtmfRecognitionRequest); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) - { - case 200: - return message.Response; - default: - throw new RequestFailedException(message.Response); - } - } - - /// Start continuous Dtmf recognition by subscribing to tones. - /// The call connection id. - /// The continuous recognize request. - /// The cancellation token to use. - /// or is null. - public Response StartContinuousDtmfRecognition(string callConnectionId, ContinuousDtmfRecognitionRequestInternal continuousDtmfRecognitionRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (continuousDtmfRecognitionRequest == null) - { - throw new ArgumentNullException(nameof(continuousDtmfRecognitionRequest)); - } - - using var message = CreateStartContinuousDtmfRecognitionRequest(callConnectionId, continuousDtmfRecognitionRequest); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) - { - case 200: - return message.Response; - default: - throw new RequestFailedException(message.Response); - } - } - - internal HttpMessage CreateStopContinuousDtmfRecognitionRequest(string callConnectionId, ContinuousDtmfRecognitionRequestInternal continuousDtmfRecognitionRequest) - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Post; - var uri = new RawRequestUriBuilder(); - uri.Reset(_endpoint); - uri.AppendPath("/calling/callConnections/", false); - uri.AppendPath(callConnectionId, true); - uri.AppendPath(":stopContinuousDtmfRecognition", false); - uri.AppendQuery("api-version", _apiVersion, true); - request.Uri = uri; - request.Headers.Add("Accept", "application/json"); - request.Headers.Add("Content-Type", "application/json"); - var content = new Utf8JsonRequestContent(); - content.JsonWriter.WriteObjectValue(continuousDtmfRecognitionRequest); - request.Content = content; - return message; - } - - /// Stop continuous Dtmf recognition by unsubscribing to tones. - /// The call connection id. - /// The continuous recognize request. - /// The cancellation token to use. - /// or is null. - public async Task StopContinuousDtmfRecognitionAsync(string callConnectionId, ContinuousDtmfRecognitionRequestInternal continuousDtmfRecognitionRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (continuousDtmfRecognitionRequest == null) - { - throw new ArgumentNullException(nameof(continuousDtmfRecognitionRequest)); - } - - using var message = CreateStopContinuousDtmfRecognitionRequest(callConnectionId, continuousDtmfRecognitionRequest); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) - { - case 200: - return message.Response; - default: - throw new RequestFailedException(message.Response); - } - } - - /// Stop continuous Dtmf recognition by unsubscribing to tones. - /// The call connection id. - /// The continuous recognize request. - /// The cancellation token to use. - /// or is null. - public Response StopContinuousDtmfRecognition(string callConnectionId, ContinuousDtmfRecognitionRequestInternal continuousDtmfRecognitionRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (continuousDtmfRecognitionRequest == null) - { - throw new ArgumentNullException(nameof(continuousDtmfRecognitionRequest)); - } - - using var message = CreateStopContinuousDtmfRecognitionRequest(callConnectionId, continuousDtmfRecognitionRequest); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) - { - case 200: - return message.Response; - default: - throw new RequestFailedException(message.Response); - } - } - - internal HttpMessage CreateSendDtmfRequest(string callConnectionId, SendDtmfRequestInternal sendDtmfRequest) - { - var message = _pipeline.CreateMessage(); - var request = message.Request; - request.Method = RequestMethod.Post; - var uri = new RawRequestUriBuilder(); - uri.Reset(_endpoint); - uri.AppendPath("/calling/callConnections/", false); - uri.AppendPath(callConnectionId, true); - uri.AppendPath(":sendDtmf", false); - uri.AppendQuery("api-version", _apiVersion, true); - request.Uri = uri; - request.Headers.Add("Accept", "application/json"); - request.Headers.Add("Content-Type", "application/json"); - var content = new Utf8JsonRequestContent(); - content.JsonWriter.WriteObjectValue(sendDtmfRequest); - request.Content = content; - return message; - } - - /// Send dtmf tones. - /// The call connection id. - /// The send dtmf request. - /// The cancellation token to use. - /// or is null. - public async Task SendDtmfAsync(string callConnectionId, SendDtmfRequestInternal sendDtmfRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (sendDtmfRequest == null) - { - throw new ArgumentNullException(nameof(sendDtmfRequest)); - } - - using var message = CreateSendDtmfRequest(callConnectionId, sendDtmfRequest); - await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); - switch (message.Response.Status) - { - case 202: - return message.Response; - default: - throw new RequestFailedException(message.Response); - } - } - - /// Send dtmf tones. - /// The call connection id. - /// The send dtmf request. - /// The cancellation token to use. - /// or is null. - public Response SendDtmf(string callConnectionId, SendDtmfRequestInternal sendDtmfRequest, CancellationToken cancellationToken = default) - { - if (callConnectionId == null) - { - throw new ArgumentNullException(nameof(callConnectionId)); - } - if (sendDtmfRequest == null) - { - throw new ArgumentNullException(nameof(sendDtmfRequest)); - } - - using var message = CreateSendDtmfRequest(callConnectionId, sendDtmfRequest); - _pipeline.Send(message, cancellationToken); - switch (message.Response.Status) - { - case 202: - return message.Response; - default: - throw new RequestFailedException(message.Response); - } - } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallRecordingRestClient.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallRecordingRestClient.cs index 90fcfad75f0f4..4ea436288ff20 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallRecordingRestClient.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CallRecordingRestClient.cs @@ -30,7 +30,7 @@ internal partial class CallRecordingRestClient /// The endpoint of the Azure Communication resource. /// Api Version. /// , , or is null. - public CallRecordingRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-01-15-preview") + public CallRecordingRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint, string apiVersion = "2023-03-06") { ClientDiagnostics = clientDiagnostics ?? throw new ArgumentNullException(nameof(clientDiagnostics)); _pipeline = pipeline ?? throw new ArgumentNullException(nameof(pipeline)); @@ -38,7 +38,7 @@ public CallRecordingRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline _apiVersion = apiVersion ?? throw new ArgumentNullException(nameof(apiVersion)); } - internal HttpMessage CreateStartRecordingRequest(StartCallRecordingRequestInternal startCallRecording) + internal HttpMessage CreateStartRecordingRequest(StartCallRecordingRequestInternal startCallRecording, Guid? repeatabilityRequestID, DateTimeOffset? repeatabilityFirstSent) { var message = _pipeline.CreateMessage(); var request = message.Request; @@ -48,8 +48,14 @@ internal HttpMessage CreateStartRecordingRequest(StartCallRecordingRequestIntern uri.AppendPath("/calling/recordings", false); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; - request.Headers.Add("Repeatability-Request-ID", Guid.NewGuid()); - request.Headers.Add("Repeatability-First-Sent", DateTimeOffset.Now, "R"); + if (repeatabilityRequestID != null) + { + request.Headers.Add("Repeatability-Request-ID", repeatabilityRequestID.Value); + } + if (repeatabilityFirstSent != null) + { + request.Headers.Add("Repeatability-First-Sent", repeatabilityFirstSent.Value, "R"); + } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); @@ -60,16 +66,18 @@ internal HttpMessage CreateStartRecordingRequest(StartCallRecordingRequestIntern /// Start recording the call. /// The request body of start call recording request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public async Task> StartRecordingAsync(StartCallRecordingRequestInternal startCallRecording, CancellationToken cancellationToken = default) + public async Task> StartRecordingAsync(StartCallRecordingRequestInternal startCallRecording, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (startCallRecording == null) { throw new ArgumentNullException(nameof(startCallRecording)); } - using var message = CreateStartRecordingRequest(startCallRecording); + using var message = CreateStartRecordingRequest(startCallRecording, repeatabilityRequestID, repeatabilityFirstSent); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { @@ -87,16 +95,18 @@ public async Task> StartRecordingAsync(StartCallR /// Start recording the call. /// The request body of start call recording request. + /// If specified, the client directs that the request is repeatable; that is, that the client can make the request multiple times with the same Repeatability-Request-Id and get back an appropriate response without the server executing the request multiple times. The value of the Repeatability-Request-Id is an opaque string representing a client-generated unique identifier for the request. It is a version 4 (random) UUID. + /// If Repeatability-Request-ID header is specified, then Repeatability-First-Sent header must also be specified. The value should be the date and time at which the request was first created, expressed using the IMF-fixdate form of HTTP-date. Example: Sun, 06 Nov 1994 08:49:37 GMT. /// The cancellation token to use. /// is null. - public Response StartRecording(StartCallRecordingRequestInternal startCallRecording, CancellationToken cancellationToken = default) + public Response StartRecording(StartCallRecordingRequestInternal startCallRecording, Guid? repeatabilityRequestID = null, DateTimeOffset? repeatabilityFirstSent = null, CancellationToken cancellationToken = default) { if (startCallRecording == null) { throw new ArgumentNullException(nameof(startCallRecording)); } - using var message = CreateStartRecordingRequest(startCallRecording); + using var message = CreateStartRecordingRequest(startCallRecording, repeatabilityRequestID, repeatabilityFirstSent); _pipeline.Send(message, cancellationToken); switch (message.Response.Status) { diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CommunicationCallAutomationModelFactory.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CommunicationCallAutomationModelFactory.cs index 8fb755f5d3353..e3df3f8248385 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CommunicationCallAutomationModelFactory.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/CommunicationCallAutomationModelFactory.cs @@ -12,7 +12,7 @@ namespace Azure.Communication.CallAutomation { /// Model factory for models. - public static partial class CommunicationCallAutomationModelFactory + public static partial class CallAutomationModelFactory { /// Initializes a new instance of TransferCallToParticipantResult. /// The operation context provided by client. @@ -22,22 +22,6 @@ public static TransferCallToParticipantResult TransferCallToParticipantResult(st return new TransferCallToParticipantResult(operationContext); } - /// Initializes a new instance of MuteParticipantsResult. - /// The operation context provided by client. - /// A new instance for mocking. - public static MuteParticipantsResult MuteParticipantsResult(string operationContext = null) - { - return new MuteParticipantsResult(operationContext); - } - - /// Initializes a new instance of UnmuteParticipantsResult. - /// The operation context provided by client. - /// A new instance for mocking. - public static UnmuteParticipantsResult UnmuteParticipantsResult(string operationContext = null) - { - return new UnmuteParticipantsResult(operationContext); - } - /// Initializes a new instance of RecordingStateResult. /// /// @@ -79,12 +63,24 @@ public static CallDisconnected CallDisconnected(string callConnectionId = null, return new CallDisconnected(callConnectionId, serverCallId, correlationId, operationContext); } + /// Initializes a new instance of CallTransferAccepted. + /// Call connection ID. + /// Server call ID. + /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. + /// Used by customers when calling mid-call actions to correlate the request to the response event. + /// Contains the resulting SIP code, sub-code and message. + /// A new instance for mocking. + public static CallTransferAccepted CallTransferAccepted(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, ResultInformation resultInformation = null) + { + return new CallTransferAccepted(callConnectionId, serverCallId, correlationId, operationContext, resultInformation); + } + /// Initializes a new instance of CallTransferFailed. /// Call connection ID. /// Server call ID. /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. /// A new instance for mocking. public static CallTransferFailed CallTransferFailed(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, ResultInformation resultInformation = null) { @@ -139,16 +135,6 @@ public static PlayCanceled PlayCanceled(string callConnectionId = null, string s return new PlayCanceled(callConnectionId, serverCallId, correlationId, operationContext); } - /// Initializes a new instance of CollectTonesResult. - /// - /// A new instance for mocking. - public static CollectTonesResult CollectTonesResult(IEnumerable tones = null) - { - tones ??= new List(); - - return new CollectTonesResult(tones?.ToList()); - } - /// Initializes a new instance of DtmfResult. /// /// A new instance for mocking. @@ -159,26 +145,6 @@ public static DtmfResult DtmfResult(IEnumerable tones = null) return new DtmfResult(tones?.ToList()); } - /// Initializes a new instance of ChoiceResult. - /// Label is the primary identifier for the choice detected. - /// - /// Phrases are set to the value if choice is selected via phrase detection. - /// If Dtmf input is recognized, then Label will be the identifier for the choice detected and phrases will be set to null - /// - /// A new instance for mocking. - public static ChoiceResult ChoiceResult(string label = null, string recognizedPhrase = null) - { - return new ChoiceResult(label, recognizedPhrase); - } - - /// Initializes a new instance of SpeechResult. - /// The recognized speech in string. - /// A new instance for mocking. - public static SpeechResult SpeechResult(string speech = null) - { - return new SpeechResult(speech); - } - /// Initializes a new instance of RecognizeFailed. /// Call connection ID. /// Server call ID. @@ -201,83 +167,5 @@ public static RecognizeCanceled RecognizeCanceled(string callConnectionId = null { return new RecognizeCanceled(callConnectionId, serverCallId, correlationId, operationContext); } - - /// Initializes a new instance of UserConsent. - /// - /// A new instance for mocking. - public static UserConsent UserConsent(int? recording = null) - { - return new UserConsent(recording); - } - - /// Initializes a new instance of ContinuousDtmfRecognitionToneFailed. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. - /// Contains the resulting SIP code, sub-code and message. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// A new instance for mocking. - public static ContinuousDtmfRecognitionToneFailed ContinuousDtmfRecognitionToneFailed(string callConnectionId = null, string serverCallId = null, string correlationId = null, ResultInformation resultInformation = null, string operationContext = null) - { - return new ContinuousDtmfRecognitionToneFailed(callConnectionId, serverCallId, correlationId, resultInformation, operationContext); - } - - /// Initializes a new instance of ContinuousDtmfRecognitionToneReceived. - /// Information about Tone. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. Also called ChainId or skype chain ID. - /// Contains the resulting SIP code, sub-code and message. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// A new instance for mocking. - public static ContinuousDtmfRecognitionToneReceived ContinuousDtmfRecognitionToneReceived(ToneInfo toneInfo = null, string callConnectionId = null, string serverCallId = null, string correlationId = null, ResultInformation resultInformation = null, string operationContext = null) - { - return new ContinuousDtmfRecognitionToneReceived(toneInfo, callConnectionId, serverCallId, correlationId, resultInformation, operationContext); - } - - /// Initializes a new instance of ToneInfo. - /// The sequence id which can be used to determine if the same tone was played multiple times or if any tones were missed. - /// - /// A new instance for mocking. - public static ToneInfo ToneInfo(int sequenceId = default, DtmfTone tone = default) - { - return new ToneInfo(sequenceId, tone); - } - - /// Initializes a new instance of ContinuousDtmfRecognitionStopped. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code, sub-code and message. - /// A new instance for mocking. - public static ContinuousDtmfRecognitionStopped ContinuousDtmfRecognitionStopped(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, ResultInformation resultInformation = null) - { - return new ContinuousDtmfRecognitionStopped(callConnectionId, serverCallId, correlationId, operationContext, resultInformation); - } - - /// Initializes a new instance of SendDtmfCompleted. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code, sub-code and message. - /// A new instance for mocking. - public static SendDtmfCompleted SendDtmfCompleted(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, ResultInformation resultInformation = null) - { - return new SendDtmfCompleted(callConnectionId, serverCallId, correlationId, operationContext, resultInformation); - } - - /// Initializes a new instance of SendDtmfFailed. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code, sub-code and message. - /// A new instance for mocking. - public static SendDtmfFailed SendDtmfFailed(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, ResultInformation resultInformation = null) - { - return new SendDtmfFailed(callConnectionId, serverCallId, correlationId, operationContext, resultInformation); - } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantFailedInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantFailedInternal.cs index cb5f2081fc562..0b5dc694250f4 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantFailedInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantFailedInternal.cs @@ -9,7 +9,7 @@ namespace Azure.Communication.CallAutomation { - /// The failed to add participant event. + /// The failed to add participants event. internal partial class AddParticipantFailedInternal { /// Initializes a new instance of AddParticipantFailedInternal. @@ -22,7 +22,7 @@ internal AddParticipantFailedInternal() /// Server call ID. /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. /// Participant. internal AddParticipantFailedInternal(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation, CommunicationIdentifierModel participant) { @@ -42,7 +42,7 @@ internal AddParticipantFailedInternal(string callConnectionId, string serverCall public string CorrelationId { get; } /// Used by customers when calling mid-call actions to correlate the request to the response event. public string OperationContext { get; } - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. public ResultInformation ResultInformation { get; } /// Participant. public CommunicationIdentifierModel Participant { get; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.Serialization.cs index 1247be0dccd22..ca430f38f04f1 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.Serialization.cs @@ -37,16 +37,6 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WritePropertyName("operationContext"u8); writer.WriteStringValue(OperationContext); } - if (Optional.IsDefined(CustomContext)) - { - writer.WritePropertyName("customContext"u8); - writer.WriteObjectValue(CustomContext); - } - if (Optional.IsDefined(CallbackUri)) - { - writer.WritePropertyName("callbackUri"u8); - writer.WriteStringValue(CallbackUri); - } writer.WriteEndObject(); } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.cs index 5953ac8580db7..94dc36e214bcf 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.cs @@ -25,7 +25,7 @@ public AddParticipantRequestInternal(CommunicationIdentifierModel participantToA } /// - /// The source caller Id, a phone number, that's shown to the PSTN participant being invited. + /// The source caller Id, a phone number, that's shown to the PSTN participant being invited. /// Required only when inviting a PSTN participant. /// public PhoneNumberIdentifierModel SourceCallerIdNumber { get; set; } @@ -43,9 +43,5 @@ public AddParticipantRequestInternal(CommunicationIdentifierModel participantToA public int? InvitationTimeoutInSeconds { get; set; } /// Used by customers when calling mid-call actions to correlate the request to the response event. public string OperationContext { get; set; } - /// Used by customer to send custom context to targets. - public CustomContextInternal CustomContext { get; set; } - /// The callback URI to override the main callback URI. - public string CallbackUri { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantSucceededInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantSucceededInternal.cs index 16ced7486b88e..803ac1cc91f8d 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantSucceededInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantSucceededInternal.cs @@ -9,7 +9,7 @@ namespace Azure.Communication.CallAutomation { - /// The participant successfully added event. + /// The participants successfully added event. internal partial class AddParticipantSucceededInternal { /// Initializes a new instance of AddParticipantSucceededInternal. @@ -22,7 +22,7 @@ internal AddParticipantSucceededInternal() /// Server call ID. /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. /// Participant. internal AddParticipantSucceededInternal(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation, CommunicationIdentifierModel participant) { @@ -42,7 +42,7 @@ internal AddParticipantSucceededInternal(string callConnectionId, string serverC public string CorrelationId { get; } /// Used by customers when calling mid-call actions to correlate the request to the response event. public string OperationContext { get; } - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. public ResultInformation ResultInformation { get; } /// Participant. public CommunicationIdentifierModel Participant { get; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.Serialization.cs index 2687ff70177ae..aadc7fffc4954 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.Serialization.cs @@ -24,20 +24,10 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WritePropertyName("operationContext"u8); writer.WriteStringValue(OperationContext); } - if (Optional.IsDefined(MediaStreamingConfiguration)) + if (Optional.IsDefined(AnsweredBy)) { - writer.WritePropertyName("mediaStreamingConfiguration"u8); - writer.WriteObjectValue(MediaStreamingConfiguration); - } - if (Optional.IsDefined(AzureCognitiveServicesEndpointUrl)) - { - writer.WritePropertyName("azureCognitiveServicesEndpointUrl"u8); - writer.WriteStringValue(AzureCognitiveServicesEndpointUrl); - } - if (Optional.IsDefined(AnsweredByIdentifier)) - { - writer.WritePropertyName("answeredByIdentifier"u8); - writer.WriteObjectValue(AnsweredByIdentifier); + writer.WritePropertyName("answeredBy"u8); + writer.WriteObjectValue(AnsweredBy); } writer.WriteEndObject(); } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.cs index 52a98a9d01f2b..5776177479121 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AnswerCallRequestInternal.cs @@ -33,11 +33,7 @@ public AnswerCallRequestInternal(string incomingCallContext, string callbackUri) public string CallbackUri { get; } /// A customer set value used to track the answering of a call. public string OperationContext { get; set; } - /// Media Streaming Configuration. - public MediaStreamingOptionsInternal MediaStreamingConfiguration { get; set; } - /// The endpoint URL of the Azure Cognitive Services resource attached. - public string AzureCognitiveServicesEndpointUrl { get; set; } /// The identifier of the call automation entity which answers the call. - public CommunicationUserIdentifierModel AnsweredByIdentifier { get; set; } + public CommunicationUserIdentifierModel AnsweredBy { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/BlobStorageInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/BlobStorageInternal.Serialization.cs deleted file mode 100644 index ebe44d96f6029..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/BlobStorageInternal.Serialization.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class BlobStorageInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("containerUri"u8); - writer.WriteStringValue(ContainerUri); - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/BlobStorageInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/BlobStorageInternal.cs deleted file mode 100644 index bc445e794727f..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/BlobStorageInternal.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// Used to specify Blob container url to recording storage. - internal partial class BlobStorageInternal - { - /// Initializes a new instance of BlobStorageInternal. - /// Url of a container or a location within a container. - /// is null. - public BlobStorageInternal(string containerUri) - { - Argument.AssertNotNull(containerUri, nameof(containerUri)); - - ContainerUri = containerUri; - } - - /// Url of a container or a location within a container. - public string ContainerUri { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.Serialization.cs index c423598401c66..662448b4a3dac 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.Serialization.cs @@ -25,12 +25,11 @@ internal static CallConnectionPropertiesInternal DeserializeCallConnectionProper Optional> targets = default; Optional callConnectionState = default; Optional callbackUri = default; - Optional mediaSubscriptionId = default; Optional sourceCallerIdNumber = default; Optional sourceDisplayName = default; - Optional sourceIdentity = default; + Optional source = default; Optional correlationId = default; - Optional answeredByIdentifier = default; + Optional answeredBy = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("callConnectionId"u8)) @@ -71,11 +70,6 @@ internal static CallConnectionPropertiesInternal DeserializeCallConnectionProper callbackUri = property.Value.GetString(); continue; } - if (property.NameEquals("mediaSubscriptionId"u8)) - { - mediaSubscriptionId = property.Value.GetString(); - continue; - } if (property.NameEquals("sourceCallerIdNumber"u8)) { if (property.Value.ValueKind == JsonValueKind.Null) @@ -90,13 +84,13 @@ internal static CallConnectionPropertiesInternal DeserializeCallConnectionProper sourceDisplayName = property.Value.GetString(); continue; } - if (property.NameEquals("sourceIdentity"u8)) + if (property.NameEquals("source"u8)) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } - sourceIdentity = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); + source = CommunicationIdentifierModel.DeserializeCommunicationIdentifierModel(property.Value); continue; } if (property.NameEquals("correlationId"u8)) @@ -104,17 +98,17 @@ internal static CallConnectionPropertiesInternal DeserializeCallConnectionProper correlationId = property.Value.GetString(); continue; } - if (property.NameEquals("answeredByIdentifier"u8)) + if (property.NameEquals("answeredBy"u8)) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } - answeredByIdentifier = CommunicationUserIdentifierModel.DeserializeCommunicationUserIdentifierModel(property.Value); + answeredBy = CommunicationUserIdentifierModel.DeserializeCommunicationUserIdentifierModel(property.Value); continue; } } - return new CallConnectionPropertiesInternal(callConnectionId.Value, serverCallId.Value, Optional.ToList(targets), Optional.ToNullable(callConnectionState), callbackUri.Value, mediaSubscriptionId.Value, sourceCallerIdNumber.Value, sourceDisplayName.Value, sourceIdentity.Value, correlationId.Value, answeredByIdentifier.Value); + return new CallConnectionPropertiesInternal(callConnectionId.Value, serverCallId.Value, Optional.ToList(targets), Optional.ToNullable(callConnectionState), callbackUri.Value, sourceCallerIdNumber.Value, sourceDisplayName.Value, source.Value, correlationId.Value, answeredBy.Value); } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.cs index 923217d55125d..bc98ab51b9b13 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallConnectionPropertiesInternal.cs @@ -26,28 +26,26 @@ internal CallConnectionPropertiesInternal() /// The targets of the call. /// The state of the call connection. /// The callback URI. - /// SubscriptionId for media streaming. /// /// The source caller Id, a phone number, that's shown to the PSTN participant being invited. /// Required only when calling a PSTN callee. /// /// Display name of the call if dialing out to a pstn number. - /// Source identity. + /// Source identity. /// The correlation ID. - /// Identity of the answering entity. Only populated when identity is provided in the request. - internal CallConnectionPropertiesInternal(string callConnectionId, string serverCallId, IReadOnlyList targets, CallConnectionState? callConnectionState, string callbackUri, string mediaSubscriptionId, PhoneNumberIdentifierModel sourceCallerIdNumber, string sourceDisplayName, CommunicationIdentifierModel sourceIdentity, string correlationId, CommunicationUserIdentifierModel answeredByIdentifier) + /// Identity of the answering entity. Only populated when identity is provided in the request. + internal CallConnectionPropertiesInternal(string callConnectionId, string serverCallId, IReadOnlyList targets, CallConnectionState? callConnectionState, string callbackUri, PhoneNumberIdentifierModel sourceCallerIdNumber, string sourceDisplayName, CommunicationIdentifierModel source, string correlationId, CommunicationUserIdentifierModel answeredBy) { CallConnectionId = callConnectionId; ServerCallId = serverCallId; Targets = targets; CallConnectionState = callConnectionState; CallbackUri = callbackUri; - MediaSubscriptionId = mediaSubscriptionId; SourceCallerIdNumber = sourceCallerIdNumber; SourceDisplayName = sourceDisplayName; - SourceIdentity = sourceIdentity; + Source = source; CorrelationId = correlationId; - AnsweredByIdentifier = answeredByIdentifier; + AnsweredBy = answeredBy; } /// The call connection id. @@ -60,8 +58,6 @@ internal CallConnectionPropertiesInternal(string callConnectionId, string server public CallConnectionState? CallConnectionState { get; } /// The callback URI. public string CallbackUri { get; } - /// SubscriptionId for media streaming. - public string MediaSubscriptionId { get; } /// /// The source caller Id, a phone number, that's shown to the PSTN participant being invited. /// Required only when calling a PSTN callee. @@ -70,10 +66,10 @@ internal CallConnectionPropertiesInternal(string callConnectionId, string server /// Display name of the call if dialing out to a pstn number. public string SourceDisplayName { get; } /// Source identity. - public CommunicationIdentifierModel SourceIdentity { get; } + public CommunicationIdentifierModel Source { get; } /// The correlation ID. public string CorrelationId { get; } /// Identity of the answering entity. Only populated when identity is provided in the request. - public CommunicationUserIdentifierModel AnsweredByIdentifier { get; } + public CommunicationUserIdentifierModel AnsweredBy { get; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallMediaRecognitionType.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallMediaRecognitionType.cs index d5346548c6599..81ec9e2a3e0a4 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallMediaRecognitionType.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallMediaRecognitionType.cs @@ -26,15 +26,9 @@ public CallMediaRecognitionType(string value) } private const string DtmfValue = "dtmf"; - private const string SpeechValue = "speech"; - private const string ChoicesValue = "choices"; /// dtmf. public static CallMediaRecognitionType Dtmf { get; } = new CallMediaRecognitionType(DtmfValue); - /// speech. - public static CallMediaRecognitionType Speech { get; } = new CallMediaRecognitionType(SpeechValue); - /// choices. - public static CallMediaRecognitionType Choices { get; } = new CallMediaRecognitionType(ChoicesValue); /// Determines if two values are the same. public static bool operator ==(CallMediaRecognitionType left, CallMediaRecognitionType right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallParticipantInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallParticipantInternal.cs index 2aeed43973024..51dfd7db26a6b 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallParticipantInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallParticipantInternal.cs @@ -9,7 +9,7 @@ namespace Azure.Communication.CallAutomation { - /// Contract model of an ACS call participant. + /// A call participant. internal partial class CallParticipantInternal { /// Initializes a new instance of CallParticipantInternal. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfFailed.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallTransferAccepted.cs similarity index 62% rename from sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfFailed.cs rename to sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallTransferAccepted.cs index 15e625d941d74..2d557eb9daca2 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfFailed.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallTransferAccepted.cs @@ -7,21 +7,21 @@ namespace Azure.Communication.CallAutomation { - /// The SendDtmfFailed. - public partial class SendDtmfFailed + /// The call transfer accepted event. + public partial class CallTransferAccepted { - /// Initializes a new instance of SendDtmfFailed. - internal SendDtmfFailed() + /// Initializes a new instance of CallTransferAccepted. + internal CallTransferAccepted() { } - /// Initializes a new instance of SendDtmfFailed. + /// Initializes a new instance of CallTransferAccepted. /// Call connection ID. /// Server call ID. - /// Correlation ID for event to call correlation. + /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. /// Used by customers when calling mid-call actions to correlate the request to the response event. /// Contains the resulting SIP code, sub-code and message. - internal SendDtmfFailed(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation) + internal CallTransferAccepted(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation) { CallConnectionId = callConnectionId; ServerCallId = serverCallId; diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallTransferFailed.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallTransferFailed.cs index 73c3d3f9a70fe..c2e4e3d17bf88 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallTransferFailed.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CallTransferFailed.cs @@ -20,7 +20,7 @@ internal CallTransferFailed() /// Server call ID. /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. internal CallTransferFailed(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation) { CallConnectionId = callConnectionId; diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ChoiceResult.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ChoiceResult.Serialization.cs deleted file mode 100644 index 50f18be24e912..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ChoiceResult.Serialization.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class ChoiceResult - { - internal static ChoiceResult DeserializeChoiceResult(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional label = default; - Optional recognizedPhrase = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("label"u8)) - { - label = property.Value.GetString(); - continue; - } - if (property.NameEquals("recognizedPhrase"u8)) - { - recognizedPhrase = property.Value.GetString(); - continue; - } - } - return new ChoiceResult(label.Value, recognizedPhrase.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ChoiceResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ChoiceResult.cs deleted file mode 100644 index 1eb8655ae0b41..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ChoiceResult.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The ChoiceResult. - public partial class ChoiceResult - { - /// Initializes a new instance of ChoiceResult. - internal ChoiceResult() - { - } - - /// Initializes a new instance of ChoiceResult. - /// Label is the primary identifier for the choice detected. - /// - /// Phrases are set to the value if choice is selected via phrase detection. - /// If Dtmf input is recognized, then Label will be the identifier for the choice detected and phrases will be set to null - /// - internal ChoiceResult(string label, string recognizedPhrase) - { - Label = label; - RecognizedPhrase = recognizedPhrase; - } - - /// Label is the primary identifier for the choice detected. - public string Label { get; } - /// - /// Phrases are set to the value if choice is selected via phrase detection. - /// If Dtmf input is recognized, then Label will be the identifier for the choice detected and phrases will be set to null - /// - public string RecognizedPhrase { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CollectTonesResult.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CollectTonesResult.Serialization.cs deleted file mode 100644 index 1b0a553c6fac4..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CollectTonesResult.Serialization.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Collections.Generic; -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class CollectTonesResult - { - internal static CollectTonesResult DeserializeCollectTonesResult(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional> tones = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("tones"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - List array = new List(); - foreach (var item in property.Value.EnumerateArray()) - { - array.Add(new DtmfTone(item.GetString())); - } - tones = array; - continue; - } - } - return new CollectTonesResult(Optional.ToList(tones)); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CollectTonesResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CollectTonesResult.cs deleted file mode 100644 index 0bd35b05d5a98..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CollectTonesResult.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Collections.Generic; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The CollectTonesResult. - public partial class CollectTonesResult - { - /// Initializes a new instance of CollectTonesResult. - internal CollectTonesResult() - { - Tones = new ChangeTrackingList(); - } - - /// Initializes a new instance of CollectTonesResult. - /// - internal CollectTonesResult(IReadOnlyList tones) - { - Tones = tones; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CommunicationIdentifierModelKind.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CommunicationIdentifierModelKind.cs index d6fc6f9cede1e..8a02aca1cd035 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CommunicationIdentifierModelKind.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CommunicationIdentifierModelKind.cs @@ -10,7 +10,7 @@ namespace Azure.Communication { - /// The identifier kind, for example 'communicationUser' or 'phoneNumber'. + /// The identifier kind, for example 'communicationUser' or 'phoneNumber'. internal readonly partial struct CommunicationIdentifierModelKind : IEquatable { private readonly string _value; diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.Serialization.cs deleted file mode 100644 index 2205d8a22d686..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.Serialization.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class ContinuousDtmfRecognitionRequestInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("targetParticipant"u8); - writer.WriteObjectValue(TargetParticipant); - if (Optional.IsDefined(OperationContext)) - { - writer.WritePropertyName("operationContext"u8); - writer.WriteStringValue(OperationContext); - } - if (Optional.IsDefined(CallbackUri)) - { - writer.WritePropertyName("callbackUri"u8); - writer.WriteStringValue(CallbackUri); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.cs deleted file mode 100644 index bc6188582a171..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using Azure.Communication; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The ContinuousDtmfRecognitionRequest. - internal partial class ContinuousDtmfRecognitionRequestInternal - { - /// Initializes a new instance of ContinuousDtmfRecognitionRequestInternal. - /// Defines options for recognition. - /// is null. - public ContinuousDtmfRecognitionRequestInternal(CommunicationIdentifierModel targetParticipant) - { - Argument.AssertNotNull(targetParticipant, nameof(targetParticipant)); - - TargetParticipant = targetParticipant; - } - - /// Defines options for recognition. - public CommunicationIdentifierModel TargetParticipant { get; } - /// The value to identify context of the operation. - public string OperationContext { get; set; } - /// The callback URI to override the main callback URI. - public string CallbackUri { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionStopped.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionStopped.Serialization.cs deleted file mode 100644 index ea7fae65cdf34..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionStopped.Serialization.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class ContinuousDtmfRecognitionStopped - { - internal static ContinuousDtmfRecognitionStopped DeserializeContinuousDtmfRecognitionStopped(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional callConnectionId = default; - Optional serverCallId = default; - Optional correlationId = default; - Optional operationContext = default; - Optional resultInformation = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("callConnectionId"u8)) - { - callConnectionId = property.Value.GetString(); - continue; - } - if (property.NameEquals("serverCallId"u8)) - { - serverCallId = property.Value.GetString(); - continue; - } - if (property.NameEquals("correlationId"u8)) - { - correlationId = property.Value.GetString(); - continue; - } - if (property.NameEquals("operationContext"u8)) - { - operationContext = property.Value.GetString(); - continue; - } - if (property.NameEquals("resultInformation"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - resultInformation = ResultInformation.DeserializeResultInformation(property.Value); - continue; - } - } - return new ContinuousDtmfRecognitionStopped(callConnectionId.Value, serverCallId.Value, correlationId.Value, operationContext.Value, resultInformation.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionStopped.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionStopped.cs deleted file mode 100644 index 4837bf8255a40..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionStopped.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The ContinuousDtmfRecognitionStopped. - public partial class ContinuousDtmfRecognitionStopped - { - /// Initializes a new instance of ContinuousDtmfRecognitionStopped. - internal ContinuousDtmfRecognitionStopped() - { - } - - /// Initializes a new instance of ContinuousDtmfRecognitionStopped. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code, sub-code and message. - internal ContinuousDtmfRecognitionStopped(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation) - { - CallConnectionId = callConnectionId; - ServerCallId = serverCallId; - CorrelationId = correlationId; - OperationContext = operationContext; - ResultInformation = resultInformation; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneFailed.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneFailed.Serialization.cs deleted file mode 100644 index 1c9adc999ce4d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneFailed.Serialization.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class ContinuousDtmfRecognitionToneFailed - { - internal static ContinuousDtmfRecognitionToneFailed DeserializeContinuousDtmfRecognitionToneFailed(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional callConnectionId = default; - Optional serverCallId = default; - Optional correlationId = default; - Optional resultInformation = default; - Optional operationContext = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("callConnectionId"u8)) - { - callConnectionId = property.Value.GetString(); - continue; - } - if (property.NameEquals("serverCallId"u8)) - { - serverCallId = property.Value.GetString(); - continue; - } - if (property.NameEquals("correlationId"u8)) - { - correlationId = property.Value.GetString(); - continue; - } - if (property.NameEquals("resultInformation"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - resultInformation = ResultInformation.DeserializeResultInformation(property.Value); - continue; - } - if (property.NameEquals("operationContext"u8)) - { - operationContext = property.Value.GetString(); - continue; - } - } - return new ContinuousDtmfRecognitionToneFailed(callConnectionId.Value, serverCallId.Value, correlationId.Value, resultInformation.Value, operationContext.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneFailed.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneFailed.cs deleted file mode 100644 index 83d1320d36260..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneFailed.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The ContinuousDtmfRecognitionToneFailed. - public partial class ContinuousDtmfRecognitionToneFailed - { - /// Initializes a new instance of ContinuousDtmfRecognitionToneFailed. - internal ContinuousDtmfRecognitionToneFailed() - { - } - - /// Initializes a new instance of ContinuousDtmfRecognitionToneFailed. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. - /// Contains the resulting SIP code, sub-code and message. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - internal ContinuousDtmfRecognitionToneFailed(string callConnectionId, string serverCallId, string correlationId, ResultInformation resultInformation, string operationContext) - { - CallConnectionId = callConnectionId; - ServerCallId = serverCallId; - CorrelationId = correlationId; - ResultInformation = resultInformation; - OperationContext = operationContext; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneReceived.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneReceived.Serialization.cs deleted file mode 100644 index 7552e3a70424d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneReceived.Serialization.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class ContinuousDtmfRecognitionToneReceived - { - internal static ContinuousDtmfRecognitionToneReceived DeserializeContinuousDtmfRecognitionToneReceived(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional toneInfo = default; - Optional callConnectionId = default; - Optional serverCallId = default; - Optional correlationId = default; - Optional resultInformation = default; - Optional operationContext = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("toneInfo"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - toneInfo = ToneInfo.DeserializeToneInfo(property.Value); - continue; - } - if (property.NameEquals("callConnectionId"u8)) - { - callConnectionId = property.Value.GetString(); - continue; - } - if (property.NameEquals("serverCallId"u8)) - { - serverCallId = property.Value.GetString(); - continue; - } - if (property.NameEquals("correlationId"u8)) - { - correlationId = property.Value.GetString(); - continue; - } - if (property.NameEquals("resultInformation"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - resultInformation = ResultInformation.DeserializeResultInformation(property.Value); - continue; - } - if (property.NameEquals("operationContext"u8)) - { - operationContext = property.Value.GetString(); - continue; - } - } - return new ContinuousDtmfRecognitionToneReceived(toneInfo.Value, callConnectionId.Value, serverCallId.Value, correlationId.Value, resultInformation.Value, operationContext.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneReceived.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneReceived.cs deleted file mode 100644 index cd2fb276deec2..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionToneReceived.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The ContinuousDtmfRecognitionToneReceived. - public partial class ContinuousDtmfRecognitionToneReceived - { - /// Initializes a new instance of ContinuousDtmfRecognitionToneReceived. - internal ContinuousDtmfRecognitionToneReceived() - { - } - - /// Initializes a new instance of ContinuousDtmfRecognitionToneReceived. - /// Information about Tone. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. Also called ChainId or skype chain ID. - /// Contains the resulting SIP code, sub-code and message. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - internal ContinuousDtmfRecognitionToneReceived(ToneInfo toneInfo, string callConnectionId, string serverCallId, string correlationId, ResultInformation resultInformation, string operationContext) - { - ToneInfo = toneInfo; - CallConnectionId = callConnectionId; - ServerCallId = serverCallId; - CorrelationId = correlationId; - ResultInformation = resultInformation; - OperationContext = operationContext; - } - - /// Information about Tone. - public ToneInfo ToneInfo { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.Serialization.cs index 81b288e5932f3..e54c86fdfade7 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.Serialization.cs @@ -32,10 +32,10 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WritePropertyName("sourceDisplayName"u8); writer.WriteStringValue(SourceDisplayName); } - if (Optional.IsDefined(SourceIdentity)) + if (Optional.IsDefined(Source)) { - writer.WritePropertyName("sourceIdentity"u8); - writer.WriteObjectValue(SourceIdentity); + writer.WritePropertyName("source"u8); + writer.WriteObjectValue(Source); } if (Optional.IsDefined(OperationContext)) { @@ -44,21 +44,6 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) } writer.WritePropertyName("callbackUri"u8); writer.WriteStringValue(CallbackUri); - if (Optional.IsDefined(MediaStreamingConfiguration)) - { - writer.WritePropertyName("mediaStreamingConfiguration"u8); - writer.WriteObjectValue(MediaStreamingConfiguration); - } - if (Optional.IsDefined(AzureCognitiveServicesEndpointUrl)) - { - writer.WritePropertyName("azureCognitiveServicesEndpointUrl"u8); - writer.WriteStringValue(AzureCognitiveServicesEndpointUrl); - } - if (Optional.IsDefined(CustomContext)) - { - writer.WritePropertyName("customContext"u8); - writer.WriteObjectValue(CustomContext); - } writer.WriteEndObject(); } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.cs index b7cd614b126fe..5d4028bb79e3b 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.cs @@ -39,16 +39,10 @@ public CreateCallRequestInternal(IEnumerable targe /// Display name of the call if dialing out to a pstn number. public string SourceDisplayName { get; set; } /// The identifier of the source of the call. - public CommunicationUserIdentifierModel SourceIdentity { get; set; } + public CommunicationUserIdentifierModel Source { get; set; } /// A customer set value used to track the answering of a call. public string OperationContext { get; set; } /// The callback URI. public string CallbackUri { get; } - /// Media Streaming Configuration. - public MediaStreamingOptionsInternal MediaStreamingConfiguration { get; set; } - /// The identifier of the Cognitive Service resource assigned to this call. - public string AzureCognitiveServicesEndpointUrl { get; set; } - /// Used by customer to send custom context to targets. - public CustomContextInternal CustomContext { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CustomContextInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CustomContextInternal.Serialization.cs deleted file mode 100644 index 27f2b7bdc7492..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CustomContextInternal.Serialization.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class CustomContextInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - if (Optional.IsCollectionDefined(VoipHeaders)) - { - writer.WritePropertyName("voipHeaders"u8); - writer.WriteStartObject(); - foreach (var item in VoipHeaders) - { - writer.WritePropertyName(item.Key); - writer.WriteStringValue(item.Value); - } - writer.WriteEndObject(); - } - if (Optional.IsCollectionDefined(SipHeaders)) - { - writer.WritePropertyName("sipHeaders"u8); - writer.WriteStartObject(); - foreach (var item in SipHeaders) - { - writer.WritePropertyName(item.Key); - writer.WriteStringValue(item.Value); - } - writer.WriteEndObject(); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CustomContextInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CustomContextInternal.cs deleted file mode 100644 index dd327b4ae9e5d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CustomContextInternal.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Collections.Generic; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The CustomContext. - internal partial class CustomContextInternal - { - /// Initializes a new instance of CustomContextInternal. - public CustomContextInternal() - { - VoipHeaders = new ChangeTrackingDictionary(); - SipHeaders = new ChangeTrackingDictionary(); - } - - /// Dictionary of <string>. - public IDictionary VoipHeaders { get; } - /// Dictionary of <string>. - public IDictionary SipHeaders { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ExternalStorageInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ExternalStorageInternal.Serialization.cs deleted file mode 100644 index d3b19f82ccfa6..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ExternalStorageInternal.Serialization.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class ExternalStorageInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("storageType"u8); - writer.WriteStringValue(StorageType.ToString()); - if (Optional.IsDefined(BlobStorage)) - { - writer.WritePropertyName("blobStorage"u8); - writer.WriteObjectValue(BlobStorage); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ExternalStorageInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ExternalStorageInternal.cs deleted file mode 100644 index dc5ad1971596f..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ExternalStorageInternal.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The ExternalStorage. - internal partial class ExternalStorageInternal - { - /// Initializes a new instance of ExternalStorageInternal. - /// Defines the type of external storage. - public ExternalStorageInternal(RecordingStorageType storageType) - { - StorageType = storageType; - } - - /// Defines the type of external storage. - public RecordingStorageType StorageType { get; } - /// Defines the blob storage location where the recording will be stored. - public BlobStorageInternal BlobStorage { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GenderType.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GenderType.cs deleted file mode 100644 index 4af066513fd15..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GenderType.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.ComponentModel; - -namespace Azure.Communication.CallAutomation -{ - /// Voice gender type. - public readonly partial struct GenderType : IEquatable - { - private readonly string _value; - - /// Initializes a new instance of . - /// is null. - public GenderType(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - private const string MaleValue = "male"; - private const string FemaleValue = "female"; - - /// male. - public static GenderType Male { get; } = new GenderType(MaleValue); - /// female. - public static GenderType Female { get; } = new GenderType(FemaleValue); - /// Determines if two values are the same. - public static bool operator ==(GenderType left, GenderType right) => left.Equals(right); - /// Determines if two values are not the same. - public static bool operator !=(GenderType left, GenderType right) => !left.Equals(right); - /// Converts a string to a . - public static implicit operator GenderType(string value) => new GenderType(value); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object obj) => obj is GenderType other && Equals(other); - /// - public bool Equals(GenderType other) => string.Equals(_value, other._value, StringComparison.InvariantCultureIgnoreCase); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - /// - public override string ToString() => _value; - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.Serialization.cs index be99cbf7e5dc6..7545da1ae51fb 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.Serialization.cs @@ -19,22 +19,18 @@ internal static GetParticipantsResponseInternal DeserializeGetParticipantsRespon { return null; } - Optional> values = default; + IReadOnlyList value = default; Optional nextLink = default; foreach (var property in element.EnumerateObject()) { - if (property.NameEquals("values"u8)) + if (property.NameEquals("value"u8)) { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } List array = new List(); foreach (var item in property.Value.EnumerateArray()) { array.Add(CallParticipantInternal.DeserializeCallParticipantInternal(item)); } - values = array; + value = array; continue; } if (property.NameEquals("nextLink"u8)) @@ -43,7 +39,7 @@ internal static GetParticipantsResponseInternal DeserializeGetParticipantsRespon continue; } } - return new GetParticipantsResponseInternal(Optional.ToList(values), nextLink.Value); + return new GetParticipantsResponseInternal(value, nextLink.Value); } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.cs index 9890fd592b64d..6c09cc7412199 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/GetParticipantsResponseInternal.cs @@ -5,7 +5,9 @@ #nullable disable +using System; using System.Collections.Generic; +using System.Linq; using Azure.Core; namespace Azure.Communication.CallAutomation @@ -14,22 +16,26 @@ namespace Azure.Communication.CallAutomation internal partial class GetParticipantsResponseInternal { /// Initializes a new instance of GetParticipantsResponseInternal. - internal GetParticipantsResponseInternal() + /// List of the current participants in the call. + /// is null. + internal GetParticipantsResponseInternal(IEnumerable value) { - Values = new ChangeTrackingList(); + Argument.AssertNotNull(value, nameof(value)); + + Value = value.ToList(); } /// Initializes a new instance of GetParticipantsResponseInternal. - /// List of the current participants in the call. + /// List of the current participants in the call. /// Continue of the list of participants. - internal GetParticipantsResponseInternal(IReadOnlyList values, string nextLink) + internal GetParticipantsResponseInternal(IReadOnlyList value, string nextLink) { - Values = values; + Value = value; NextLink = nextLink; } /// List of the current participants in the call. - public IReadOnlyList Values { get; } + public IReadOnlyList Value { get; } /// Continue of the list of participants. public string NextLink { get; } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingAudioChannel.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingAudioChannel.cs deleted file mode 100644 index 30756acd736f7..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingAudioChannel.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.ComponentModel; - -namespace Azure.Communication.CallAutomation -{ - /// Audio channel type to stream, eg. unmixed audio, mixed audio. - public readonly partial struct MediaStreamingAudioChannel : IEquatable - { - private readonly string _value; - - /// Initializes a new instance of . - /// is null. - public MediaStreamingAudioChannel(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - private const string MixedValue = "mixed"; - private const string UnmixedValue = "unmixed"; - - /// mixed. - public static MediaStreamingAudioChannel Mixed { get; } = new MediaStreamingAudioChannel(MixedValue); - /// unmixed. - public static MediaStreamingAudioChannel Unmixed { get; } = new MediaStreamingAudioChannel(UnmixedValue); - /// Determines if two values are the same. - public static bool operator ==(MediaStreamingAudioChannel left, MediaStreamingAudioChannel right) => left.Equals(right); - /// Determines if two values are not the same. - public static bool operator !=(MediaStreamingAudioChannel left, MediaStreamingAudioChannel right) => !left.Equals(right); - /// Converts a string to a . - public static implicit operator MediaStreamingAudioChannel(string value) => new MediaStreamingAudioChannel(value); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object obj) => obj is MediaStreamingAudioChannel other && Equals(other); - /// - public bool Equals(MediaStreamingAudioChannel other) => string.Equals(_value, other._value, StringComparison.InvariantCultureIgnoreCase); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - /// - public override string ToString() => _value; - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingContent.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingContent.cs deleted file mode 100644 index 20aa52094e669..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingContent.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.ComponentModel; - -namespace Azure.Communication.CallAutomation -{ - /// Content type to stream, eg. audio, audio/video. - public readonly partial struct MediaStreamingContent : IEquatable - { - private readonly string _value; - - /// Initializes a new instance of . - /// is null. - public MediaStreamingContent(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - private const string AudioValue = "audio"; - - /// audio. - public static MediaStreamingContent Audio { get; } = new MediaStreamingContent(AudioValue); - /// Determines if two values are the same. - public static bool operator ==(MediaStreamingContent left, MediaStreamingContent right) => left.Equals(right); - /// Determines if two values are not the same. - public static bool operator !=(MediaStreamingContent left, MediaStreamingContent right) => !left.Equals(right); - /// Converts a string to a . - public static implicit operator MediaStreamingContent(string value) => new MediaStreamingContent(value); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object obj) => obj is MediaStreamingContent other && Equals(other); - /// - public bool Equals(MediaStreamingContent other) => string.Equals(_value, other._value, StringComparison.InvariantCultureIgnoreCase); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - /// - public override string ToString() => _value; - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.Serialization.cs deleted file mode 100644 index 424812f03b4cf..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.Serialization.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class MediaStreamingOptionsInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("transportUrl"u8); - writer.WriteStringValue(TransportUrl); - writer.WritePropertyName("transportType"u8); - writer.WriteStringValue(TransportType.ToString()); - writer.WritePropertyName("contentType"u8); - writer.WriteStringValue(ContentType.ToString()); - writer.WritePropertyName("audioChannelType"u8); - writer.WriteStringValue(AudioChannelType.ToString()); - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.cs deleted file mode 100644 index 5d1de2685201c..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// Configuration of Media streaming. - internal partial class MediaStreamingOptionsInternal - { - /// Initializes a new instance of MediaStreamingOptionsInternal. - /// Transport URL for media streaming. - /// The type of transport to be used for media streaming, eg. Websocket. - /// Content type to stream, eg. audio, audio/video. - /// Audio channel type to stream, eg. unmixed audio, mixed audio. - /// is null. - public MediaStreamingOptionsInternal(string transportUrl, MediaStreamingTransport transportType, MediaStreamingContent contentType, MediaStreamingAudioChannel audioChannelType) - { - Argument.AssertNotNull(transportUrl, nameof(transportUrl)); - - TransportUrl = transportUrl; - TransportType = transportType; - ContentType = contentType; - AudioChannelType = audioChannelType; - } - - /// Transport URL for media streaming. - public string TransportUrl { get; } - /// The type of transport to be used for media streaming, eg. Websocket. - public MediaStreamingTransport TransportType { get; } - /// Content type to stream, eg. audio, audio/video. - public MediaStreamingContent ContentType { get; } - /// Audio channel type to stream, eg. unmixed audio, mixed audio. - public MediaStreamingAudioChannel AudioChannelType { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingTransport.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingTransport.cs deleted file mode 100644 index 5f32ea2d2564e..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingTransport.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.ComponentModel; - -namespace Azure.Communication.CallAutomation -{ - /// The type of transport to be used for media streaming, eg. Websocket. - public readonly partial struct MediaStreamingTransport : IEquatable - { - private readonly string _value; - - /// Initializes a new instance of . - /// is null. - public MediaStreamingTransport(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - private const string WebsocketValue = "websocket"; - - /// websocket. - public static MediaStreamingTransport Websocket { get; } = new MediaStreamingTransport(WebsocketValue); - /// Determines if two values are the same. - public static bool operator ==(MediaStreamingTransport left, MediaStreamingTransport right) => left.Equals(right); - /// Determines if two values are not the same. - public static bool operator !=(MediaStreamingTransport left, MediaStreamingTransport right) => !left.Equals(right); - /// Converts a string to a . - public static implicit operator MediaStreamingTransport(string value) => new MediaStreamingTransport(value); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object obj) => obj is MediaStreamingTransport other && Equals(other); - /// - public bool Equals(MediaStreamingTransport other) => string.Equals(_value, other._value, StringComparison.InvariantCultureIgnoreCase); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - /// - public override string ToString() => _value; - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MicrosoftTeamsUserIdentifierModel.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MicrosoftTeamsUserIdentifierModel.cs index 20dfff30e6fed..70d6f6e84a419 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MicrosoftTeamsUserIdentifierModel.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MicrosoftTeamsUserIdentifierModel.cs @@ -26,7 +26,7 @@ public MicrosoftTeamsUserIdentifierModel(string userId) /// Initializes a new instance of MicrosoftTeamsUserIdentifierModel. /// The Id of the Microsoft Teams user. If not anonymous, this is the AAD object Id of the user. /// True if the Microsoft Teams user is anonymous. By default false if missing. - /// The cloud that the Microsoft Teams user belongs to. By default 'public' if missing. + /// The cloud that the Microsoft Teams user belongs to. By default 'public' if missing. internal MicrosoftTeamsUserIdentifierModel(string userId, bool? isAnonymous, CommunicationCloudEnvironmentModel? cloud) { UserId = userId; @@ -38,7 +38,7 @@ internal MicrosoftTeamsUserIdentifierModel(string userId, bool? isAnonymous, Com public string UserId { get; set; } /// True if the Microsoft Teams user is anonymous. By default false if missing. public bool? IsAnonymous { get; set; } - /// The cloud that the Microsoft Teams user belongs to. By default 'public' if missing. + /// The cloud that the Microsoft Teams user belongs to. By default 'public' if missing. public CommunicationCloudEnvironmentModel? Cloud { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsRequestInternal.Serialization.cs deleted file mode 100644 index a522f12aa8f58..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsRequestInternal.Serialization.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class MuteParticipantsRequestInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("targetParticipants"u8); - writer.WriteStartArray(); - foreach (var item in TargetParticipants) - { - writer.WriteObjectValue(item); - } - writer.WriteEndArray(); - if (Optional.IsDefined(OperationContext)) - { - writer.WritePropertyName("operationContext"u8); - writer.WriteStringValue(OperationContext); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsRequestInternal.cs deleted file mode 100644 index 99191de0fe37f..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsRequestInternal.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.Collections.Generic; -using System.Linq; -using Azure.Communication; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The request payload for muting participants from the call. - internal partial class MuteParticipantsRequestInternal - { - /// Initializes a new instance of MuteParticipantsRequestInternal. - /// - /// Participants to be muted from the call. - /// Only ACS Users are supported. - /// - /// is null. - public MuteParticipantsRequestInternal(IEnumerable targetParticipants) - { - Argument.AssertNotNull(targetParticipants, nameof(targetParticipants)); - - TargetParticipants = targetParticipants.ToList(); - } - - /// - /// Participants to be muted from the call. - /// Only ACS Users are supported. - /// - public IList TargetParticipants { get; } - /// Used by customers when calling mid-call actions to correlate the request to the response event. - public string OperationContext { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsResult.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsResult.Serialization.cs deleted file mode 100644 index 617bafaa5485d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsResult.Serialization.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class MuteParticipantsResult - { - internal static MuteParticipantsResult DeserializeMuteParticipantsResult(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional operationContext = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("operationContext"u8)) - { - operationContext = property.Value.GetString(); - continue; - } - } - return new MuteParticipantsResult(operationContext.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsResult.cs deleted file mode 100644 index aca681bb64142..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MuteParticipantsResult.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The response payload for muting participants from the call. - public partial class MuteParticipantsResult - { - /// Initializes a new instance of MuteParticipantsResult. - internal MuteParticipantsResult() - { - } - - /// Initializes a new instance of MuteParticipantsResult. - /// The operation context provided by client. - internal MuteParticipantsResult(string operationContext) - { - OperationContext = operationContext; - } - - /// The operation context provided by client. - public string OperationContext { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.Serialization.cs index 143d2d58fee64..89a0d1a2ee92f 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.Serialization.cs @@ -15,8 +15,13 @@ internal partial class PlayRequestInternal : IUtf8JsonSerializable void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) { writer.WriteStartObject(); - writer.WritePropertyName("playSourceInfo"u8); - writer.WriteObjectValue(PlaySourceInfo); + writer.WritePropertyName("playSources"u8); + writer.WriteStartArray(); + foreach (var item in PlaySources) + { + writer.WriteObjectValue(item); + } + writer.WriteEndArray(); if (Optional.IsCollectionDefined(PlayTo)) { writer.WritePropertyName("playTo"u8); diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.cs index aa290fb3caa34..919c3d9307c35 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.cs @@ -7,6 +7,7 @@ using System; using System.Collections.Generic; +using System.Linq; using Azure.Communication; using Azure.Core; @@ -16,18 +17,18 @@ namespace Azure.Communication.CallAutomation internal partial class PlayRequestInternal { /// Initializes a new instance of PlayRequestInternal. - /// The source of the audio to be played. - /// is null. - public PlayRequestInternal(PlaySourceInternal playSourceInfo) + /// The source of the audio to be played. + /// is null. + public PlayRequestInternal(IEnumerable playSources) { - Argument.AssertNotNull(playSourceInfo, nameof(playSourceInfo)); + Argument.AssertNotNull(playSources, nameof(playSources)); - PlaySourceInfo = playSourceInfo; + PlaySources = playSources.ToList(); PlayTo = new ChangeTrackingList(); } /// The source of the audio to be played. - public PlaySourceInternal PlaySourceInfo { get; } + public IList PlaySources { get; } /// Defines options for playing the audio. public PlayOptionsInternal PlayOptions { get; set; } /// The value to identify context of the operation. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.Serialization.cs index eca5ba2cf7f76..f6ae51776edf3 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.Serialization.cs @@ -15,27 +15,17 @@ internal partial class PlaySourceInternal : IUtf8JsonSerializable void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) { writer.WriteStartObject(); - writer.WritePropertyName("sourceType"u8); - writer.WriteStringValue(SourceType.ToString()); - if (Optional.IsDefined(PlaySourceId)) + writer.WritePropertyName("kind"u8); + writer.WriteStringValue(Kind.ToString()); + if (Optional.IsDefined(PlaySourceCacheId)) { - writer.WritePropertyName("playSourceId"u8); - writer.WriteStringValue(PlaySourceId); + writer.WritePropertyName("playSourceCacheId"u8); + writer.WriteStringValue(PlaySourceCacheId); } - if (Optional.IsDefined(FileSource)) + if (Optional.IsDefined(File)) { - writer.WritePropertyName("fileSource"u8); - writer.WriteObjectValue(FileSource); - } - if (Optional.IsDefined(TextSource)) - { - writer.WritePropertyName("textSource"u8); - writer.WriteObjectValue(TextSource); - } - if (Optional.IsDefined(SsmlSource)) - { - writer.WritePropertyName("ssmlSource"u8); - writer.WriteObjectValue(SsmlSource); + writer.WritePropertyName("file"u8); + writer.WriteObjectValue(File); } writer.WriteEndObject(); } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.cs index c6b69e0b497e6..003ff6fe52a98 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceInternal.cs @@ -11,21 +11,17 @@ namespace Azure.Communication.CallAutomation internal partial class PlaySourceInternal { /// Initializes a new instance of PlaySourceInternal. - /// Defines the type of the play source. - public PlaySourceInternal(PlaySourceTypeInternal sourceType) + /// Defines the type of the play source. + public PlaySourceInternal(PlaySourceTypeInternal kind) { - SourceType = sourceType; + Kind = kind; } /// Defines the type of the play source. - public PlaySourceTypeInternal SourceType { get; } + public PlaySourceTypeInternal Kind { get; } /// Defines the identifier to be used for caching related media. - public string PlaySourceId { get; set; } + public string PlaySourceCacheId { get; set; } /// Defines the file source info to be used for play. - public FileSourceInternal FileSource { get; set; } - /// Defines the text source info to be used for play. - public TextSourceInternal TextSource { get; set; } - /// Defines the ssml(Speech Synthesis Markup Language) source info to be used for play. - public SsmlSourceInternal SsmlSource { get; set; } + public FileSourceInternal File { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceTypeInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceTypeInternal.cs index 19ed421d235d3..2d41ac4bb40ad 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceTypeInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlaySourceTypeInternal.cs @@ -23,15 +23,9 @@ public PlaySourceTypeInternal(string value) } private const string FileValue = "file"; - private const string TextValue = "text"; - private const string SsmlValue = "ssml"; /// file. public static PlaySourceTypeInternal File { get; } = new PlaySourceTypeInternal(FileValue); - /// text. - public static PlaySourceTypeInternal Text { get; } = new PlaySourceTypeInternal(TextValue); - /// ssml. - public static PlaySourceTypeInternal Ssml { get; } = new PlaySourceTypeInternal(SsmlValue); /// Determines if two values are the same. public static bool operator ==(PlaySourceTypeInternal left, PlaySourceTypeInternal right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeChoice.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeChoice.Serialization.cs deleted file mode 100644 index a3aee2b3360fd..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeChoice.Serialization.cs +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Collections.Generic; -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class RecognizeChoice : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("label"u8); - writer.WriteStringValue(Label); - writer.WritePropertyName("phrases"u8); - writer.WriteStartArray(); - foreach (var item in Phrases) - { - writer.WriteStringValue(item); - } - writer.WriteEndArray(); - if (Optional.IsDefined(Tone)) - { - writer.WritePropertyName("tone"u8); - writer.WriteStringValue(Tone.Value.ToString()); - } - writer.WriteEndObject(); - } - - internal static RecognizeChoice DeserializeRecognizeChoice(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - string label = default; - IList phrases = default; - Optional tone = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("label"u8)) - { - label = property.Value.GetString(); - continue; - } - if (property.NameEquals("phrases"u8)) - { - List array = new List(); - foreach (var item in property.Value.EnumerateArray()) - { - array.Add(item.GetString()); - } - phrases = array; - continue; - } - if (property.NameEquals("tone"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - tone = new DtmfTone(property.Value.GetString()); - continue; - } - } - return new RecognizeChoice(label, phrases, Optional.ToNullable(tone)); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeChoice.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeChoice.cs deleted file mode 100644 index cd2a29ac9f467..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeChoice.cs +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.Collections.Generic; -using System.Linq; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The Choice. - public partial class RecognizeChoice - { - /// Initializes a new instance of RecognizeChoice. - /// Identifier for a given choice. - /// List of phrases to recognize. - /// or is null. - public RecognizeChoice(string label, IEnumerable phrases) - { - Argument.AssertNotNull(label, nameof(label)); - Argument.AssertNotNull(phrases, nameof(phrases)); - - Label = label; - Phrases = phrases.ToList(); - } - - /// Initializes a new instance of RecognizeChoice. - /// Identifier for a given choice. - /// List of phrases to recognize. - /// - internal RecognizeChoice(string label, IList phrases, DtmfTone? tone) - { - Label = label; - Phrases = phrases; - Tone = tone; - } - - /// Identifier for a given choice. - public string Label { get; set; } - /// List of phrases to recognize. - public IList Phrases { get; } - /// Gets or sets the tone. - public DtmfTone? Tone { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.Serialization.cs index 5dac41a9dfb6a..1f9cf9d90f72c 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.Serialization.cs @@ -24,10 +24,7 @@ internal static RecognizeCompletedInternal DeserializeRecognizeCompletedInternal Optional operationContext = default; Optional resultInformation = default; Optional recognitionType = default; - Optional collectTonesResult = default; Optional dtmfResult = default; - Optional choiceResult = default; - Optional speechResult = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("callConnectionId"u8)) @@ -68,15 +65,6 @@ internal static RecognizeCompletedInternal DeserializeRecognizeCompletedInternal recognitionType = new CallMediaRecognitionType(property.Value.GetString()); continue; } - if (property.NameEquals("collectTonesResult"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - collectTonesResult = CollectTonesResult.DeserializeCollectTonesResult(property.Value); - continue; - } if (property.NameEquals("dtmfResult"u8)) { if (property.Value.ValueKind == JsonValueKind.Null) @@ -86,26 +74,8 @@ internal static RecognizeCompletedInternal DeserializeRecognizeCompletedInternal dtmfResult = DtmfResult.DeserializeDtmfResult(property.Value); continue; } - if (property.NameEquals("choiceResult"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - choiceResult = ChoiceResult.DeserializeChoiceResult(property.Value); - continue; - } - if (property.NameEquals("speechResult"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - speechResult = SpeechResult.DeserializeSpeechResult(property.Value); - continue; - } } - return new RecognizeCompletedInternal(callConnectionId.Value, serverCallId.Value, correlationId.Value, operationContext.Value, resultInformation.Value, recognitionType, collectTonesResult.Value, dtmfResult.Value, choiceResult.Value, speechResult.Value); + return new RecognizeCompletedInternal(callConnectionId.Value, serverCallId.Value, correlationId.Value, operationContext.Value, resultInformation.Value, recognitionType, dtmfResult.Value); } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.cs index d51b3839657cf..0299325ce1854 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeCompletedInternal.cs @@ -25,14 +25,8 @@ internal RecognizeCompletedInternal() /// Determines the sub-type of the recognize operation. /// In case of cancel operation the this field is not set and is returned empty /// - /// - /// Defines the result for RecognitionType = Dtmf - /// Would be replaced by DtmfResult after server sdk renewed - /// /// Defines the result for RecognitionType = Dtmf. - /// Defines the result for RecognitionType = Choices. - /// Defines the result for RecognitionType = Speech and SpeechOrDtmf. - internal RecognizeCompletedInternal(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation, CallMediaRecognitionType recognitionType, CollectTonesResult collectTonesResult, DtmfResult dtmfResult, ChoiceResult choiceResult, SpeechResult speechResult) + internal RecognizeCompletedInternal(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation, CallMediaRecognitionType recognitionType, DtmfResult dtmfResult) { CallConnectionId = callConnectionId; ServerCallId = serverCallId; @@ -40,21 +34,9 @@ internal RecognizeCompletedInternal(string callConnectionId, string serverCallId OperationContext = operationContext; ResultInformation = resultInformation; RecognitionType = recognitionType; - CollectTonesResult = collectTonesResult; DtmfResult = dtmfResult; - ChoiceResult = choiceResult; - SpeechResult = speechResult; } - /// - /// Defines the result for RecognitionType = Dtmf - /// Would be replaced by DtmfResult after server sdk renewed - /// - public CollectTonesResult CollectTonesResult { get; } /// Defines the result for RecognitionType = Dtmf. public DtmfResult DtmfResult { get; } - /// Defines the result for RecognitionType = Choices. - public ChoiceResult ChoiceResult { get; } - /// Defines the result for RecognitionType = Speech and SpeechOrDtmf. - public SpeechResult SpeechResult { get; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeInputType.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeInputType.cs index d88a45fdda370..bf8f57d152c73 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeInputType.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeInputType.cs @@ -23,18 +23,9 @@ public RecognizeInputType(string value) } private const string DtmfValue = "dtmf"; - private const string SpeechValue = "speech"; - private const string SpeechOrDtmfValue = "speechOrDtmf"; - private const string ChoicesValue = "choices"; /// dtmf. public static RecognizeInputType Dtmf { get; } = new RecognizeInputType(DtmfValue); - /// speech. - public static RecognizeInputType Speech { get; } = new RecognizeInputType(SpeechValue); - /// speechOrDtmf. - public static RecognizeInputType SpeechOrDtmf { get; } = new RecognizeInputType(SpeechOrDtmfValue); - /// choices. - public static RecognizeInputType Choices { get; } = new RecognizeInputType(ChoicesValue); /// Determines if two values are the same. public static bool operator ==(RecognizeInputType left, RecognizeInputType right) => left.Equals(right); /// Determines if two values are not the same. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.Serialization.cs index 64e6574562213..c30a995f668f4 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.Serialization.cs @@ -27,36 +27,11 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) } writer.WritePropertyName("targetParticipant"u8); writer.WriteObjectValue(TargetParticipant); - if (Optional.IsDefined(SpeechLanguage)) - { - writer.WritePropertyName("speechLanguage"u8); - writer.WriteStringValue(SpeechLanguage); - } - if (Optional.IsDefined(SpeechRecognitionModelEndpointId)) - { - writer.WritePropertyName("speechRecognitionModelEndpointId"u8); - writer.WriteStringValue(SpeechRecognitionModelEndpointId); - } if (Optional.IsDefined(DtmfOptions)) { writer.WritePropertyName("dtmfOptions"u8); writer.WriteObjectValue(DtmfOptions); } - if (Optional.IsCollectionDefined(Choices)) - { - writer.WritePropertyName("choices"u8); - writer.WriteStartArray(); - foreach (var item in Choices) - { - writer.WriteObjectValue(item); - } - writer.WriteEndArray(); - } - if (Optional.IsDefined(SpeechOptions)) - { - writer.WritePropertyName("speechOptions"u8); - writer.WriteObjectValue(SpeechOptions); - } writer.WriteEndObject(); } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.cs index 75c7747ba747a..f86b94378fb75 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecognizeOptionsInternal.cs @@ -6,7 +6,6 @@ #nullable disable using System; -using System.Collections.Generic; using Azure.Communication; using Azure.Core; @@ -23,7 +22,6 @@ public RecognizeOptionsInternal(CommunicationIdentifierModel targetParticipant) Argument.AssertNotNull(targetParticipant, nameof(targetParticipant)); TargetParticipant = targetParticipant; - Choices = new ChangeTrackingList(); } /// Determines if we interrupt the prompt and start recognizing. @@ -32,15 +30,7 @@ public RecognizeOptionsInternal(CommunicationIdentifierModel targetParticipant) public int? InitialSilenceTimeoutInSeconds { get; set; } /// Target participant of DTMF tone recognition. public CommunicationIdentifierModel TargetParticipant { get; } - /// Speech language to be recognized, If not set default is en-US. - public string SpeechLanguage { get; set; } - /// Endpoint where the custom model was deployed. - public string SpeechRecognitionModelEndpointId { get; set; } /// Defines configurations for DTMF. public DtmfOptionsInternal DtmfOptions { get; set; } - /// Defines Ivr choices for recognize. - public IList Choices { get; } - /// Defines continuous speech recognition option. - public SpeechOptionsInternal SpeechOptions { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecordingStorageType.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecordingStorageType.cs deleted file mode 100644 index 92c9c1dabb003..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RecordingStorageType.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.ComponentModel; - -namespace Azure.Communication.CallAutomation -{ - /// Defines the type of external storage. - public readonly partial struct RecordingStorageType : IEquatable - { - private readonly string _value; - - /// Initializes a new instance of . - /// is null. - public RecordingStorageType(string value) - { - _value = value ?? throw new ArgumentNullException(nameof(value)); - } - - private const string AcsValue = "acs"; - private const string BlobStorageValue = "blobStorage"; - - /// acs. - public static RecordingStorageType Acs { get; } = new RecordingStorageType(AcsValue); - /// blobStorage. - public static RecordingStorageType BlobStorage { get; } = new RecordingStorageType(BlobStorageValue); - /// Determines if two values are the same. - public static bool operator ==(RecordingStorageType left, RecordingStorageType right) => left.Equals(right); - /// Determines if two values are not the same. - public static bool operator !=(RecordingStorageType left, RecordingStorageType right) => !left.Equals(right); - /// Converts a string to a . - public static implicit operator RecordingStorageType(string value) => new RecordingStorageType(value); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override bool Equals(object obj) => obj is RecordingStorageType other && Equals(other); - /// - public bool Equals(RecordingStorageType other) => string.Equals(_value, other._value, StringComparison.InvariantCultureIgnoreCase); - - /// - [EditorBrowsable(EditorBrowsableState.Never)] - public override int GetHashCode() => _value?.GetHashCode() ?? 0; - /// - public override string ToString() => _value; - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.Serialization.cs index c4d7608f7978b..fce4f5e9a9ee1 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.Serialization.cs @@ -19,11 +19,6 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WriteStringValue(IncomingCallContext); writer.WritePropertyName("target"u8); writer.WriteObjectValue(Target); - if (Optional.IsDefined(CustomContext)) - { - writer.WritePropertyName("customContext"u8); - writer.WriteObjectValue(CustomContext); - } writer.WriteEndObject(); } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.cs index 6f96b735c5e29..68d04df6f6912 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RedirectCallRequestInternal.cs @@ -31,7 +31,5 @@ public RedirectCallRequestInternal(string incomingCallContext, CommunicationIden public string IncomingCallContext { get; } /// The target identity to redirect the call to. public CommunicationIdentifierModel Target { get; } - /// Used by customer to send custom context to targets. - public CustomContextInternal CustomContext { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantFailedInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantFailedInternal.cs index 50e3b793ab411..fbcbb469adaa8 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantFailedInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantFailedInternal.cs @@ -22,7 +22,7 @@ internal RemoveParticipantFailedInternal() /// Server call ID. /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. /// Participant. internal RemoveParticipantFailedInternal(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation, CommunicationIdentifierModel participant) { @@ -42,7 +42,7 @@ internal RemoveParticipantFailedInternal(string callConnectionId, string serverC public string CorrelationId { get; } /// Used by customers when calling mid-call actions to correlate the request to the response event. public string OperationContext { get; } - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. public ResultInformation ResultInformation { get; } /// Participant. public CommunicationIdentifierModel Participant { get; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantSucceededInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantSucceededInternal.cs index c159aac3febf3..3a0e7193c4b92 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantSucceededInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/RemoveParticipantSucceededInternal.cs @@ -22,7 +22,7 @@ internal RemoveParticipantSucceededInternal() /// Server call ID. /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. /// Participant. internal RemoveParticipantSucceededInternal(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation, CommunicationIdentifierModel participant) { @@ -42,7 +42,7 @@ internal RemoveParticipantSucceededInternal(string callConnectionId, string serv public string CorrelationId { get; } /// Used by customers when calling mid-call actions to correlate the request to the response event. public string OperationContext { get; } - /// Contains the resulting SIP code/sub-code and message from NGC services. + /// Contains the resulting SIP code, sub-code and message. public ResultInformation ResultInformation { get; } /// Participant. public CommunicationIdentifierModel Participant { get; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfCompleted.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfCompleted.Serialization.cs deleted file mode 100644 index b7eaaf96bc456..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfCompleted.Serialization.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class SendDtmfCompleted - { - internal static SendDtmfCompleted DeserializeSendDtmfCompleted(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional callConnectionId = default; - Optional serverCallId = default; - Optional correlationId = default; - Optional operationContext = default; - Optional resultInformation = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("callConnectionId"u8)) - { - callConnectionId = property.Value.GetString(); - continue; - } - if (property.NameEquals("serverCallId"u8)) - { - serverCallId = property.Value.GetString(); - continue; - } - if (property.NameEquals("correlationId"u8)) - { - correlationId = property.Value.GetString(); - continue; - } - if (property.NameEquals("operationContext"u8)) - { - operationContext = property.Value.GetString(); - continue; - } - if (property.NameEquals("resultInformation"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - resultInformation = ResultInformation.DeserializeResultInformation(property.Value); - continue; - } - } - return new SendDtmfCompleted(callConnectionId.Value, serverCallId.Value, correlationId.Value, operationContext.Value, resultInformation.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfCompleted.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfCompleted.cs deleted file mode 100644 index 2f35cff847967..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfCompleted.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The SendDtmfCompleted. - public partial class SendDtmfCompleted - { - /// Initializes a new instance of SendDtmfCompleted. - internal SendDtmfCompleted() - { - } - - /// Initializes a new instance of SendDtmfCompleted. - /// Call connection ID. - /// Server call ID. - /// Correlation ID for event to call correlation. - /// Used by customers when calling mid-call actions to correlate the request to the response event. - /// Contains the resulting SIP code, sub-code and message. - internal SendDtmfCompleted(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation) - { - CallConnectionId = callConnectionId; - ServerCallId = serverCallId; - CorrelationId = correlationId; - OperationContext = operationContext; - ResultInformation = resultInformation; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfFailed.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfFailed.Serialization.cs deleted file mode 100644 index 4bf095ef32604..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfFailed.Serialization.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class SendDtmfFailed - { - internal static SendDtmfFailed DeserializeSendDtmfFailed(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional callConnectionId = default; - Optional serverCallId = default; - Optional correlationId = default; - Optional operationContext = default; - Optional resultInformation = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("callConnectionId"u8)) - { - callConnectionId = property.Value.GetString(); - continue; - } - if (property.NameEquals("serverCallId"u8)) - { - serverCallId = property.Value.GetString(); - continue; - } - if (property.NameEquals("correlationId"u8)) - { - correlationId = property.Value.GetString(); - continue; - } - if (property.NameEquals("operationContext"u8)) - { - operationContext = property.Value.GetString(); - continue; - } - if (property.NameEquals("resultInformation"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - resultInformation = ResultInformation.DeserializeResultInformation(property.Value); - continue; - } - } - return new SendDtmfFailed(callConnectionId.Value, serverCallId.Value, correlationId.Value, operationContext.Value, resultInformation.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfRequestInternal.Serialization.cs deleted file mode 100644 index eb1c265cbddfd..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfRequestInternal.Serialization.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class SendDtmfRequestInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("tones"u8); - writer.WriteStartArray(); - foreach (var item in Tones) - { - writer.WriteStringValue(item.ToString()); - } - writer.WriteEndArray(); - writer.WritePropertyName("targetParticipant"u8); - writer.WriteObjectValue(TargetParticipant); - if (Optional.IsDefined(OperationContext)) - { - writer.WritePropertyName("operationContext"u8); - writer.WriteStringValue(OperationContext); - } - if (Optional.IsDefined(CallbackUri)) - { - writer.WritePropertyName("callbackUri"u8); - writer.WriteStringValue(CallbackUri); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfRequestInternal.cs deleted file mode 100644 index b08a0e1e5a68d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SendDtmfRequestInternal.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.Collections.Generic; -using System.Linq; -using Azure.Communication; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The SendDtmfRequest. - internal partial class SendDtmfRequestInternal - { - /// Initializes a new instance of SendDtmfRequestInternal. - /// List of tones to be sent to target participant. - /// Target participant of send DTMF. - /// or is null. - public SendDtmfRequestInternal(IEnumerable tones, CommunicationIdentifierModel targetParticipant) - { - Argument.AssertNotNull(tones, nameof(tones)); - Argument.AssertNotNull(targetParticipant, nameof(targetParticipant)); - - Tones = tones.ToList(); - TargetParticipant = targetParticipant; - } - - /// List of tones to be sent to target participant. - public IList Tones { get; } - /// Target participant of send DTMF. - public CommunicationIdentifierModel TargetParticipant { get; } - /// The value to identify context of the operation. - public string OperationContext { get; set; } - /// The callback URI to override the main callback URI. - public string CallbackUri { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechOptionsInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechOptionsInternal.Serialization.cs deleted file mode 100644 index d13218841d36d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechOptionsInternal.Serialization.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class SpeechOptionsInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - if (Optional.IsDefined(EndSilenceTimeoutInMs)) - { - writer.WritePropertyName("endSilenceTimeoutInMs"u8); - writer.WriteNumberValue(EndSilenceTimeoutInMs.Value); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechOptionsInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechOptionsInternal.cs deleted file mode 100644 index 46988d0eff6ac..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechOptionsInternal.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// Options for continuous speech recognition. - internal partial class SpeechOptionsInternal - { - /// Initializes a new instance of SpeechOptionsInternal. - public SpeechOptionsInternal() - { - } - - /// The length of end silence when user stops speaking and cogservice send response. - public long? EndSilenceTimeoutInMs { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechResult.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechResult.Serialization.cs deleted file mode 100644 index 4a2cb48576233..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechResult.Serialization.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class SpeechResult - { - internal static SpeechResult DeserializeSpeechResult(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional speech = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("speech"u8)) - { - speech = property.Value.GetString(); - continue; - } - } - return new SpeechResult(speech.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechResult.cs deleted file mode 100644 index 627320d3b2859..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SpeechResult.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The speech status as a result. - public partial class SpeechResult - { - /// Initializes a new instance of SpeechResult. - internal SpeechResult() - { - } - - /// Initializes a new instance of SpeechResult. - /// The recognized speech in string. - internal SpeechResult(string speech) - { - Speech = speech; - } - - /// The recognized speech in string. - public string Speech { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SsmlSourceInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SsmlSourceInternal.Serialization.cs deleted file mode 100644 index 0794b308c93ae..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SsmlSourceInternal.Serialization.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class SsmlSourceInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("ssmlText"u8); - writer.WriteStringValue(SsmlText); - if (Optional.IsDefined(CustomVoiceEndpointId)) - { - writer.WritePropertyName("customVoiceEndpointId"u8); - writer.WriteStringValue(CustomVoiceEndpointId); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SsmlSourceInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SsmlSourceInternal.cs deleted file mode 100644 index 3ad406964e336..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/SsmlSourceInternal.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The SsmlSource. - internal partial class SsmlSourceInternal - { - /// Initializes a new instance of SsmlSourceInternal. - /// Ssml string for the cognitive service to be played. - /// is null. - public SsmlSourceInternal(string ssmlText) - { - Argument.AssertNotNull(ssmlText, nameof(ssmlText)); - - SsmlText = ssmlText; - } - - /// Ssml string for the cognitive service to be played. - public string SsmlText { get; } - /// Endpoint where the custom voice was deployed. - public string CustomVoiceEndpointId { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.Serialization.cs index 233a426655f40..6cf9b160497d8 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.Serialization.cs @@ -57,11 +57,6 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) } writer.WriteEndArray(); } - if (Optional.IsDefined(ExternalStorage)) - { - writer.WritePropertyName("externalStorage"u8); - writer.WriteObjectValue(ExternalStorage); - } writer.WriteEndObject(); } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.cs index f6339c95c77a8..597d9d974fd75 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/StartCallRecordingRequestInternal.cs @@ -51,7 +51,5 @@ public StartCallRecordingRequestInternal(CallLocatorInternal callLocator) /// /// /// public IList ChannelAffinity { get; } - /// Optional property to specify location where recording will be stored. - public ExternalStorageInternal ExternalStorage { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TextSourceInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TextSourceInternal.Serialization.cs deleted file mode 100644 index 27ad60ec81075..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TextSourceInternal.Serialization.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class TextSourceInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("text"u8); - writer.WriteStringValue(Text); - if (Optional.IsDefined(SourceLocale)) - { - writer.WritePropertyName("sourceLocale"u8); - writer.WriteStringValue(SourceLocale); - } - if (Optional.IsDefined(VoiceGender)) - { - writer.WritePropertyName("voiceGender"u8); - writer.WriteStringValue(VoiceGender.Value.ToString()); - } - if (Optional.IsDefined(VoiceName)) - { - writer.WritePropertyName("voiceName"u8); - writer.WriteStringValue(VoiceName); - } - if (Optional.IsDefined(CustomVoiceEndpointId)) - { - writer.WritePropertyName("customVoiceEndpointId"u8); - writer.WriteStringValue(CustomVoiceEndpointId); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TextSourceInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TextSourceInternal.cs deleted file mode 100644 index 1d18a5067e12d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TextSourceInternal.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The TextSource. - internal partial class TextSourceInternal - { - /// Initializes a new instance of TextSourceInternal. - /// Text for the cognitive service to be played. - /// is null. - public TextSourceInternal(string text) - { - Argument.AssertNotNull(text, nameof(text)); - - Text = text; - } - - /// Text for the cognitive service to be played. - public string Text { get; } - /// - /// Source language locale to be played - /// Refer to available locales here: <seealso href="https://learn.microsoft.com/en-us/azure/cognitive-services/speech-service/language-support?tabs=stt-tts" /> - /// - public string SourceLocale { get; set; } - /// Voice gender type. - public GenderType? VoiceGender { get; set; } - /// - /// Voice name to be played - /// Refer to available Text-to-speech voices here: <seealso href="https://learn.microsoft.com/en-us/azure/cognitive-services/speech-service/language-support?tabs=stt-tts" /> - /// - public string VoiceName { get; set; } - /// Endpoint where the custom voice was deployed. - public string CustomVoiceEndpointId { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ToneInfo.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ToneInfo.Serialization.cs deleted file mode 100644 index 1f8bbf9bfeb6d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ToneInfo.Serialization.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class ToneInfo - { - internal static ToneInfo DeserializeToneInfo(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - int sequenceId = default; - DtmfTone tone = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("sequenceId"u8)) - { - sequenceId = property.Value.GetInt32(); - continue; - } - if (property.NameEquals("tone"u8)) - { - tone = new DtmfTone(property.Value.GetString()); - continue; - } - } - return new ToneInfo(sequenceId, tone); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ToneInfo.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ToneInfo.cs deleted file mode 100644 index 9d8bec0d80132..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ToneInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The information about the tone. - public partial class ToneInfo - { - /// Initializes a new instance of ToneInfo. - /// The sequence id which can be used to determine if the same tone was played multiple times or if any tones were missed. - /// - internal ToneInfo(int sequenceId, DtmfTone tone) - { - SequenceId = sequenceId; - Tone = tone; - } - - /// The sequence id which can be used to determine if the same tone was played multiple times or if any tones were missed. - public int SequenceId { get; } - /// Gets the tone. - public DtmfTone Tone { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.Serialization.cs index 4209a8a10b308..6e78a4db3a09f 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.Serialization.cs @@ -17,11 +17,6 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WriteStartObject(); writer.WritePropertyName("targetParticipant"u8); writer.WriteObjectValue(TargetParticipant); - if (Optional.IsDefined(CustomContext)) - { - writer.WritePropertyName("customContext"u8); - writer.WriteObjectValue(CustomContext); - } if (Optional.IsDefined(OperationContext)) { writer.WritePropertyName("operationContext"u8); diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.cs index 0fdd0ceb227e9..35a0e3c518125 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/TransferToParticipantRequestInternal.cs @@ -26,8 +26,6 @@ public TransferToParticipantRequestInternal(CommunicationIdentifierModel targetP /// The identity of the target where call should be transferred to. public CommunicationIdentifierModel TargetParticipant { get; } - /// Used by customer to send custom context to targets. - public CustomContextInternal CustomContext { get; set; } /// Used by customers when calling mid-call actions to correlate the request to the response event. public string OperationContext { get; set; } /// Transferee is the participant who is transferring the call. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsRequestInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsRequestInternal.Serialization.cs deleted file mode 100644 index 059a7742b5551..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsRequestInternal.Serialization.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - internal partial class UnmuteParticipantsRequestInternal : IUtf8JsonSerializable - { - void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) - { - writer.WriteStartObject(); - writer.WritePropertyName("targetParticipants"u8); - writer.WriteStartArray(); - foreach (var item in TargetParticipants) - { - writer.WriteObjectValue(item); - } - writer.WriteEndArray(); - if (Optional.IsDefined(OperationContext)) - { - writer.WritePropertyName("operationContext"u8); - writer.WriteStringValue(OperationContext); - } - writer.WriteEndObject(); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsRequestInternal.cs deleted file mode 100644 index 5f8a73cd3f746..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsRequestInternal.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System; -using System.Collections.Generic; -using System.Linq; -using Azure.Communication; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// The request payload for unmuting participant from the call. - internal partial class UnmuteParticipantsRequestInternal - { - /// Initializes a new instance of UnmuteParticipantsRequestInternal. - /// - /// Participants to be unmuted from the call. - /// Only ACS Users are supported. - /// - /// is null. - public UnmuteParticipantsRequestInternal(IEnumerable targetParticipants) - { - Argument.AssertNotNull(targetParticipants, nameof(targetParticipants)); - - TargetParticipants = targetParticipants.ToList(); - } - - /// - /// Participants to be unmuted from the call. - /// Only ACS Users are supported. - /// - public IList TargetParticipants { get; } - /// Used by customers when calling mid-call actions to correlate the request to the response event. - public string OperationContext { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsResult.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsResult.Serialization.cs deleted file mode 100644 index a23c2a91a993f..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsResult.Serialization.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - public partial class UnmuteParticipantsResult - { - internal static UnmuteParticipantsResult DeserializeUnmuteParticipantsResult(JsonElement element) - { - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - Optional operationContext = default; - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("operationContext"u8)) - { - operationContext = property.Value.GetString(); - continue; - } - } - return new UnmuteParticipantsResult(operationContext.Value); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsResult.cs deleted file mode 100644 index 80dc112b86e36..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/UnmuteParticipantsResult.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -// - -#nullable disable - -namespace Azure.Communication.CallAutomation -{ - /// The response payload for unmuting participants from the call. - public partial class UnmuteParticipantsResult - { - /// Initializes a new instance of UnmuteParticipantsResult. - internal UnmuteParticipantsResult() - { - } - - /// Initializes a new instance of UnmuteParticipantsResult. - /// The operation context provided by client. - internal UnmuteParticipantsResult(string operationContext) - { - OperationContext = operationContext; - } - - /// The operation context provided by client. - public string OperationContext { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/AnswerCallOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/AnswerCallOptions.cs index 9b52e394413a6..c5edc6f2edfcb 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/AnswerCallOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/AnswerCallOptions.cs @@ -31,11 +31,6 @@ public AnswerCallOptions(string incomingCallContext, Uri callbackUri) /// public Uri CallbackUri { get; } - /// - /// Media Streaming Configuration. - /// - public MediaStreamingOptions MediaStreamingOptions { get; set; } - /// /// The endpoint uri of the Azure Cognitive Services resource attached /// diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/BlobStorage.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/BlobStorage.cs deleted file mode 100644 index adb0a435cd638..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/BlobStorage.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// Used to specify Blob container url for storing recordings. - /// - public class BlobStorage : ExternalStorage - { - /// - /// Url of a container or a location within a container. - /// - public Uri ContainerUri { get; } - - /// - /// Initializes a new instance of BlobStorage. - /// - /// Url of a container or a location within a container. - public BlobStorage(Uri containerUri) - { - Argument.AssertNotNull(containerUri, nameof(containerUri)); - ContainerUri = containerUri; - StorageType = RecordingStorageType.BlobStorage; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/BlobStorageInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/BlobStorageInternal.cs deleted file mode 100644 index 80ddf8188d838..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/BlobStorageInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("BlobStorage")] - internal partial class BlobStorageInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs index 1c125a42848c1..c838c6816af0e 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs @@ -19,8 +19,7 @@ internal CallConnectionProperties( CommunicationIdentifier sourceIdentity, PhoneNumberIdentifier sourceCallerIdNumber, string sourceDisplayName, - string mediaSubscriptionId - ) + CommunicationIdentifier answeredBy) { CallConnectionId = callConnectionId; ServerCallId = serverCallId; @@ -30,7 +29,7 @@ string mediaSubscriptionId Source = sourceIdentity; SourceCallerIdNumber = sourceCallerIdNumber; SourceDisplayName = sourceDisplayName; - MediaSubscriptionId = mediaSubscriptionId; + AnsweredBy = new CommunicationUserIdentifier(answeredBy.RawId); } internal CallConnectionProperties(CallConnectionPropertiesInternal callConnectionPropertiesDtoInternal) @@ -49,11 +48,10 @@ internal CallConnectionProperties(CallConnectionPropertiesInternal callConnectio } CallbackUri = new Uri(callConnectionPropertiesDtoInternal.CallbackUri); - MediaSubscriptionId = callConnectionPropertiesDtoInternal.MediaSubscriptionId; - Source = callConnectionPropertiesDtoInternal.SourceIdentity == null? null : CommunicationIdentifierSerializer.Deserialize(callConnectionPropertiesDtoInternal.SourceIdentity); + Source = callConnectionPropertiesDtoInternal.Source == null? null : CommunicationIdentifierSerializer.Deserialize(callConnectionPropertiesDtoInternal.Source); SourceDisplayName = callConnectionPropertiesDtoInternal.SourceDisplayName; CorrelationId = callConnectionPropertiesDtoInternal.CorrelationId; - AnsweredBy = callConnectionPropertiesDtoInternal.AnsweredByIdentifier == null? null : new CommunicationUserIdentifier(callConnectionPropertiesDtoInternal.AnsweredByIdentifier.Id); + AnsweredBy = callConnectionPropertiesDtoInternal.AnsweredBy == null? null : new CommunicationUserIdentifier(callConnectionPropertiesDtoInternal.AnsweredBy.Id); if (callConnectionPropertiesDtoInternal.SourceCallerIdNumber != null) { @@ -71,8 +69,6 @@ internal CallConnectionProperties(CallConnectionPropertiesInternal callConnectio public CallConnectionState CallConnectionState { get; } /// The callback URI. public Uri CallbackUri { get; } - /// SubscriptionId for media streaming. - public string MediaSubscriptionId { get; } /// /// Caller ID phone number to appear on the invitee. /// @@ -90,7 +86,6 @@ internal CallConnectionProperties(CallConnectionPropertiesInternal callConnectio /// The correlation ID. /// public string CorrelationId { get; } - /// /// Identity of the answering entity. Only populated when identity is provided in the request. /// diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallInvite.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallInvite.cs index c34ddbbf08bcc..619678381ee25 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallInvite.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallInvite.cs @@ -19,7 +19,6 @@ public CallInvite(PhoneNumberIdentifier targetPhoneNumberIdentity, PhoneNumberId { Target = targetPhoneNumberIdentity; SourceCallerIdNumber = callerIdNumber; - CustomContext = new CustomContext(sipHeaders: new Dictionary(), voipHeaders: null); } /// @@ -29,7 +28,6 @@ public CallInvite(PhoneNumberIdentifier targetPhoneNumberIdentity, PhoneNumberId public CallInvite(CommunicationUserIdentifier targetIdentity) { Target = targetIdentity; - CustomContext = new CustomContext(sipHeaders: null, voipHeaders: new Dictionary()); } /// @@ -39,7 +37,6 @@ public CallInvite(CommunicationUserIdentifier targetIdentity) public CallInvite(MicrosoftTeamsUserIdentifier targetIdentity) { Target = targetIdentity; - CustomContext = new CustomContext(sipHeaders: null, voipHeaders: new Dictionary()); } /// diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallMediaRecognizeOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallMediaRecognizeOptions.cs index fb8e810217c6c..7dec3acb8161c 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallMediaRecognizeOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallMediaRecognizeOptions.cs @@ -64,10 +64,5 @@ protected CallMediaRecognizeOptions(RecognizeInputType inputType, CommunicationI /// Endpoint where the speech custom model was deployed. public string SpeechModelEndpointId { get; set; } - - /// - /// The callback URI override for this transfer call request. - /// - public Uri CallbackUri { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ChannelAffinity.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/ChannelAffinity.cs index bb8e1182e7d89..1fc0c7e8950b0 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ChannelAffinity.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/ChannelAffinity.cs @@ -26,7 +26,7 @@ public ChannelAffinity(CommunicationIdentifier participant) /// The identifier for the participant whose bitstream will be written to the channel. /// represented by the channel number. /// - public CommunicationIdentifier Participant { get;} + public CommunicationIdentifier Participant { get; } /// Channel number to which bitstream from a particular participant will be written. public int? Channel { get; set; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CommunicationCallAutomationModelFactory.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CommunicationCallAutomationModelFactory.cs index 16f7299a524ff..e07e3ba7ffa35 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CommunicationCallAutomationModelFactory.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CommunicationCallAutomationModelFactory.cs @@ -39,7 +39,7 @@ public static AnswerCallResult AnswerCallResult(CallConnection callConnection = /// Source identity. /// Caller ID phone number to appear on the invitee. /// Display name to appear on the invitee. - /// The subscriptionId for Media Streaming. + /// AnsweredBy identity. /// A new instance for mocking. public static CallConnectionProperties CallConnectionProperties( string callConnectionId = default, @@ -50,9 +50,9 @@ public static CallConnectionProperties CallConnectionProperties( CommunicationIdentifier sourceIdentity = default, PhoneNumberIdentifier sourceCallerIdNumber = default, string sourceDisplayName = default, - string mediaSubscriptionId = default) + CommunicationIdentifier answeredBy = default) { - return new CallConnectionProperties(callConnectionId, serverCallId, targets, callConnectionState, callbackUri, sourceIdentity, sourceCallerIdNumber, sourceDisplayName, mediaSubscriptionId); + return new CallConnectionProperties(callConnectionId, serverCallId, targets, callConnectionState, callbackUri, sourceIdentity, sourceCallerIdNumber, sourceDisplayName, answeredBy); } /// Initializes a new instance of CallParticipant. @@ -193,7 +193,7 @@ public static RemoveParticipantSucceeded RemoveParticipantSucceeded(string callC /// Determines the sub-type of the recognize operation. /// In case of cancel operation the this field is not set and is returned empty /// - /// Defines the result for RecognitionType = Dtmf,Choice,Speech. + /// Defines the result for RecognitionType = Dtmf. /// A new instance for mocking. public static RecognizeCompleted RecognizeCompleted(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, ResultInformation resultInformation = null, CallMediaRecognitionType recognitionType = default, RecognizeResult recognizeResult = null) { diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ContinuousDtmfRecognitionRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/ContinuousDtmfRecognitionRequestInternal.cs deleted file mode 100644 index ff04d533b00f3..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ContinuousDtmfRecognitionRequestInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("ContinuousDtmfRecognitionRequest")] - internal partial class ContinuousDtmfRecognitionRequestInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs index 228b4545aaaab..b434a34f3a364 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs @@ -35,11 +35,6 @@ public CreateCallOptions(CallInvite callInvite, Uri callbackUri) /// public string OperationContext { get; set; } - /// - /// Media Streaming Configuration. - /// - public MediaStreamingOptions MediaStreamingOptions { get; set; } - /// /// The endpoint URL of the Azure Cognitive Services resource attached /// diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs index e392efff8f491..0bb69d956fdb0 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs @@ -47,19 +47,9 @@ public CreateGroupCallOptions(IEnumerable targets, Uri /// public string OperationContext { get; set; } - /// - /// Media Streaming Configuration. - /// - public MediaStreamingOptions MediaStreamingOptions { get; set; } - /// /// The endpoint URL of the Azure Cognitive Services resource attached /// public Uri AzureCognitiveServicesEndpointUri { get; set; } - - /// - /// The Custom Context which contains SIP and voip headers. - /// - public CustomContext CustomContext { get; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CustomContextInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CustomContextInternal.cs deleted file mode 100644 index 14141d2f55b66..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CustomContextInternal.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections; -using System.Collections.Generic; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("CustomContext")] - internal partial class CustomContextInternal - { - public CustomContextInternal(IDictionary sipHeaders, IDictionary voipHeaders) - { - this.SipHeaders = sipHeaders; - this.VoipHeaders = voipHeaders; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CallAutomationEventParser.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CallAutomationEventParser.cs index 6fdd0f83362b3..8001502e0ffcc 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CallAutomationEventParser.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CallAutomationEventParser.cs @@ -134,24 +134,6 @@ private static CallAutomationEventBase Deserialize(string eventData, string type return SendDtmfCompleted.Deserialize(eventData); case nameof(SendDtmfFailed): return SendDtmfFailed.Deserialize(eventData); - #region Dialog - case nameof(DialogCompleted): - return DialogCompleted.Deserialize(eventData); - case nameof(DialogFailed): - return DialogFailed.Deserialize(eventData); - case nameof(DialogConsent): - return DialogConsent.Deserialize(eventData); - case nameof(DialogStarted): - return DialogStarted.Deserialize(eventData); - case nameof(DialogHangup): - return DialogHangup.Deserialize(eventData); - case nameof(DialogTransfer): - return DialogTransfer.Deserialize(eventData); - case nameof(DialogSensitivityUpdate): - return DialogSensitivityUpdate.Deserialize(eventData); - case nameof(DialogLanguageChange): - return DialogLanguageChange.Deserialize(eventData); - #endregion default: return null; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ChoiceResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ChoiceResult.cs deleted file mode 100644 index d558897b16604..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ChoiceResult.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("ChoiceResult", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class ChoiceResult : RecognizeResult - { - /// - /// The RecognizeResultType of this RecognizeResult. - /// - public override RecognizeResultType ResultType => RecognizeResultType.ChoiceResult; - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CollectTonesResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CollectTonesResult.cs deleted file mode 100644 index 5037871e2d4d8..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CollectTonesResult.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("CollectTonesResult", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class CollectTonesResult : RecognizeResult - { - /// - /// The Tones colelcted. - /// - [CodeGenMember("Tones")] - public IReadOnlyList Tones { get; } - - /// - /// The RecognizeResultType of this RecognizeResult. - /// - public override RecognizeResultType ResultType => RecognizeResultType.CollectTonesResult; - - /// - /// Convert the collection of tones to a string like "12345#". - /// - public string ConvertToString() - { - return string.Join("", Tones.Select(x => x.ToChar())); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionStopped.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionStopped.cs deleted file mode 100644 index db77588bebcd4..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionStopped.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The ContinuousDtmfRecognitionStopped event. - /// - - [CodeGenModel("ContinuousDtmfRecognitionStopped", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class ContinuousDtmfRecognitionStopped : CallAutomationEventBase - { - /// - /// Deserialize event. - /// - /// The json content. - /// The new object. - public static ContinuousDtmfRecognitionStopped Deserialize(string content) - { - using var document = JsonDocument.Parse(content); - JsonElement element = document.RootElement; - - return DeserializeContinuousDtmfRecognitionStopped(element); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionToneFailed.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionToneFailed.cs deleted file mode 100644 index 3c557859dd54b..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionToneFailed.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The ContinuousDtmfRecognitionToneFailed event. - /// - - [CodeGenModel("ContinuousDtmfRecognitionToneFailed", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class ContinuousDtmfRecognitionToneFailed : CallAutomationEventBase - { - /// - /// Deserialize event. - /// - /// The json content. - /// The new object. - public static ContinuousDtmfRecognitionToneFailed Deserialize(string content) - { - using var document = JsonDocument.Parse(content); - JsonElement element = document.RootElement; - - return DeserializeContinuousDtmfRecognitionToneFailed(element); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionToneReceived.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionToneReceived.cs deleted file mode 100644 index 1b90dd3082d9d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ContinuousDtmfRecognitionToneReceived.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The ContinuousDtmfRecognitionToneReceived event. - /// - - [CodeGenModel("ContinuousDtmfRecognitionToneReceived", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class ContinuousDtmfRecognitionToneReceived : CallAutomationEventBase - { - /// - /// Deserialize event. - /// - /// The json content. - /// The new object. - public static ContinuousDtmfRecognitionToneReceived Deserialize(string content) - { - using var document = JsonDocument.Parse(content); - JsonElement element = document.RootElement; - - return DeserializeContinuousDtmfRecognitionToneReceived(element); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/DtmfResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/DtmfResult.cs index b0b4a47d038c2..85b25ff5bee77 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/DtmfResult.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/DtmfResult.cs @@ -30,4 +30,4 @@ public string ConvertToString() return string.Join("", Tones.Select(x => x.ToChar())); } } -} \ No newline at end of file +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/MediaEventReasonCode.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/MediaEventReasonCode.cs index 686b054272e26..e13808d9cec4c 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/MediaEventReasonCode.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/MediaEventReasonCode.cs @@ -24,18 +24,11 @@ public MediaEventReasonCode(string value) private const string RecognizeInterDigitTimedOutValue = "8532"; private const string RecognizeDtmfOptionMatchedValue = "8533"; private const string RecognizePlayPromptFailedValue = "8511"; - private const string RecognizeMaxDigitsReceivedValue = "8531"; private const string RecognizeIncorrectToneDetectedValue = "8534"; private const string RecognizeStopToneDetectedValue = "8514"; - private const string RecognizeSpeechOptionMatchedValue = "8545"; - private const string RecognizeSpeechOptionNotMatchedValue = "8547"; - private const string RecognizeSpeechNotRecognizedValue = "8563"; - private const string RecognizeSpeechServiceConnectionErrorValue = "8564"; - private const string PlayDownloadFailedValue = "8536"; private const string PlayInvalidFileFormatValue = "8535"; - private const string PlayCognitiveServicesPlayErrorValue = "8565"; private const string CompletedSuccessfullyValue = "0"; private const string UnspecifiedErrorValue = "9999"; @@ -54,24 +47,14 @@ public MediaEventReasonCode(string value) /// Action failed, play source not working. public static MediaEventReasonCode RecognizeDtmfOptionMatched { get; } = new MediaEventReasonCode(RecognizeDtmfOptionMatchedValue); - /// Speech option matched. - public static MediaEventReasonCode RecognizeSpeechOptionMatched { get; } = new MediaEventReasonCode(RecognizeSpeechOptionMatchedValue); - /// Speech option not matched. - public static MediaEventReasonCode RecognizeSpeechOptionNotMatched { get; } = new MediaEventReasonCode(RecognizeSpeechOptionNotMatchedValue); - /// Recognize with Choice that incorrect tone detected. - public static MediaEventReasonCode RecognizeIncorrectToneDetected { get; } = new MediaEventReasonCode(RecognizeIncorrectToneDetectedValue); - /// Speech not recognized. - public static MediaEventReasonCode RecognizeSpeechNotRecognized { get; } = new MediaEventReasonCode(RecognizeSpeechNotRecognizedValue); - /// Speech service connection error. - public static MediaEventReasonCode RecognizeSpeechServiceConnectionError { get; } = new MediaEventReasonCode(RecognizeSpeechServiceConnectionErrorValue); + /// Recognize with DTMF that incorrect tone detected. + public static MediaEventReasonCode RecognizeIncorrectToneDetected { get; } = new MediaEventReasonCode(RecognizeIncorrectToneDetectedValue); /// Action failed, file could not be downloaded. public static MediaEventReasonCode PlayDownloadFailed { get; } = new MediaEventReasonCode(PlayDownloadFailedValue); /// Action failed, file could not be downloaded. public static MediaEventReasonCode PlayInvalidFileFormat { get; } = new MediaEventReasonCode(PlayInvalidFileFormatValue); - /// Action failed, cognitive service error. - public static MediaEventReasonCode PlayCognitiveServicesPlayError { get; } = new MediaEventReasonCode(PlayCognitiveServicesPlayErrorValue); /// Action completed successfully. public static MediaEventReasonCode CompletedSuccessfully { get; } = new MediaEventReasonCode (CompletedSuccessfullyValue); diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompleted.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompleted.cs index 4eb372e6dc7f1..198f9fa065062 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompleted.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompleted.cs @@ -134,18 +134,6 @@ public string Serialize() writer.WritePropertyName("dtmfResult"); JsonSerializer.Serialize(writer, dtmfResult, jsonSeializerOptionForObject); } - else if (RecognitionType == CallMediaRecognitionType.Choices) - { - ChoiceResult choiceResult = (ChoiceResult)RecognizeResult; - writer.WritePropertyName("choiceResult"); - JsonSerializer.Serialize(writer, choiceResult, jsonSeializerOptionForObject); - } - else if (RecognitionType == CallMediaRecognitionType.Speech) - { - SpeechResult speechResult = (SpeechResult)RecognizeResult; - writer.WritePropertyName("speechResult"); - JsonSerializer.Serialize(writer, speechResult, jsonSeializerOptionForObject); - } writer.WriteEndObject(); writer.Flush(); diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompletedInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompletedInternal.cs index 295749867d6b8..3c57b9364434d 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompletedInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeCompletedInternal.cs @@ -18,6 +18,26 @@ internal partial class RecognizeCompletedInternal : CallAutomationEventBase /// public MediaEventReasonCode ReasonCode { get; internal set; } + /// Initializes a new instance of RecognizeCompleted. + /// Call connection ID. + /// Server call ID. + /// Correlation ID for event to call correlation. Also called ChainId for skype chain ID. + /// Used by customers when calling mid-call actions to correlate the request to the response event. + /// Contains the resulting SIP code/sub-code and message from NGC services. + /// + /// Determines the sub-type of the recognize operation. + /// In case of cancel operation the this field is not set and is returned empty + /// + internal RecognizeCompletedInternal(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation, CallMediaRecognitionType recognitionType) + { + CallConnectionId = callConnectionId; + ServerCallId = serverCallId; + CorrelationId = correlationId; + OperationContext = operationContext; + ResultInformation = resultInformation; + RecognitionType = recognitionType; + } + /// /// The recognition type. /// diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeResult.cs index d08529e910787..aa2103e942ab0 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeResult.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/RecognizeResult.cs @@ -6,7 +6,7 @@ namespace Azure.Communication.CallAutomation { /// - /// The Recognize result which could be tone or choice result. + /// The Recognize result which could be tone result. /// public abstract class RecognizeResult { diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SendDtmfCompleted.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SendDtmfCompleted.cs deleted file mode 100644 index 323390ccfbe5d..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SendDtmfCompleted.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The SendDtmfCompleted event. - /// - - [CodeGenModel("SendDtmfCompleted", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class SendDtmfCompleted : CallAutomationEventBase - { - /// - /// Deserialize event. - /// - /// The json content. - /// The new object. - public static SendDtmfCompleted Deserialize(string content) - { - using var document = JsonDocument.Parse(content); - JsonElement element = document.RootElement; - - return DeserializeSendDtmfCompleted(element); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SendDtmfFailed.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SendDtmfFailed.cs deleted file mode 100644 index f957c2b3a6e82..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SendDtmfFailed.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Text.Json; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The SendDtmfFailed event. - /// - - [CodeGenModel("SendDtmfFailed", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class SendDtmfFailed : CallAutomationEventBase - { - /// - /// Deserialize event. - /// - /// The json content. - /// The new object. - public static SendDtmfFailed Deserialize(string content) - { - using var document = JsonDocument.Parse(content); - JsonElement element = document.RootElement; - - return DeserializeSendDtmfFailed(element); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SpeechResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SpeechResult.cs deleted file mode 100644 index cb3890826d75f..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/SpeechResult.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Communication.CallAutomation; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("SpeechResult", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class SpeechResult : RecognizeResult - { - /// - /// The RecognizeResultType of this RecognizeResult. - /// - public override RecognizeResultType ResultType => RecognizeResultType.SpeechResult; - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ToneInfo.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ToneInfo.cs deleted file mode 100644 index cba371d155e3c..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/ToneInfo.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("ToneInfo", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class ToneInfo - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ExternalStorage.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/ExternalStorage.cs deleted file mode 100644 index f6f7a70a48e43..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ExternalStorage.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Azure.Communication.CallAutomation -{ - /// - /// Abstract base class used for different storage options used for storing call recording. - /// - public abstract class ExternalStorage - { - /// - /// Identifier of storage type. - /// - public RecordingStorageType StorageType { get; protected set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ExternalStorageInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/ExternalStorageInternal.cs deleted file mode 100644 index c6fe165fdd9a8..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/ExternalStorageInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("ExternalStorage")] - internal partial class ExternalStorageInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/GenderType.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/GenderType.cs deleted file mode 100644 index 89274e4e5a236..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/GenderType.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; -using System.Text.Json.Serialization; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The possible Dtmf Tones. - /// - [CodeGenModel("Gender", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - [JsonConverter(typeof(EquatableEnumJsonConverter))] - public readonly partial struct GenderType - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingAudioData.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingAudioData.cs deleted file mode 100644 index 4a47ab5fb064c..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingAudioData.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; - -namespace Azure.Communication.CallAutomation -{ - /// - /// Streaming audio. - /// - public class MediaStreamingAudioData : MediaStreamingPackageBase - { - internal MediaStreamingAudioData(string data, DateTime timestamp, string participantId, bool silent) - { - Data = data; - Timestamp = timestamp; - if (participantId != null) - { - Participant = new CommunicationUserIdentifier(participantId); - } - IsSilent = silent; - } - - /// - /// The audio data in base64 string. - /// - public string Data { get; } - - /// - /// The timestamp of thwn the media was sourced. - /// - public DateTime Timestamp { get; } - /// - /// Participant ID - /// - public CommunicationIdentifier Participant { get; } - - /// - /// Indicates if the received audio buffer contains only silence. - /// - public bool IsSilent { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingAudioDataInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingAudioDataInternal.cs deleted file mode 100644 index 1559575a6a517..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingAudioDataInternal.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Text.Json.Serialization; - -namespace Azure.Communication.CallAutomation -{ - /// - /// Streaming audio. - /// - internal class MediaStreamingAudioDataInternal - { - /// - /// The audio data in base64 string. - /// - [JsonPropertyName("data")] - public string Data { get; set; } - - /// - /// The timestamp of thwn the media was sourced. - /// - [JsonPropertyName("timestamp")] - public DateTime Timestamp { get; set; } - - /// - /// Participant ID. - /// - [JsonPropertyName("participantRawID")] - public string ParticipantRawId { get; set; } - /// - /// Indicates if the received audio buffer contains only silence. - /// - [JsonPropertyName("silent")] - public bool Silent { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingMetadata.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingMetadata.cs deleted file mode 100644 index 1c9ac71d9bbd3..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingMetadata.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Text.Json.Serialization; - -namespace Azure.Communication.CallAutomation -{ - /// - /// Metadata package for Media Streaming. - /// - public class MediaStreamingMetadata : MediaStreamingPackageBase - { - /// - /// Subscription Id. - /// - [JsonPropertyName("subscriptionId")] - public string MediaSubscriptionId { get; set; } - - /// - /// The Encoding. - /// - [JsonPropertyName("encoding")] - public string Encoding { get; set; } - /// - /// Sample Rate. - /// - [JsonPropertyName("sampleRate")] - public int SampleRate { get; set; } - /// - /// Channels. - /// - [JsonPropertyName("channels")] - public int Channels { get; set; } - /// - /// Length. - /// - [JsonPropertyName("length")] - public int Length { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingPackageBase.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingPackageBase.cs deleted file mode 100644 index f2bd0163b37a0..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingPackageBase.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Azure.Communication.CallAutomation -{ - /// - /// Media Streaming Package. - /// - public abstract class MediaStreamingPackageBase - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingPackageParser.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingPackageParser.cs deleted file mode 100644 index 86446536215b1..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreaming/MediaStreamingPackageParser.cs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Text; -using System.Text.Json; - -namespace Azure.Communication.CallAutomation -{ - /// - /// Parser of the different packages received as part of - /// Media streaming. - /// - public static class MediaStreamingPackageParser - { - /// - /// Parsing a MediaStreaming package from BinaryData. - /// - /// - /// - public static MediaStreamingPackageBase Parse(BinaryData json) - { - return Parse(json.ToString()); - } - - /// - /// Parsing a MediaStreaming package from a byte array. - /// - /// a UTF8 byte array. - /// - public static MediaStreamingPackageBase Parse(byte[] receivedBytes) - { - return Parse(Encoding.UTF8.GetString(receivedBytes)); - } - - /// - /// Parse the incoming package. - /// - /// - /// - /// - public static MediaStreamingPackageBase Parse(string stringJson) - { - JsonElement package = JsonDocument.Parse(stringJson).RootElement; - if (package.GetProperty("kind").ToString() == "AudioMetadata") - { - return JsonSerializer.Deserialize(package.GetProperty("audioMetadata").ToString()); - } - else if (package.GetProperty("kind").ToString() == "AudioData") - { - MediaStreamingAudioDataInternal audioInternal = JsonSerializer.Deserialize(package.GetProperty("audioData").ToString()); - return new MediaStreamingAudioData( - audioInternal.Data, audioInternal.Timestamp, audioInternal.ParticipantRawId, audioInternal.Silent); - } - else - throw new NotSupportedException(stringJson); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingAudioChannel.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingAudioChannel.cs deleted file mode 100644 index 88e4d3a5faf9a..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingAudioChannel.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The states of a call. - /// - [CodeGenModel("MediaStreamingAudioChannelType", Usage = new string[] { "input" }, Formats = new string[] { "json" })] - public readonly partial struct MediaStreamingAudioChannel - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingConfiguration.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingConfiguration.cs deleted file mode 100644 index 5a6fb4056a93e..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingConfiguration.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; - -namespace Azure.Communication.CallAutomation -{ - /// The MediaStreamingConfiguration. - public class MediaStreamingConfiguration - { - /// Initializes a new instance of MediaStreamingConfiguration. - public MediaStreamingConfiguration(Uri transportUrl, MediaStreamingTransport transportType, - MediaStreamingContent contentType, MediaStreamingAudioChannel audioChannelType) - { - TransportUrl = transportUrl; - TransportType = transportType; - ContentType = contentType; - AudioChannelType = audioChannelType; - } - - /// Transport URL for media streaming. - public Uri TransportUrl { get; } - /// The type of tranport to be used for media streaming, eg. Websocket. - public MediaStreamingTransport TransportType { get; } - /// Content type to stream, eg. audio, audio/video. - public MediaStreamingContent ContentType { get; } - /// Audio channel type to stream, eg. unmixed audio, mixed audio. - public MediaStreamingAudioChannel AudioChannelType { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingContent.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingContent.cs deleted file mode 100644 index 89234cc8b867b..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingContent.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The states of a call. - /// - [CodeGenModel("MediaStreamingContentType", Usage = new string[] { "input" }, Formats = new string[] { "json" })] - public readonly partial struct MediaStreamingContent - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingOptions.cs deleted file mode 100644 index a6725f3cbcf5f..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingOptions.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; - -namespace Azure.Communication.CallAutomation -{ - /// The MediaStreamingOptions. - public class MediaStreamingOptions - { - /// Initializes a new instance of MediaStreamingOptions. - public MediaStreamingOptions(Uri transportUri, MediaStreamingTransport transportType, - MediaStreamingContent contentType, MediaStreamingAudioChannel audioChannelType) - { - TransportUri = transportUri; - MediaStreamingTransport = transportType; - MediaStreamingContent = contentType; - MediaStreamingAudioChannel = audioChannelType; - } - - /// Transport URL for media streaming. - public Uri TransportUri { get; } - /// The type of tranport to be used for media streaming, eg. Websocket. - public MediaStreamingTransport MediaStreamingTransport { get; } - /// Content type to stream, eg. audio, audio/video. - public MediaStreamingContent MediaStreamingContent { get; } - /// Audio channel type to stream, eg. unmixed audio, mixed audio. - public MediaStreamingAudioChannel MediaStreamingAudioChannel { get; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingOptionsInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingOptionsInternal.cs deleted file mode 100644 index a316fd34c49c5..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingOptionsInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("MediaStreamingConfiguration")] - internal partial class MediaStreamingOptionsInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingTransport.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingTransport.cs deleted file mode 100644 index 5b6336fa34a89..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingTransport.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The states of a call. - /// - [CodeGenModel("MediaStreamingTransportType", Usage = new string[] { "input" }, Formats = new string[] { "json" })] - public readonly partial struct MediaStreamingTransport - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MuteParticipantsOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MuteParticipantsOptions.cs deleted file mode 100644 index 422913bd9665a..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MuteParticipantsOptions.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; -using System.Linq; - -namespace Azure.Communication.CallAutomation -{ - /// - /// Options for the Mute Participant Request. - /// - public class MuteParticipantsOptions - { - /// - /// Creates a new MuteParticipantOptions object. - /// - public MuteParticipantsOptions(IEnumerable targetParticipants) - { - TargetParticipants = targetParticipants.ToList(); - } - - /// - /// The identity of participants to be muted from the call. - /// Only one participant is currently supported. - /// Only ACS Users are currently supported. - /// - public IReadOnlyList TargetParticipants { get; } - - /// - /// The operation context. - /// - public string OperationContext { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MuteParticipantsRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MuteParticipantsRequestInternal.cs deleted file mode 100644 index e94b986f72dfb..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MuteParticipantsRequestInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("MuteParticipantsRequest")] - internal partial class MuteParticipantsRequestInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayOptions.cs index 99bf5797cb4c0..e24843fcbe6c7 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayOptions.cs @@ -13,9 +13,9 @@ namespace Azure.Communication.CallAutomation public class PlayOptions { /// - /// A PlaySource object representing the source to play. + /// PlaySource objecs representing the sources to play. /// - public PlaySource PlaySource { get; } + public IReadOnlyList PlaySources { get; } /// /// A list of target identifiers to play the file to. @@ -40,9 +40,9 @@ public class PlayOptions /// /// Creates a new PlayOptions object. /// - public PlayOptions(PlaySource playSource, IEnumerable playTo) + public PlayOptions(IEnumerable playSources, IEnumerable playTo) { - PlaySource = playSource; + PlaySources = playSources.ToList(); PlayTo = playTo.ToList(); } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayToAllOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayToAllOptions.cs index 46033ca4aa99a..73d11eb70927e 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayToAllOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/PlayToAllOptions.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Linq; namespace Azure.Communication.CallAutomation { @@ -12,9 +13,9 @@ namespace Azure.Communication.CallAutomation public class PlayToAllOptions { /// - /// A PlaySource object representing the source to play. + /// PlaySource objecs representing the sources to play. /// - public PlaySource PlaySource { get; } + public IReadOnlyList PlaySources { get; } /// /// The option to play the provided audio source in loop when set to true. @@ -34,9 +35,9 @@ public class PlayToAllOptions /// /// Creates a new PlayToAllOptions object. /// - public PlayToAllOptions(PlaySource playSource) + public PlayToAllOptions(IEnumerable playSources) { - PlaySource = playSource; + PlaySources = playSources.ToList(); } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/RecognizeChoice.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/RecognizeChoice.cs deleted file mode 100644 index 2eb566e9632dd..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/RecognizeChoice.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Text.Json.Serialization; -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - /// - /// The possible Dtmf Tones. - /// - [CodeGenModel("Choice", Usage = new string[] { "output" }, Formats = new string[] { "json" })] - public partial class RecognizeChoice - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/RecognizeResultType.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/RecognizeResultType.cs index 1011e0a693a59..1a4b6434d501e 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/RecognizeResultType.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/RecognizeResultType.cs @@ -21,12 +21,9 @@ public RecognizeResultType(string value) } private const string DtmfResultValue = "DtmfResultValue"; - private const string CollectTonesResultValue = "CollectTonesResultValue"; private const string ChoiceResultValue = "ChoiceResultValue"; private const string SpeechResultValue = "SpeechResultValue"; - /// CollectTonesResult. - public static RecognizeResultType CollectTonesResult { get; } = new RecognizeResultType(CollectTonesResultValue); /// DtmfResult. public static RecognizeResultType DtmfResult { get; } = new RecognizeResultType(DtmfResultValue); /// ChoiceResult. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SendDtmfRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/SendDtmfRequestInternal.cs deleted file mode 100644 index 74b7537f275c8..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SendDtmfRequestInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("SendDtmfRequest")] - internal partial class SendDtmfRequestInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SendDtmfResult.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/SendDtmfResult.cs deleted file mode 100644 index 568156e7193ce..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SendDtmfResult.cs +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Threading.Tasks; -using System; -using System.Threading; - -namespace Azure.Communication.CallAutomation -{ - /// The result from send dtmf request. - public class SendDtmfResult - { - private CallAutomationEventProcessor _evHandler; - private string _callConnectionId; - private string _operationContext; - - internal SendDtmfResult() - { - } - - internal void SetEventProcessor(CallAutomationEventProcessor evHandler, string callConnectionId, string operationContext) - { - _evHandler = evHandler; - _callConnectionId = callConnectionId; - _operationContext = operationContext; - } - - /// - /// This is blocking call. Wait for using . - /// - /// Cancellation Token can be used to set timeout or cancel this WaitForEventProcessor. - /// Returns which contains either event or event. - public SendDtmfEventResult WaitForEventProcessor(CancellationToken cancellationToken = default) - { - if (_evHandler is null) - { - throw new NullReferenceException(nameof(_evHandler)); - } - - var returnedEvent = _evHandler.WaitForEventProcessor(filter - => filter.CallConnectionId == _callConnectionId - && (filter.OperationContext == _operationContext || _operationContext is null) - && (filter.GetType() == typeof(SendDtmfCompleted) - || filter.GetType() == typeof(SendDtmfFailed)), - cancellationToken); - - return SetReturnedEvent(returnedEvent); - } - - /// - /// Wait for using . - /// - /// Cancellation Token can be used to set timeout or cancel this WaitForEventProcessor. - /// Returns which contains either event or event. - public async Task WaitForEventProcessorAsync(CancellationToken cancellationToken = default) - { - if (_evHandler is null) - { - throw new NullReferenceException(nameof(_evHandler)); - } - - var returnedEvent = await _evHandler.WaitForEventProcessorAsync(filter - => filter.CallConnectionId == _callConnectionId - && (filter.OperationContext == _operationContext || _operationContext is null) - && (filter.GetType() == typeof(SendDtmfCompleted) - || filter.GetType() == typeof(SendDtmfFailed)), - cancellationToken).ConfigureAwait(false); - - return SetReturnedEvent(returnedEvent); - } - - private static SendDtmfEventResult SetReturnedEvent(CallAutomationEventBase returnedEvent) - { - SendDtmfEventResult result = default; - switch (returnedEvent) - { - case SendDtmfCompleted: - result = new SendDtmfEventResult(true, (SendDtmfCompleted)returnedEvent, null); - break; - case SendDtmfFailed: - result = new SendDtmfEventResult(false, null, (SendDtmfFailed)returnedEvent); - break; - default: - throw new NotSupportedException(returnedEvent.GetType().Name); - } - - return result; - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SpeechOptionsInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/SpeechOptionsInternal.cs deleted file mode 100644 index 3c1bdf643f2e6..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SpeechOptionsInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("SpeechOptions")] - internal partial class SpeechOptionsInternal - { - } -} \ No newline at end of file diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SsmlSourceInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/SsmlSourceInternal.cs deleted file mode 100644 index 0b91f0a9c9393..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/SsmlSourceInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("SsmlSource")] - internal partial class SsmlSourceInternal - { - } -} \ No newline at end of file diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/StartRecordingOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/StartRecordingOptions.cs index a2b92901a3850..d68c96feabe29 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/StartRecordingOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/StartRecordingOptions.cs @@ -14,34 +14,34 @@ public class StartRecordingOptions /// /// Parameters for the Start Recording operation. /// - /// . + /// Call locator to locate ongoing call. public StartRecordingOptions(CallLocator callLocator) { CallLocator = callLocator ?? throw new ArgumentNullException(nameof(callLocator)); } /// - /// The callLocator. + /// The callLocator to locate ongoing call. Use either GroupCallLocator or ServerCallLocator to locate ongoing call. /// internal CallLocator CallLocator { get; } /// - /// The callLocator. + /// Callback uri to recieve callback events of this call recording request. /// public Uri RecordingStateCallbackUri { get; set; } /// - /// The recording channel. + /// The recording channel of this call recording request. /// public RecordingChannel RecordingChannel { get; set; } /// - /// The recording content. + /// The recording content of this call recording request. /// public RecordingContent RecordingContent { get; set; } /// - /// The recording format. + /// The recording format of this call recording request. /// public RecordingFormat RecordingFormat { get; set; } @@ -58,11 +58,7 @@ public StartRecordingOptions(CallLocator callLocator) /// The channel affinity of call recording /// When 'recordingChannelType' is set to 'unmixed', if channelAffinity is not specified, 'channel' will be automatically assigned. /// Channel-Participant mapping details can be found in the metadata of the recording. - /// /// /// public IList ChannelAffinity { get; set; } - - /// (Optional) Used to specify external storage for call recording. - public ExternalStorage ExternalStorage { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/TextSourceInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/TextSourceInternal.cs deleted file mode 100644 index becd928cf7109..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/TextSourceInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("TextSource")] - internal partial class TextSourceInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/TransferToParticipantOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/TransferToParticipantOptions.cs index 4d4eb541558e4..dd7e1fc3b1543 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/TransferToParticipantOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/TransferToParticipantOptions.cs @@ -18,7 +18,6 @@ public class TransferToParticipantOptions public TransferToParticipantOptions(PhoneNumberIdentifier targetPhoneNumberIdentity) { Target = targetPhoneNumberIdentity; - CustomContext = new CustomContext(sipHeaders: new Dictionary(), null); } /// @@ -28,7 +27,6 @@ public TransferToParticipantOptions(PhoneNumberIdentifier targetPhoneNumberIdent public TransferToParticipantOptions(CommunicationUserIdentifier targetIdentity) { Target = targetIdentity; - CustomContext = new CustomContext(sipHeaders: null, voipHeaders: new Dictionary()); } /// @@ -38,7 +36,6 @@ public TransferToParticipantOptions(CommunicationUserIdentifier targetIdentity) public TransferToParticipantOptions(MicrosoftTeamsUserIdentifier targetIdentity) { Target = targetIdentity; - CustomContext = new CustomContext(sipHeaders: null, voipHeaders: new Dictionary()); } /// @@ -47,21 +44,6 @@ public TransferToParticipantOptions(MicrosoftTeamsUserIdentifier targetIdentity) /// public CommunicationIdentifier Target { get; } - /// - /// The operationContext for this transfer call. - /// - public string OperationContext { get; set; } - - /// - /// The Custom Context which contains SIP and voip headers - /// - public CustomContext CustomContext { get; } - - /// - /// The callee that being transferred - /// - public CommunicationIdentifier Transferee { get; set; } - /// /// The callback URI override for this transfer call request. /// diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/UnmuteParticipantsOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/UnmuteParticipantsOptions.cs deleted file mode 100644 index b343ebcc925d9..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/UnmuteParticipantsOptions.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; -using System.Linq; - -namespace Azure.Communication.CallAutomation -{ - /// - /// Options for the Unmute Participant Request. - /// - public class UnmuteParticipantsOptions - { - /// - /// Creates a new UnmuteParticipantOptions object. - /// - public UnmuteParticipantsOptions(IEnumerable targetParticipant) - { - TargetParticipants = targetParticipant.ToList(); - } - - /// - /// The identity of participants to be unmuted from the call. - /// Only one participant is currently supported. - /// Only ACS Users are currently supported. - /// - public IReadOnlyList TargetParticipants { get; } - - /// - /// The operation context. - /// - public string OperationContext { get; set; } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/UnmuteParticipantsRequestInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/UnmuteParticipantsRequestInternal.cs deleted file mode 100644 index bb10b324f0576..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/UnmuteParticipantsRequestInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core; - -namespace Azure.Communication.CallAutomation -{ - [CodeGenModel("UnmuteParticipantsRequest")] - internal partial class UnmuteParticipantsRequestInternal - { - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md b/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md index 8fc75322189dd..5917887008a55 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md +++ b/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md @@ -6,11 +6,12 @@ From Folder that contains autorest.md, Run `dotnet msbuild /t:GenerateCode` to g > see https://aka.ms/autorest ```yaml +tag: package-2023-03-06 model-namespace: false tag: package-2023-01-15-preview require: - - https://github.com/williamzhao87/azure-rest-api-specs/blob/18fef29e753a6637d5639874ab20825003ae2077/specification/communication/data-plane/CallAutomation/readme.md + - https://github.com/Azure/azure-rest-api-specs/blob/7f115517cc6d5c57ee8a89b9ba4187f937bfe6dc/specification/communication/data-plane/CallAutomation/readme.md title: Azure Communication Services diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/CallAutomationClients/CallAutomationClientTests.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/CallAutomationClients/CallAutomationClientTests.cs index 79eecb444b28f..aa119e5d5199b 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/CallAutomationClients/CallAutomationClientTests.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/CallAutomationClients/CallAutomationClientTests.cs @@ -12,12 +12,6 @@ namespace Azure.Communication.CallAutomation.Tests.CallAutomationClients { public class CallAutomationClientTests : CallAutomationTestBase { - private readonly MediaStreamingOptions _mediaStreamingConfiguration = new MediaStreamingOptions( - new Uri("https://websocket"), - MediaStreamingTransport.Websocket, - MediaStreamingContent.Audio, - MediaStreamingAudioChannel.Mixed); - [TestCaseSource(nameof(TestData_AnswerCall))] public async Task AnswerCallAsync_200OK(string incomingCallContext, Uri callbackUri) { @@ -27,7 +21,6 @@ public async Task AnswerCallAsync_200OK(string incomingCallContext, Uri callback Assert.NotNull(response); Assert.AreEqual((int)HttpStatusCode.OK, response.GetRawResponse().Status); verifyCallConnectionProperties(response.Value.CallConnectionProperties); - Assert.Null(response.Value.CallConnectionProperties.MediaSubscriptionId); Assert.AreEqual(CallConnectionId, response.Value.CallConnection.CallConnectionId); } @@ -40,7 +33,6 @@ public void AnswerCall_200OK(string incomingCallContext, Uri callbackUri) Assert.NotNull(response); Assert.AreEqual((int)HttpStatusCode.OK, response.GetRawResponse().Status); verifyCallConnectionProperties(response.Value.CallConnectionProperties); - Assert.Null(response.Value.CallConnectionProperties.MediaSubscriptionId); Assert.AreEqual(CallConnectionId, response.Value.CallConnection.CallConnectionId); } @@ -50,7 +42,6 @@ public async Task AnswerCallWithOptionsAsync_200OK(string incomingCallContext, U CallAutomationClient callAutomationClient = CreateMockCallAutomationClient(200, CreateOrAnswerCallOrGetCallConnectionWithMediaSubscriptionPayload); AnswerCallOptions options = new AnswerCallOptions(incomingCallContext: incomingCallContext, callbackUri: callbackUri) { - MediaStreamingOptions = _mediaStreamingConfiguration, OperationContext = "operation_context" }; @@ -59,7 +50,6 @@ public async Task AnswerCallWithOptionsAsync_200OK(string incomingCallContext, U Assert.AreEqual((int)HttpStatusCode.OK, response.GetRawResponse().Status); verifyCallConnectionProperties(response.Value.CallConnectionProperties); Assert.AreEqual(CallConnectionId, response.Value.CallConnection.CallConnectionId); - Assert.AreEqual("mediaSubscriptionId", response.Value.CallConnectionProperties.MediaSubscriptionId); } [TestCaseSource(nameof(TestData_AnswerCall))] @@ -68,7 +58,6 @@ public void AnswerCallWithOptions_200OK(string incomingCallContext, Uri callback CallAutomationClient callAutomationClient = CreateMockCallAutomationClient(200, CreateOrAnswerCallOrGetCallConnectionWithMediaSubscriptionPayload); AnswerCallOptions options = new AnswerCallOptions(incomingCallContext: incomingCallContext, callbackUri: callbackUri) { - MediaStreamingOptions = _mediaStreamingConfiguration }; var response = callAutomationClient.AnswerCall(options); @@ -76,7 +65,6 @@ public void AnswerCallWithOptions_200OK(string incomingCallContext, Uri callback Assert.AreEqual((int)HttpStatusCode.OK, response.GetRawResponse().Status); verifyCallConnectionProperties(response.Value.CallConnectionProperties); Assert.AreEqual(CallConnectionId, response.Value.CallConnection.CallConnectionId); - Assert.AreEqual("mediaSubscriptionId", response.Value.CallConnectionProperties.MediaSubscriptionId); } [TestCaseSource(nameof(TestData_AnswerCall))] @@ -202,7 +190,6 @@ public async Task CreateCallAsync_201Created(CallInvite target, Uri callbackUri) Assert.NotNull(result); Assert.AreEqual((int)HttpStatusCode.Created, response.GetRawResponse().Status); verifyCallConnectionProperties(result.CallConnectionProperties); - Assert.Null(result.CallConnectionProperties.MediaSubscriptionId); Assert.AreEqual(CallConnectionId, result.CallConnection.CallConnectionId); } @@ -217,7 +204,6 @@ public void CreateCall_201Created(CallInvite target, Uri callbackUri) Assert.NotNull(result); Assert.AreEqual((int)HttpStatusCode.Created, response.GetRawResponse().Status); verifyCallConnectionProperties(result.CallConnectionProperties); - Assert.Null(result.CallConnectionProperties.MediaSubscriptionId); Assert.AreEqual(CallConnectionId, result.CallConnection.CallConnectionId); } @@ -229,7 +215,6 @@ public async Task CreateCallWithOptionsAsync_201Created(CallInvite target, Uri c callInvite: target, callbackUri: callbackUri) { - MediaStreamingOptions = _mediaStreamingConfiguration }; var response = await callAutomationClient.CreateCallAsync(options).ConfigureAwait(false); @@ -238,7 +223,6 @@ public async Task CreateCallWithOptionsAsync_201Created(CallInvite target, Uri c Assert.AreEqual((int)HttpStatusCode.Created, response.GetRawResponse().Status); verifyCallConnectionProperties(result.CallConnectionProperties); Assert.AreEqual(CallConnectionId, result.CallConnection.CallConnectionId); - Assert.AreEqual("mediaSubscriptionId", result.CallConnectionProperties.MediaSubscriptionId); } [TestCaseSource(nameof(TestData_CreateCall))] @@ -249,7 +233,6 @@ public void CreateCallWithOptions_201Created(CallInvite target, Uri callbackUri) callInvite: target, callbackUri: callbackUri) { - MediaStreamingOptions = _mediaStreamingConfiguration }; var response = callAutomationClient.CreateCall(options); @@ -258,7 +241,6 @@ public void CreateCallWithOptions_201Created(CallInvite target, Uri callbackUri) Assert.AreEqual((int)HttpStatusCode.Created, response.GetRawResponse().Status); verifyCallConnectionProperties(result.CallConnectionProperties); Assert.AreEqual(CallConnectionId, result.CallConnection.CallConnectionId); - Assert.AreEqual("mediaSubscriptionId", result.CallConnectionProperties.MediaSubscriptionId); } [TestCaseSource(nameof(TestData_CreateCall))] @@ -305,7 +287,6 @@ public async Task CreateGroupCallAsync_201Created(IEnumerable(callConnectionId, TimeSpan.FromSeconds(20)); - Assert.IsNotNull(disconnectedEvent); - Assert.IsTrue(disconnectedEvent is CallDisconnected); - Assert.AreEqual(callConnectionId, ((CallDisconnected)disconnectedEvent!).CallConnectionId); + try + { + // test get properties + _ = await response.CallConnection.GetCallConnectionPropertiesAsync().ConfigureAwait(false); + } + catch (RequestFailedException ex) + { + if (ex.Status == 404) + { + callConnectionId = null; + return; + } + } + callConnectionId = null; } catch (Exception) diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/CallConnections/CallConnectionTests.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/CallConnections/CallConnectionTests.cs index dffb57eb2f112..fa6c6d188105f 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/CallConnections/CallConnectionTests.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/CallConnections/CallConnectionTests.cs @@ -27,7 +27,7 @@ public class CallConnectionTests : CallAutomationTestBase "}"; private const string GetParticipantsPayload = "{" + - "\"values\":[" + + "\"value\":[" + "{\"identifier\":{\"rawId\":\"participantId1\",\"kind\":\"communicationUser\",\"communicationUser\":{\"id\":\"participantId1\"}},\"isMuted\":false}," + "{\"identifier\":{\"rawId\":\"participantId2\",\"kind\":\"phoneNumber\",\"phoneNumber\":{\"value\":\"+11234567\"}},\"isMuted\":true}" + "]" + @@ -391,141 +391,6 @@ public void GetCallMediaTest() Assert.AreEqual(connectionId, response.CallConnectionId); } - [TestCaseSource(nameof(TestData_MuteParticipant))] - public void MuteParticipant_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - - var response = callConnection.MuteParticipants(participant, OperationContext); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public void UnmuteParticipant_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - - var response = callConnection.UnmuteParticipants(participant, OperationContext); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public void MuteParticipant_WithOptions_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - var options = new MuteParticipantsOptions(new List { participant }) - { - OperationContext = OperationContext - }; - var response = callConnection.MuteParticipants(options); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public void UnmuteParticipant_WithOptions_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - var options = new UnmuteParticipantsOptions(new List { participant }) - { - OperationContext = OperationContext - }; - - var response = callConnection.UnmuteParticipants(options); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public async Task MuteParticipantAsync_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - - var response = await callConnection.MuteParticipantsAsync(participant, OperationContext); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [Test] - public void MuteParticipantAsync_NotAcsUser_400BadRequest() - { - var callConnection = CreateMockCallConnection(400); - var participant = new PhoneNumberIdentifier("+15559501234"); - Assert.ThrowsAsync(typeof(RequestFailedException), async () => await callConnection.MuteParticipantsAsync(participant, OperationContext)); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public async Task UnmuteParticipantAsync_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - - var response = await callConnection.UnmuteParticipantsAsync(participant, OperationContext); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [Test] - public void UnmuteParticipantAsync_NotAcsUser_400BadRequest() - { - var callConnection = CreateMockCallConnection(400); - var participant = new PhoneNumberIdentifier("+15559501234"); - Assert.ThrowsAsync(typeof(RequestFailedException), async () => await callConnection.UnmuteParticipantsAsync(participant, OperationContext)); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public async Task MuteParticipantAsync_WithOptions_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - var options = new MuteParticipantsOptions(new List { participant }) - { - OperationContext = OperationContext, - }; - - var response = await callConnection.MuteParticipantsAsync(options); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public void MuteParticipantAsync_WithOptions_MoreThanOneParticipant_400BadRequest(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(400); - var options = new MuteParticipantsOptions(new List { participant, participant }) - { - OperationContext = OperationContext, - }; - - Assert.ThrowsAsync(typeof(RequestFailedException), async () => await callConnection.MuteParticipantsAsync(options)); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public async Task UnmuteParticipantAsync_WithOptions_202Accepted(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(202, OperationContextPayload); - var options = new UnmuteParticipantsOptions(new List { participant }) - { - OperationContext = OperationContext, - }; - - var response = await callConnection.UnmuteParticipantsAsync(options); - Assert.AreEqual((int)HttpStatusCode.Accepted, response.GetRawResponse().Status); - Assert.AreEqual(OperationContext, response.Value.OperationContext); - } - - [TestCaseSource(nameof(TestData_MuteParticipant))] - public void UnmuteParticipantAsync_WithOptions_MoreThanOneParticipant_400BadRequest(CommunicationIdentifier participant) - { - var callConnection = CreateMockCallConnection(400); - var options = new UnmuteParticipantsOptions(new List { participant, participant }) - { - OperationContext = OperationContext, - }; - - Assert.ThrowsAsync(typeof(RequestFailedException), async () => await callConnection.UnmuteParticipantsAsync(options)); - } - private CallConnection CreateMockCallConnection(int responseCode, string? responseContent = null, string callConnectionId = "9ec7da16-30be-4e74-a941-285cfc4bffc5") { return CreateMockCallAutomationClient(responseCode, responseContent).GetCallConnection(callConnectionId); @@ -539,7 +404,7 @@ private CallConnection CreateMockCallConnection(int responseCode, string? respon { new object?[] { - callInvite + new CallInvite(new CommunicationUserIdentifier("userId")) }, }; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/CallMedias/CallMediaTests.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/CallMedias/CallMediaTests.cs index ede7e47b1346c..285f42635c1af 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/CallMedias/CallMediaTests.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/CallMedias/CallMediaTests.cs @@ -26,37 +26,13 @@ public class CallMediaTests : CallAutomationTestBase CustomVoiceEndpointId = "customVoiceEndpointId" }; - private static readonly PlayOptions _fileOptions = new PlayOptions(_fileSource, _target) + private static readonly PlayOptions _fileOptions = new PlayOptions(new List { _fileSource }, _target) { Loop = false, OperationContext = "context" }; - private static readonly PlayOptions _textOptions = new PlayOptions(_textSource, _target) - { - Loop = false, - OperationContext = "context" - }; - - private static readonly PlayOptions _ssmlOptions = new PlayOptions(_ssmlSource, _target) - { - Loop = false, - OperationContext = "context" - }; - - private static readonly PlayToAllOptions _filePlayToAllOptions = new PlayToAllOptions(_fileSource) - { - Loop = false, - OperationContext = "context" - }; - - private static readonly PlayToAllOptions _textPlayToAllOptions = new PlayToAllOptions(_textSource) - { - Loop = false, - OperationContext = "context" - }; - - private static readonly PlayToAllOptions _ssmlPlayToAllOptions = new PlayToAllOptions(_ssmlSource) + private static readonly PlayToAllOptions _filePlayToAllOptions = new PlayToAllOptions(new List { _fileSource }) { Loop = false, OperationContext = "context" @@ -69,15 +45,6 @@ public class CallMediaTests : CallAutomationTestBase "The third test string to be recognized by cognition service" }; - private static RecognizeChoice _recognizeChoice1 = new RecognizeChoice("testLabel1", s_strings); - private static RecognizeChoice _recognizeChoice2 = new RecognizeChoice("testLabel2", s_strings); - - private static readonly List s_recognizeChoices = new List() - { - _recognizeChoice1, - _recognizeChoice2 - }; - private static readonly CallMediaRecognizeOptions _dmtfRecognizeOptions = new CallMediaRecognizeDtmfOptions(new CommunicationUserIdentifier("targetUserId"), maxTonesToCollect: 5) { InterruptCallMediaOperation = true, @@ -146,7 +113,7 @@ public class CallMediaTests : CallAutomationTestBase [SetUp] public void Setup() { - _fileSource.PlaySourceCacheId = "playSourceId"; + _fileSource.PlaySourceCacheId = "PlaySourceCacheId"; } private CallMedia GetCallMedia(int responseCode) @@ -182,33 +149,6 @@ public async Task RecognizeOperationsAsync_Return202Accepted(Func>> operation) - { - _callMedia = GetCallMedia(202); - var result = await operation(_callMedia); - Assert.IsNotNull(result); - Assert.AreEqual((int)HttpStatusCode.Accepted, result.GetRawResponse().Status); - } - - [TestCaseSource(nameof(TestData_StartContinuousRecognitionOperationsAsync))] - public async Task StartContinuousRecognitionOperationssAsync_Return200Accepted(Func> operation) - { - _callMedia = GetCallMedia(200); - var result = await operation(_callMedia); - Assert.IsNotNull(result); - Assert.AreEqual((int)HttpStatusCode.OK, result.Status); - } - - [TestCaseSource(nameof(TestData_StopContinuousRecognitionOperationsAsync))] - public async Task StopContinuousRecognitionOperationssAsync_Return200Accepted(Func> operation) - { - _callMedia = GetCallMedia(200); - var result = await operation(_callMedia); - Assert.IsNotNull(result); - Assert.AreEqual((int)HttpStatusCode.OK, result.Status); - } - [TestCaseSource(nameof(TestData_PlayOperations))] public void MediaOperations_Return202Accepted(Func> operation) { @@ -236,33 +176,6 @@ public void RecognizeOperations_Return202Accepted(Func> operation) - { - _callMedia = GetCallMedia(202); - var result = operation(_callMedia); - Assert.IsNotNull(result); - Assert.AreEqual((int)HttpStatusCode.Accepted, result.GetRawResponse().Status); - } - - [TestCaseSource(nameof(TestData_StartContinuousRecognitionOperations))] - public void StartContinuousRecognitionOperations_Return200OK(Func operation) - { - _callMedia = GetCallMedia(200); - var result = operation(_callMedia); - Assert.IsNotNull(result); - Assert.AreEqual((int)HttpStatusCode.OK, result.Status); - } - - [TestCaseSource(nameof(TestData_StopContinuousRecognitionOperations))] - public void StopContinuousRecognizeOperations_Return200OK(Func operation) - { - _callMedia = GetCallMedia(200); - var result = operation(_callMedia); - Assert.IsNotNull(result); - Assert.AreEqual((int)HttpStatusCode.OK, result.Status); - } - [TestCaseSource(nameof(TestData_PlayOperationsAsync))] public void PlayOperationsAsync_Return404NotFound(Func>> operation) { @@ -293,37 +206,6 @@ public void RecognizeOperationsAsync_Return404NotFound(Func>> operation) - { - _callMedia = GetCallMedia(404); - RequestFailedException? ex = Assert.ThrowsAsync( - async () => await operation(_callMedia)); - Assert.NotNull(ex); - Assert.AreEqual(ex?.Status, 404); - } - - [TestCaseSource(nameof(TestData_StartContinuousRecognitionOperationsAsync))] - public void StartContinuousRecognitionOperationsAsync_Return404NotFound(Func> operation) - { - _callMedia = GetCallMedia(404); - RequestFailedException? ex = Assert.ThrowsAsync( - async () => await operation(_callMedia)); - Assert.NotNull(ex); - Assert.AreEqual(ex?.Status, 404); - } - - [TestCaseSource(nameof(TestData_StopContinuousRecognitionOperationsAsync))] - - public void StopContinuousRecognitionOperationsAsync_Return404NotFound(Func> operation) - { - _callMedia = GetCallMedia(404); - RequestFailedException? ex = Assert.ThrowsAsync( - async () => await operation(_callMedia)); - Assert.NotNull(ex); - Assert.AreEqual(ex?.Status, 404); - } - [TestCaseSource(nameof(TestData_PlayOperations))] public void PlayOperations_Return404NotFound(Func> operation) { @@ -344,16 +226,6 @@ public void RecognizeOperations_Return404NotFound(Func> operation) - { - _callMedia = GetCallMedia(404); - RequestFailedException? ex = Assert.Throws( - () => operation(_callMedia)); - Assert.NotNull(ex); - Assert.AreEqual(ex?.Status, 404); - } - [TestCaseSource(nameof(TestData_CancelOperations))] public void CancelOperations_Return404NotFound(Func> operation) { @@ -374,27 +246,6 @@ public void MediaOperations_Return404NotFound(Func operation) - { - _callMedia = GetCallMedia(404); - RequestFailedException? ex = Assert.Throws( - () => operation(_callMedia)); - Assert.NotNull(ex); - Assert.AreEqual(ex?.Status, 404); - } - - [TestCaseSource(nameof(TestData_StopContinuousRecognitionOperations))] - - public void StopContinuousRecognizeOperations_Return404NotFound(Func operation) - { - _callMedia = GetCallMedia(404); - RequestFailedException? ex = Assert.Throws( - () => operation(_callMedia)); - Assert.NotNull(ex); - Assert.AreEqual(ex?.Status, 404); - } - private static IEnumerable TestData_PlayOperationsAsync() { return new[] @@ -406,23 +257,7 @@ public void StopContinuousRecognizeOperations_Return404NotFound(Func>>?[] { callMedia => callMedia.PlayToAllAsync(_filePlayToAllOptions) - }, - new Func>>?[] - { - callMedia => callMedia.PlayAsync(_textOptions) - }, - new Func>>?[] - { - callMedia => callMedia.PlayToAllAsync(_textPlayToAllOptions) - }, - new Func>>?[] - { - callMedia => callMedia.PlayAsync(_ssmlOptions) - }, - new Func>>?[] - { - callMedia => callMedia.PlayToAllAsync(_ssmlPlayToAllOptions) - }, + } }; } @@ -446,18 +281,6 @@ public void StopContinuousRecognizeOperations_Return404NotFound(Func callMedia.StartRecognizingAsync(_dmtfRecognizeOptions) }, new Func>>?[] - { - callMedia => callMedia.StartRecognizingAsync(_choiceRecognizeOptions) - }, - new Func>>?[] - { - callMedia => callMedia.StartRecognizingAsync(_speechRecognizeOptions) - }, - new Func>>?[] - { - callMedia => callMedia.StartRecognizingAsync(_speechOrDtmfRecognizeOptions) - }, - new Func>>?[] { callMedia => callMedia.StartRecognizingAsync(_emptyRecognizeOptions) } @@ -476,22 +299,6 @@ public void StopContinuousRecognizeOperations_Return404NotFound(Func callMedia.PlayToAll(_filePlayToAllOptions) }, - new Func>?[] - { - callMedia => callMedia.Play(_textOptions) - }, - new Func>?[] - { - callMedia => callMedia.PlayToAll(_textPlayToAllOptions) - }, - new Func>?[] - { - callMedia => callMedia.Play(_ssmlOptions) - }, - new Func>?[] - { - callMedia => callMedia.PlayToAll(_ssmlPlayToAllOptions) - }, }; } @@ -515,95 +322,10 @@ public void StopContinuousRecognizeOperations_Return404NotFound(Func callMedia.StartRecognizing(_dmtfRecognizeOptions) }, new Func>?[] - { - callMedia => callMedia.StartRecognizing(_choiceRecognizeOptions) - }, - new Func>?[] - { - callMedia => callMedia.StartRecognizing(_speechRecognizeOptions) - }, - new Func>?[] - { - callMedia => callMedia.StartRecognizing(_speechOrDtmfRecognizeOptions) - }, - new Func>?[] { callMedia => callMedia.StartRecognizing(_emptyRecognizeOptions) } }; } - - private static IEnumerable TestData_SendDtmfOperations() - { - return new[] - { - new Func>?[] - { - callMedia => callMedia.SendDtmf( - new DtmfTone[] { DtmfTone.One, DtmfTone.Two, DtmfTone.Three, DtmfTone.Pound }, - new CommunicationUserIdentifier("targetUserId"), - "context" - ) - } - }; - } - - private static IEnumerable TestData_SendDtmfOperationsAsync() - { - return new[] - { - new Func>>?[] - { - callMedia => callMedia.SendDtmfAsync( - new DtmfTone[] { DtmfTone.One, DtmfTone.Two, DtmfTone.Three, DtmfTone.Pound }, - new CommunicationUserIdentifier("targetUserId") - ) - } - }; - } - - private static IEnumerable TestData_StartContinuousRecognitionOperations() - { - return new[] - { - new Func?[] - { - callMedia => callMedia.StartContinuousDtmfRecognition(new CommunicationUserIdentifier("targetUserId")) - } - }; - } - - private static IEnumerable TestData_StartContinuousRecognitionOperationsAsync() - { - return new[] - { - new Func>?[] - { - callMedia => callMedia.StartContinuousDtmfRecognitionAsync(new CommunicationUserIdentifier("targetUserId")) - } - }; - } - - private static IEnumerable TestData_StopContinuousRecognitionOperations() - { - return new[] - { - new Func?[] - { - callMedia => callMedia.StopContinuousDtmfRecognition(new CommunicationUserIdentifier("targetUserId")) - } - }; - } - - private static IEnumerable TestData_StopContinuousRecognitionOperationsAsync() - { - return new[] - { - new Func>?[] - { - callMedia => callMedia.StopContinuousDtmfRecognitionAsync(new CommunicationUserIdentifier("targetUserId")) - } - }; - } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/EventProcessors/ResultWithEventProcessorAsyncTests.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/EventProcessors/ResultWithEventProcessorAsyncTests.cs index 0d888d5bf234f..159fca0bb65f8 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/EventProcessors/ResultWithEventProcessorAsyncTests.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/EventProcessors/ResultWithEventProcessorAsyncTests.cs @@ -258,7 +258,7 @@ public async Task PlayEventResultSuccessTest() var callConnection = CreateMockCallConnection(successCode, AddParticipantsPayload); CallAutomationEventProcessor handler = callConnection.EventProcessor; - var response = callConnection.GetCallMedia().PlayToAll(new PlayToAllOptions(new FileSource(new Uri(CallBackUri))) { OperationContext = OperationContext }); + var response = callConnection.GetCallMedia().PlayToAll(new PlayToAllOptions(new List { new FileSource(new Uri(CallBackUri)) }) { OperationContext = OperationContext }); Assert.AreEqual(successCode, response.GetRawResponse().Status); // Create and send event to event processor @@ -284,7 +284,7 @@ public async Task PlayEventResultFailedTest() var callConnection = CreateMockCallConnection(successCode, AddParticipantsPayload); CallAutomationEventProcessor handler = callConnection.EventProcessor; - var response = callConnection.GetCallMedia().PlayToAll(new PlayToAllOptions(new FileSource(new Uri(CallBackUri))) { OperationContext = OperationContext }); + var response = callConnection.GetCallMedia().PlayToAll(new PlayToAllOptions(new List { new FileSource(new Uri(CallBackUri))}) { OperationContext = OperationContext }); Assert.AreEqual(successCode, response.GetRawResponse().Status); // Create and send event to event processor @@ -517,81 +517,5 @@ public async Task SendDtmfEventResultFailedTest() Assert.AreEqual(CallConnectionId, returnedResult.FailureResult.CallConnectionId); Assert.AreEqual(OperationContext, returnedResult.FailureResult.OperationContext); } - - [Test] - public async Task StartDialogEventResultSuccessTest() - { - int successCode = (int)HttpStatusCode.Created; - - var callConnection = CreateMockCallConnection(successCode, DialogPayload); - CallAutomationEventProcessor handler = callConnection.EventProcessor; - - var dialogContext = new Dictionary(); - var startDialogOptions = new StartDialogOptions(DialogInputType.PowerVirtualAgents, "botAppId", dialogContext) - { - OperationContext = OperationContext - }; - - var response = callConnection.GetCallDialog().StartDialog(startDialogOptions); - Assert.AreEqual(successCode, response.GetRawResponse().Status); - - // Create and send event to event processor - SendAndProcessEvent(handler, new DialogStarted(CallConnectionId, ServerCallId, CorelationId, OperationContext, new ResultInformation(), "dialogId", DialogInputType.PowerVirtualAgents)); - - DialogEventResult returnedResult = await response.Value.WaitForEventProcessorAsync(); - - // Assert - Assert.NotNull(returnedResult); - Assert.AreEqual(true, returnedResult.IsSuccess); - Assert.NotNull(returnedResult.DialogStartedSuccessEvent); - Assert.IsNull(returnedResult.DialogCompletedSuccessResult); - Assert.IsNull(returnedResult.DialogConsentSuccessEvent); - Assert.IsNull(returnedResult.DialogHangupSuccessEvent); - Assert.IsNull(returnedResult.DialogLanguageChangeEvent); - Assert.IsNull(returnedResult.DialogSensitivityUpdateEvent); - Assert.IsNull(returnedResult.DialogTransferSuccessEvent); - Assert.IsNull(returnedResult.FailureResult); - Assert.AreEqual(typeof(DialogStarted), returnedResult.DialogStartedSuccessEvent.GetType()); - Assert.AreEqual(CallConnectionId, returnedResult.DialogStartedSuccessEvent.CallConnectionId); - Assert.AreEqual(OperationContext, returnedResult.DialogStartedSuccessEvent.OperationContext); - } - - [Test] - public async Task StartDialogEventResultFailedTest() - { - int successCode = (int)HttpStatusCode.Created; - - var callConnection = CreateMockCallConnection(successCode, DialogPayload); - CallAutomationEventProcessor handler = callConnection.EventProcessor; - - var dialogContext = new Dictionary(); - var startDialogOptions = new StartDialogOptions(DialogInputType.PowerVirtualAgents, "botAppId", dialogContext) - { - OperationContext = OperationContext - }; - - var response = callConnection.GetCallDialog().StartDialog(startDialogOptions); - Assert.AreEqual(successCode, response.GetRawResponse().Status); - - // Create and send event to event processor - SendAndProcessEvent(handler, new DialogFailed(CallConnectionId, ServerCallId, CorelationId, OperationContext, new ResultInformation(), "dialogId", DialogInputType.PowerVirtualAgents)); - - DialogEventResult returnedResult = await response.Value.WaitForEventProcessorAsync(); - - // Assert - Assert.NotNull(returnedResult); - Assert.AreEqual(false, returnedResult.IsSuccess); - Assert.IsNull(returnedResult.DialogStartedSuccessEvent); - Assert.IsNull(returnedResult.DialogCompletedSuccessResult); - Assert.IsNull(returnedResult.DialogConsentSuccessEvent); - Assert.IsNull(returnedResult.DialogHangupSuccessEvent); - Assert.IsNull(returnedResult.DialogLanguageChangeEvent); - Assert.IsNull(returnedResult.DialogSensitivityUpdateEvent); - Assert.IsNull(returnedResult.DialogTransferSuccessEvent); - Assert.NotNull(returnedResult.FailureResult); - Assert.AreEqual(typeof(DialogFailed), returnedResult.FailureResult.GetType()); - Assert.AreEqual(CallConnectionId, returnedResult.FailureResult.CallConnectionId); - Assert.AreEqual(OperationContext, returnedResult.FailureResult.OperationContext); - } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientAutomatedLiveTestsBase.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientAutomatedLiveTestsBase.cs index 664b9c1477dbf..dca3a608a8a4b 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientAutomatedLiveTestsBase.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientAutomatedLiveTestsBase.cs @@ -101,15 +101,7 @@ protected CallAutomationClient CreateInstrumentedCallAutomationClientWithConnect { var connectionString = TestEnvironment.LiveTestStaticConnectionString; - CallAutomationClient callAutomationClient; - if (TestEnvironment.PMAEndpoint == null || TestEnvironment.PMAEndpoint.Length == 0) - { - callAutomationClient = new CallAutomationClient(connectionString, CreateServerCallingClientOptionsWithCorrelationVectorLogs(source)); - } - else - { - callAutomationClient = new CallAutomationClient(new Uri(TestEnvironment.PMAEndpoint), connectionString, CreateServerCallingClientOptionsWithCorrelationVectorLogs(source)); - } + CallAutomationClient callAutomationClient = new CallAutomationClient(connectionString, CreateServerCallingClientOptionsWithCorrelationVectorLogs(source)); return InstrumentClient(callAutomationClient); } @@ -309,7 +301,7 @@ private static string RemoveAllNonChar(string inputId) private HttpPipeline BuildHttpPipeline() { var clientOptions = CreateServerCallingClientOptionsWithCorrelationVectorLogs(); - return clientOptions.CustomBuildHttpPipeline( + return clientOptions.BuildHttpPipeline( ConnectionString.Parse(TestEnvironment.LiveTestStaticConnectionString)); } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientLiveTestsBase.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientLiveTestsBase.cs index ed135ba917959..36dd13cd76770 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientLiveTestsBase.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientLiveTestsBase.cs @@ -37,14 +37,8 @@ protected CallAutomationClient CreateInstrumentedCallAutomationClientWithConnect var connectionString = TestEnvironment.LiveTestStaticConnectionString; CallAutomationClient callAutomationClient; - if (TestEnvironment.PMAEndpoint == null || TestEnvironment.PMAEndpoint.Length == 0) - { - callAutomationClient = new CallAutomationClient(connectionString, CreateServerCallingClientOptionsWithCorrelationVectorLogs()); - } - else - { - callAutomationClient = new CallAutomationClient(new Uri(TestEnvironment.PMAEndpoint), connectionString, CreateServerCallingClientOptionsWithCorrelationVectorLogs()); - } + + callAutomationClient = new CallAutomationClient(connectionString, CreateServerCallingClientOptionsWithCorrelationVectorLogs()); return InstrumentClient(callAutomationClient); } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientTestEnvironment.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientTestEnvironment.cs index f0108637f123d..f00518d7cf13f 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientTestEnvironment.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationClientTestEnvironment.cs @@ -17,8 +17,6 @@ internal class CallAutomationClientTestEnvironment : CommunicationTestEnvironmen public const string TargetNumber = "TARGET_PHONE_NUMBER"; - public const string Endpoint = "PMA_Endpoint"; - private const string randomResourceIdentifier = "82e890fc-188a-4b67-bb7d-deff073d7d1e"; private string randomAcsUser = $"8:acs:{randomResourceIdentifier}_0000000e-abbe-44ad-9f37-b0a72a616d0b"; @@ -55,11 +53,6 @@ internal class CallAutomationClientTestEnvironment : CommunicationTestEnvironmen /// public string TargetPhoneNumber => GetRecordedVariable(TargetNumber, options => options.IsSecret("+16041234567")); - /// - /// Endpoint for the targetted PMA in string. If not set, default endpoint is used. - /// - public string PMAEndpoint => GetRecordedOptionalVariable(Endpoint, options => options.IsSecret("https://sanitized.com")); - /// /// Dispatcher endpoint for automated testing /// diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationTestBase.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationTestBase.cs index 68b642e140dd0..bb0e69bda72de 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationTestBase.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/Infrastructure/CallAutomationTestBase.cs @@ -23,7 +23,7 @@ public class CallAutomationTestBase "}}" + "]," + "\"sourceDisplayName\": \"displayName\"," + - "\"sourceIdentity\":{{" + + "\"source\":{{" + "\"rawId\":\"sourceId\"," + "\"kind\":\"communicationUser\"," + "\"communicationUser\":{{\"id\":\"sourceId\"}}" + diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/MediaStreaming/CallAutomationStreamingParserTests.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/MediaStreaming/CallAutomationStreamingParserTests.cs deleted file mode 100644 index 48d79f5519af2..0000000000000 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/MediaStreaming/CallAutomationStreamingParserTests.cs +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Text.Json; -using Newtonsoft.Json.Linq; -using NUnit.Framework; - -namespace Azure.Communication.CallAutomation.Tests.MediaStreaming -{ - internal class CallAutomationStreamingParserTests - { - [Test] - public void ParseMetadata_Test() - { - string metadataJson = "{" - + "\"kind\": \"AudioMetadata\"," - + "\"audioMetadata\": {" - + "\"subscriptionId\": \"subscriptionId\"," - + "\"encoding\": \"encodingType\"," - + "\"sampleRate\": 8," - + "\"channels\": 2," - + "\"length\": 640" - + "}" - + "}"; - - MediaStreamingMetadata streamingMetadata = (MediaStreamingMetadata)MediaStreamingPackageParser.Parse(metadataJson); - ValidateMetadata(streamingMetadata); - } - - [Test] - public void ParseAudio_Test() - { - string audioJson = "{" - + "\"kind\": \"AudioData\"," - + "\"audioData\": {" - + "\"data\": \"AQIDBAU=\"," // [1, 2, 3, 4, 5] - + "\"timestamp\": \"2022-08-23T11:48:05Z\"," - + "\"participantRawID\": \"participantId\"," - + "\"silent\": false" - + "}" - + "}"; - - MediaStreamingAudioData streamingAudio = (MediaStreamingAudioData) MediaStreamingPackageParser.Parse(audioJson); - ValidateAudioData(streamingAudio); - } - - [Test] - public void ParseAudio_NoParticipantIdSilent_Test() - { - string audioJson = "{" - + "\"kind\": \"AudioData\"," - + "\"audioData\": {" - + "\"data\": \"AQIDBAU=\"," // [1, 2, 3, 4, 5] - + "\"timestamp\": \"2022-08-23T11:48:05Z\"" - + "}" - + "}"; - - MediaStreamingAudioData streamingAudio = (MediaStreamingAudioData)MediaStreamingPackageParser.Parse(audioJson); - ValidateAudioDataNoParticipant(streamingAudio); - } - - [Test] - public void ParseBinaryData() - { - JObject jsonData = new JObject(); - jsonData["kind"] = "AudioData"; - jsonData["audioData"] = new JObject(); - jsonData["audioData"]["data"] = "AQIDBAU="; - jsonData["audioData"]["timestamp"] = "2022-08-23T11:48:05Z"; - jsonData["audioData"]["participantRawID"] = "participantId"; - jsonData["audioData"]["silent"] = false; - - var binaryData = BinaryData.FromString(jsonData.ToString()); - - MediaStreamingAudioData streamingAudio = (MediaStreamingAudioData)MediaStreamingPackageParser.Parse(binaryData); - ValidateAudioData(streamingAudio); - } - - [Test] - public void ParseAudioEventsWithBynaryArray() - { - JObject jsonData = new JObject(); - jsonData["kind"] = "AudioData"; - jsonData["audioData"] = new JObject(); - jsonData["audioData"]["data"] = "AQIDBAU="; - jsonData["audioData"]["timestamp"] = "2022-08-23T11:48:05Z"; - jsonData["audioData"]["participantRawID"] = "participantId"; - jsonData["audioData"]["silent"] = false; - - byte[] receivedBytes = System.Text.Encoding.UTF8.GetBytes(jsonData.ToString()); - MediaStreamingAudioData parsedPackage = (MediaStreamingAudioData) MediaStreamingPackageParser.Parse(receivedBytes); - - Assert.NotNull(parsedPackage); - ValidateAudioData(parsedPackage); - } - - private static void ValidateMetadata(MediaStreamingMetadata streamingMetadata) - { - Assert.IsNotNull(streamingMetadata); - Assert.AreEqual("subscriptionId", streamingMetadata.MediaSubscriptionId); - Assert.AreEqual("encodingType", streamingMetadata.Encoding); - Assert.AreEqual(8, streamingMetadata.SampleRate); - Assert.AreEqual(2, streamingMetadata.Channels); - Assert.AreEqual(640, streamingMetadata.Length); - } - - private static void ValidateAudioData(MediaStreamingAudioData streamingAudio) - { - Assert.IsNotNull(streamingAudio); - Assert.AreEqual("AQIDBAU=", streamingAudio.Data); - Assert.AreEqual(2022, streamingAudio.Timestamp.Year); - Assert.IsTrue(streamingAudio.Participant is CommunicationIdentifier); - Assert.AreEqual("participantId", streamingAudio.Participant.RawId); - Assert.IsFalse(streamingAudio.IsSilent); - } - private static void ValidateAudioDataNoParticipant(MediaStreamingAudioData streamingAudio) - { - Assert.IsNotNull(streamingAudio); - Assert.AreEqual("AQIDBAU=", streamingAudio.Data); - Assert.AreEqual(2022, streamingAudio.Timestamp.Year); - Assert.IsNull(streamingAudio.Participant); - Assert.IsFalse(streamingAudio.IsSilent); - } - } -} diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndReject.json b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndReject.json index e71a2084ce05e..485323e8c4fb0 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndReject.json +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndReject.json @@ -1,8 +1,8 @@ { "entries": [ { - "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi92Q2hzNFdqZVdrNnloRUx0OTQybTlBP2k9MTQmZT02MzgxOTI3NDY1OTU4NzQ3OTM=\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVliVy9iT0JMK0s0SVB1QStIMGlZcFNxSUlHQXZYZHR1a1NacEw4OUpkQkJkUUpHVXJrU1dWa3QvUzdYL2ZvZXdrVHR6cjl1NTJEK3NBc2trT24rZmhpRVBPNUV0SHlUdy9LWnNzelpSc3NyTG9pQytkMUpZejk1M3BqdWh3SVZVdFNLS2xwRW1NNGdCSGlBV01vaVFKR1pKUlFxbkNXSExOYm5EN0lSekpVQ21VcEQ1SHZ2Wmp4STB2c2NaWWt6RHR2T3Jvcks1eXVUNlJNd1A0MEdFS1haVlowUnc0UGo5Vk9xSlJpTkxZVHhFTHFVR3hIeXJFTkZZa3dxa0tFeC9tNUxLWXpPWEV1RG5GUE05ZmRTcHBtMHhsbGR3Q3hRbnp1WThwU29PQUk1YVNDTWs0RFpDU1NxZWFNa1VTQ1VEVFRHc0R5MDVsWHBzbkxlZnJ5cW1yalYwWU82Z3FzS3hzV1JuYnJGL0x5WWJ6NjZ0T1UvNFJqa3FpbDQ2SzhPODZhZ09DTWZyRzQrSHpRNDdDbk5NMDFUN0NqRWp3T0pkSTRpUkZPbUtSb2FrMmtVcjJIV1ZOWGM2dGFuRTdQN0xxZitQQlBDdnVhdWRFMlRSU1RRRnMyalJWTFhvOVdXWGROTThtMHdibXJkYmQrZzdlU1ZlVk16ZlNXOUNlcW5yZ3ZubHRKRVdZZHBYYU1WR3F0eUM5dExSM1J2ZDBCRUo0ckZIQ1FCbmpxVUVjTTNoRVdtTkthWmdrcEVlalhrWjZQb3Q3R3lVL1pYMENtbWRHWjNKUTFFdGpRWnRTSUd6bTlnMW9tb0FQNnIrQzRBY3RXOG5XM0JyVi9CV0ViWlJzWmMxMWRXNWxVVmVsZGVLZ0NkSUMyaVdFZFFtRDc1Z0luMFc4MS9tNmRmdXdMQnBUZ1BHWGp0cjgzSWFscktwOGUyRDFhdTJDTThuTEJBWVdmWHh0cjR1eWp6eENHV09oaDcyREUrL2dsRUU3Nm1MNEk4Nmc3dGZnTDVqdUdxcS9OV0c0Ry9FdXdYNlhSTnlOSlAzaHVTRGJZSElkVFI5NzdZOVpYODUxVm5vQnhqNzJ6czVQZTRQTFU0OWc1c1h3OUQxQ2lFYzRzSE12anFBSFdxNlRnd3o4ZlU3WnQ0MnFrSzJ6ZTdQVFRoUHhEMitGWmlBYm90a0REM2cxbkFkQzExUFBHclZ3UHpibUsxUm5rMEpDWUUyK04rc0pXN2hGdEc2Ui9Vd1pORSt0bkFoMUt1MVRYN1hVWXZUdVlsWVdBWjRNNGtNMkdoenArOCtYNjlIdGFFZmxiTDdhdEpRc2RLWmxZd1NzM0xzWW5YcVUrRGpDSWZQSjh6VnZYZGlzUVpwTjg1Vm5wZFlXWE5hbGhMdjN4VHpydHN6R2JoK2Q3cUFITVhoNEg1MzhJRHA1aVU1QnUxdVdWQTB3VU5nSklZNWVNckNZQlBRSEdGcTdmUWI2SnpQQXRtczlSR2pBYVl4SkZIZ1BRY2RiQ2crQ0xtN1JyWUhyWm92K1hNSE9HL0NPenkvT1RnNUdIZ2w5bUVrWmljT1FFWUlEL2kxeStrVE93WkQrVCtUa2tUeUVkZURJWnl5SWZNcjl5TWY4SlRlRWZPdmFTdGExT3cyNEU0ckQ1d0tnQ1RjeC9rRUZNV2I3TFBUL3dCTHNiRVJIRXZEWUI3dy9tb1QrV1NTNVRFd3VaaklyVUh0dWJucG5tUmJibUZ1aFpHbGtQaWx0MWt4bklsa3FyNUxxempTVnpLeTNOQWtjTDF1OWRsMDFKUVQrWVB6eFpuaDhReWkvZVhjOEdONThmRGNnTnh4N1dRRkhueEdYMmNHSHQrbXlLZU82eUVhdnI5Ni9XUTFaTUs1dWt5TDZwNHJmdjdIbDJzNUdSNy9TZi9ua1YvSWdaQXRQZncvKy9TZk8wc04zeS9sRTg4UHErUFNYOGR2NzQ2dHBjVkhkWjdkblIreXUvank1UE1GVkMvOXdRbFl6V2NGOXdyeVBCMGZ2ZXlUYzNpcVBRN0gzTnFLMHgxLzJ1MEJwcCt5UHdEM3o4ZUJzZkxLTGxzNmF6VWlTTlJiZWJIK2ZDYzVKb0lwM0FEZVR1Q2VMd3F5U2ZsRStzOGZlNmZENFlwK2Z1LzdCZmo5Y2VtZmowYmRXQWh2WjVLYWFsb1ZCWmdGMytwNEdNTUdJaE0vbitkN3c1RnZMNTY3L0crdWoyQTJ3cHhsVms4M2d2SDFnZ3R2UjJNcENOaTNxcVVRMENMMTRMTWF4aUdQQlg0dGhMRVpjREFaaU9CWjBKQVpNdkg0amdxRVlNUkg3clUwb1dDaDhHS1ZpSElvSWVrYmlEUmR2WU5SM1UwSW04Rmd3eUdrQXh4ZUQ0WWJZckpwV24rZVNNM0VObitWeTJkMXM4RzVwSjlmWFpnVkpNbWd0bXZyNkdwYURwdHJDck90cm1kVEkzZDdJcmVRWm12K0U5cGk0ZlFjb2xYVnprMERjTHpQZFRHOVNZM1FDd2ZZM0tIVmNUblRqUHlZU3RWVUljcllKWExTdXRuQVBOL2FRRngrWlNadi9KeUhSUVNvNUNsVWNJSlpBTVNGWklCSHhJeDJFakFZK2M1V2ZxYUhjYkxPMkQwck5MVGgvOGxoUEZHYjVJVTFka3QxMlFBb0lDZUo3czNiSjN6WlhhMXNkOW9FZVhPYW40ZUk0cmFyNVlYUjJtQjNjVC9wOXdJZXlCazRNc0luT1l2YnpiWDcxK2RPSHhidnlsN2R2ODAvcm41ZGdBN0FXaEVQQzVGU2NidXFSekxRRlNGYWZiWWNHZVY0dURTeXNzWFB6RmVaQTl1bDgwMG8vS0JaWjgxZ3I3NDY0ZE5XV2VkNVdDdjlSN2cwZ2tIMHZUWnQ4UTJNMy9ZWm1iekdjMXV6cTFsemRoZXZwK0tpSkdaM0ZBNWRYczcrYmZ1akRwVU1qRmdaeHdLRm9pMTJCbk5YSDg3ekpJSWxyd0d0YkoyZjFhMXRLcmVEOVAvbFptMlErMlUyMTRWOEM3VnVsUktZU3h4VEZ4b2NDUEtVRXlZQ0dpSVk0OFZNb1cybGJpdjlYOVNUd1RtdzVyMXJlRmZDMjVlQnZjSVBIOFpBUUFBQT0iLCJzaHJUb2tlbiI6ImV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJbkJ2Y0NKOS5leUpoZENJNkltVjVTakJsV0VGcFQybEtTMVl4VVdsTVEwcG9Za2RqYVU5cFNsTlZla2t4VG1sSmMwbHVaekZrUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEpjMGx0ZEhCYVEwazJTV2t4VEZOVVRsSlBWelZQVldwa2FWVnRPVzFsUnpGc1YyMDVXV05YU2tsWGEyUnNaSGxLT1M1bGVVcG9aRmRSYVU5cFNtbE9SRlpzVFVScmQxbFRNV3RaVjBwdFRGUlJlRTVFVlhSWlZFRXlUME13ZDA5SFJUUk5hbXhwVFhwQ2JFOUhVV2xNUTBwd1l6Tk5hVTlwU205a1NGSjNZM3B2ZGt3elRqQmplVFV6WVZjMWEySXpaSHBNYlRWc1pFTTVhbHBIVFRGWlYxWnNXVk13ZUU1WFRURk1WRkpyV1dwWmRGbHFRVE5QVXpGdFdUSkdhMXBFU1RGTlJGWnJXWHBKZGtscGQybGhWMFl3U1dwdmVFNXFaM3BPZWtGNlQxUkZNa3hEU25WWmJWbHBUMnBGTWs5RVRUTk5SRTAxVFZSWmMwbHRWalJqUTBrMlRWUlpORTE2WXpWTlJGbDRUbWwzYVZsWGJIWkphbTlwVWxSS1lWb3hiRTloYlRGclVqSkplazF1VW5OVVdIQllUVVUxZEU1NlZuTmpiWFJ3WTBWS00xRlVNR2xNUTBwb1kwaENjRnBEU1RaSmJVVjZXVlJOZWxsNlNtaE1WRWsxVDBkVmRFNUVSbXROVXpBMVRWUk5NMHhYUlRGT1JGbDVUVzFWTWs5RVJtcFplVWx6U1cxR2QyTkhiR3RaVjA1NVNXcHZhVTFwU1hOSmJVNTFXbWxKTm1WNVNuRmtNbk5wVDI1emFXRXpValZKYW05cFZXeE9Ra2xwZDJsaWFVazJTV3BDTldOdFJtWmhNbEpPVVZkb2QxRlhUa3BrVm1nMFRGWk9NRk5IZEU1T2JGazBVVzVzTVZKNlFtcFBSWFJDVGxWa05VNHpiSFpVUmxreVVUQXhTazU2YUhSVFNFNVdWVVJLZWxWSFZreGtiVkl4VlVaV2VHSkdTalZpU0VaUFVqQm9ZVmx1Vm1GbFJXeDRWMFZTY0ZZeVpFOU1WRlUwVkROQ1RtSnNjREZNVlVwSVlteHdTMk5GYTNkUk1VNXhXbFZhZUdSWWFGUmxibWd4VkVoS1NHTllXa3BhVjJOM1VWUm9TR05XVm1aTldFcHpXVmhhUkUxWFdUQmFNRGxTVFRCMFMyTlhVWGRQVkd3MVYwWnNiMDFxWkdwUlZGWklXSHBDZGxOR1FtcFdTRkpSVkdwQ2JFOUZaM2RpYkhCMVpWZDBkMDV1V1hoT1Z6RmFUMGQ0VWxOcVZuUlhWRUpaVld0R1EySkdUazVQU0VFMVlsaE5lbFJXYkRSYU1GcHVZVWhPVFZwRVdrSlhXRko0VFZkMFRtSXpiREZhUlZwVFRXdFNORTB3YkhsV1ZURlBWRlpHVVU5VVpGbGxWWFJQWkRCak1XVnNPVEpsUlRWUVkwVk9VbUpUTVU1alIyOTRWbGRrVG1ScmREQldNRFF5VFVoT2IxcHJiM2RXVmpreVZGUmpkR1JZYUZKVmJFSXpWRzVvY2s1dGRFbE5WRnAwVmpKdmVsTkViSE5aVlhNMFpFWmFNRkZZWkZsa1JGWnpWbGR3UlZFeFVrdFRhbVJ0WkZoQk5FMUlZM2hqVld4M1ZWTkpjMGx0VldsUGFVcENWVlZHUTBscGQybFpWM2h1U1dwdmFWVnNUWGxPVkZscFRFTktjbUZYVVdsUGFVcHdVMGhXVTFkWVVsUmFiSEJzWlZoQ2RsVnJjRlpTTURsSlZsZG5lR1ZHUW5OWGJFSkZVbXQ0TW1KNlduZFBWVW8xWWxWb1VVOUZiR3BKYmpFNVRFTktjRnBJUVdsUGFVcHZaRWhTZDJONmIzWk1NMDR3WTNrMU0yRlhOV3RpTTJSNlRHMDFiR1JET1dwYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNYWkphWGRwWWpKc2EwbHFiMmxOYlUwelQxZE9hVTU2WjNSTk1rNXFXVk13TUUweVZtbE1WMHBzV1dwSmRGbHFRVFZPYlZacFQxUkpNRTV0UlRSSmFYZHBZMjFuYVU5cFNYZE1hMFpUVTFWRk1tTlVaRWRsYlU1V1ZtNVNjazF1Wkd4YWJtd3dUVWQ0UTFwSVpHNWlNSEJaWTJ4T1prMXRkRmRSYlRsSVdqQnNlRkV5TVRaU1J6aDNWVEJHUWxGVE5HbE1RMHA2WkZkSmFVOXBTWGxaZW1NMVdUSkpNMDlETUhwWk1rNW9URlJSZWxwWFNYUlpiVlpwVFdreGFVMUVhekphVjBrMVRXcFJNbGxVWjJsTVEwb3dZVmRSYVU5cFNtcGFSMDB4V1ZkV2JGbFRNSGhPVjAweFRGUlNhMWxxV1hSWmFrRXpUMU14YlZreVJtdGFSRWt4VFVSV2ExbDZTV2xNUTBveFpFZHJhVTlwU21sVGJEbG9XVmRXZW1GV2NGWk5hM1JZVkRGc2VVMUZhRzFXUlVaQ1NXbDNhV1J0Vm5sSmFtOXBUVk0wZDBsdU1DNXdjRjlNZEhOVVgzQTRVMGx6UTJsSFgxaEdUWFJSTTNwZmNEUkRXRXR0WW1WNGNIQk5OelpTY1RFMk5XTk9hVEpLY0U1SlZFeElNV0ZFTlZsNFExTk1aMGgyYjNrMGJUZFBURUp4U0VGMVdYcERkM0JpWlVWVlIyWlZaMWd0ZGtKRWFUZHVVVkZqZEdkdGNWbEhNRE00TFV4VWR6TkdPVTB6V25oSlZYQnZiMmhRVkdaa1kydE5aMHB1T0hGWk0zTm5VbmQzYjJZeVRYUkJSVUp4VGxCcGFsOHlWMGN0T1VVeUxUZ3dlbU5hTm5ZdFlUY3lUbVZDVmtGWFh6VXRYM1I1TFZsdWNrTlFMVUZXUm1JMFJXTjRibGd4ZFRWTFJWUnNVVmd3Y1RKSE1IUm5TVXR2ZWxwM1MzZFVVRlpuVVZkaFZqVTFZVmN5VnpKRlZIbGZOREF3VVc1ak0yaG9SalkzYVdNeU9WOVVMVlJyTW1kVWFVeFdjR1pqTkhBdFJsQnFaemRqV1Vsa01YbGFRVUl6YlVOdFVGbGFTMHBxV1d4UVkwdE5Na1ZaTTFCVmEwVjZkM1ZHTkRkR2FHNUNZbU5CYzJGVlpuY2lMQ0owY3lJNk1UWTRNemMwTXpJMU5Dd2lZaUk2SWtkQmEzUktjMnhrV1hKS01tMHliVmwzY0dWbU1VNVNRMnAzV25SemJrMUhaR2QwVTFaNGExUXlha2tpTENKdWIyNWpaU0k2SW1GaE1UQXhZamswTW1abVlUUTVZbUppTVdVM09UZzNZbVUwWmpWaE5tRm1JaXdpWTI1bUlqcDdJbXAzYXlJNmV5SnJhV1FpT2lJME1IWk1YemxHUTFoVGIyWlZiMFJ3V0U5MmN6WmhVbXAzVlc1bldVUjNkRlJNTURoWFdsTkRhVWRySWl3aVpTSTZJa0ZSUVVJaUxDSnJkSGtpT2lKU1UwRWlMQ0p1SWpvaU1IbHlZVjlyWkUxQmFIQkJZMGwxV0hndFUzUklhMDAyVmpoQ2VYVkhNR000UzBFMVIzazNlVzlNVmpaRFRVazNPRzFJYzFWUU1uTlFaVXQyWkhWUVZYRnNVbmxzY1U1SFNGcGlkVnA0U1hGWVJHbFhaMDR0TlRoUGNFMXVXblV0UWtkdVdrcHdTVEJEVTJwbFJuRjFlRk42ZUhWTWNrZHhka2xsWnpCQk9FZHhWVjh4Y214aGRrTXhaalJuVDFFelMwcHhaREE1T1hsWVdXZ3lOMk5CTlVkZk1HOUlVR05VZEZCT01HVTRTREJ1V201NWEzQTJkakUxYlZrNGJGRktOVzFaTUZoU1FVSnNVMDA0Y0RsdGN6Tk5XWGhuUm1kb2MweGtOa0ZaZEhFeGEwMXZlWFZrUmxJeVJIZ3pTWEpWVFU1TlVWQTVOMWg1UzA1M1J6VjZYM1o0VGs5d1ExRnRMVTF3YWpGVlowMTJTM1JYVGpZd2MyaG1TakJWWDNaTk55MTFlRkZTVUhkT2VHczJhMGd4Tm0xWGFqTklPV3hoU3poMFZuUkJkMWgwTld4VmFrUkRWRXBLTjJaMWNEZ3dkekZ4U1hCUkluMTlmUS5aYW42UGRxZmxocHBKNFlneE8xZWZOTjNrRDZDa25oT0JDaklqOWNEMVFuU2ZvR01nLWVPUkUxUGh2NFdWbVYtUXNxMTVsam9mSVQzMUZXUEdCNHZnVURHNERHYjFPMXhuV2tMYzUyM2M3TXh6Vkx3dk9YNWcxNWNaQmhCaklkenZ6LTVtdjh5Yk1GQmI0OEhwV0ZfcnljRDZUbnVuVUE3akliYnd5VHV5Q2xSZk1jMHREX3RqWnVBbk1LWHc1dlhDRVJMbWlISm11SXVxUmUtVWZOcHFjQl9tRHNoS2pJTkV6UFYtT0w0RW1oZTF0d1czSXJXUGZrUnJfdW9CTXZEWTVKNGl2WUR3eTJQLWFUMmVnQTQ1TEtudXZIRXh3cnpxRGI2MXlUeHM4MDIzZWRINDF3T0tKTTNPMDd1X1A1aDBhZkVOUkdDM3NYVU9rYzdyUU5XVHcifQ.\u0022,\u0022correlationId\u0022:\u002221afa092-9e3c-4f21-a526-260b3fbfb2b3\u0022}", - "messageId": "760f3d97bdc142bd816cd7f39e4a73a3", + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L3FtcURjYWxlV1UyeTY2TWtNVHhwNUE/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVliVy9qdUJIK0s0SUw5RU83dEVsS2xFZ0NSdUhZU1RhM3NaUE5PdzVCQTRxaWJDV3lwS1hrMkxtOS9lOGR5azdpamJlMzIvYXVPQWV3eGJmbmVXWkVjbWJ5dWFOVm5rL0tKa3N6clpxc0xEcnljeWUxNWR6OVprbEhkcmhVdXBZa1RwU2lzVUNDNFFnRkxLQW9qc01BcVNpbVZHT3NlQkxjNGZaRE9FcEZLRkNjQmlFeXZvNFFFNzdDQ2NaYXhMVHpycE5rZFpXcnA0bWFHOENIRGxNa1Zaa1Z6VkhMRjRlVWN4MGo1aXNmQlRyZ0tNYVlJcDJtTFBKVHFvSll3SnBjRmRPRm1ocTNwbGprK2J0T3BXeVQ2YXhTR3lCdGxDQXNqcENLalVJQmppbW9OZEFrUEFBd0xiQnlRTE1zU1F5WW5hcThOcTlhTHA0cXA2NDI5dEhZUVZYQnpNcVdsYkhOMDU2YXJqbS92T3MwNWUvaEtLVjJIT1YvMTFGckVJelJONzZlUHova0tCcWtCQ2VLSVVOeENCNDNJZUlwVGhERlJ2Z3Npa09jaEx1T3NxWXVGMWEzdUowZnNmcmZlRERQaW9mYU9WRTFqZEl6QUpzMVRWWExYazlWV1RmTnMrbXNnWFdycDI3OUFPK2txOHU1RytrOTBwNnVlaXVrTlRLTG9rU1lkTFhlbXFOMTc1SDAwdEkrbUtSSGNCU0wyQkNrU1p5aUlFNG9LRFUrSXI3aUlpUXFwamp0MGFpWGtaNGZpTjVheWoreVBnSFJjNU5rYWxEVVMyUGRydEtnYks3V3hrekJDZldmUXZHem1JMW1hKzZOYnY0VXl0WlNOcm9XU1hWaFZWRlhwWFhxb0FuYWlOK05naTRKL1M3RnZ2U0RpUGM2WHpaK0g1WkZZd3FZKzdtajE0K2JnNm1xS3Q5Y1diMDZjY2N6enNzWUJoNzcrTmJlRm1VZmVaVFJ5TVBlMGNRN09nMDhRcU11aGovaWh1dCtEZDZDeGE2aCs4OVRRdDROYVpjUzBpWENkME54ZjNnaHllWTB1WTZtajczMllkNVhpeVFyUFViREtQRE9MazU3ZzZ0VGorREFFL0R0ZTRRUWozQ2c1NTZJb0FkYXJwT0REdndkVXRXM2phNlFyYk5mekZZN2plWGZ2QldhZzNBNHp4NTR3S3ZoUnBCSlBmT3MwWS91WVQxOWhlcHNXaWc0V3RQZld2V0tMWjBWYk4zT3RFR0wxS3FwVEs2dkgxNzdxbVVpZjdsaTRvUStQSDQ4cWFyOTBmbjRtRC9kVCs2UHl5MlY4OFZxM2RLcVNMSkVOVWFDNmQ3bDZOU2p4TWNSRGdPZnZERjY0OFRtQ2JUWk5GOTVWaVdKQmFmQkJBNnZqSG5XN1pqMXRGMTB1b1hPaEhQeExqcjdNWFQyRnAyQ2RtZVcwZzB3VU5nS0lZNTJHQUtJTlBUN0RPMjBYUWI2QnpQQXZtczlSQ2pqVkdBQ3ptQzBTd2djT3M2N0l2VGd6SWtXMnhxSU44L1lYd3ZZZWdQZStPTHliSEkwOGdqek1RMERETGdSNXZCZXNSL3VrdE5YY3JnZ1F2by9rYk1YY2hGUndSZ0pNVXlpalBpY3Y2V0dzOVY2dGxKMURmd0JKMENQd3pmOExQUUQrbU1DQXVINy9pNEwvVCt3c0sxOTZFZ1lGK0R1MzUyRS9sRWtPV1JodVp5cnJFRHR2Ym51bldlSkpNOTNWcncwS3ArV05tdG1jeGt2dFZjcC9XQ2FTbVhXVzVvWWJwZU5YdnRVTlNXYys4SCsrZDF3ZkVjb3Yzcy9IZ3p2enQ4UHlCM0hYbGJBelFjNzc2WTRzSWNEc1R3NnZpUlg0OE5pOEtGTVJveDkrUHRGZkxEWW4zMjgvbWw1U0ZqK0svMm5UMzRsejBJMjhQUjc4UGMzOTNoUDNIUHVEN0lnM1hzL09ZR28rRGc4WGx4OTVQczNsMlU4dWE2UEgyYVhMZnp6QlZuTlZRWHhKUERPajQ0LzlHRHpycVBLeTVEd0RpTktlL3h0djRzbzdaTGRFWWd6NTBkbis1TnR0SFRlckVmaXJMSHdadnU3VEhCTkFwWFlBbHd2NHA0cUNyT0srMFg1MVh6c25RN0hsN3Y4M1BVUGR2c2g2SjN0ajc1bENXeGtrNXRxVmhZR21VY0k2VHNhWUFwR0pQeDZuZThOSjk4eW43ditiOWhIc1JzSVhsZFVUVGFINi9hWkNZS2pzWldGZEZyV000VW9DNzBna0NTU2JDVDNCcElQNVpES1lTZ1BJamtLcFdCU3dMT1FReUVwbC9zajl6REFNaHhLc2llSEI1THRTWDhvaFM4aktnZEVCcjQ4T0pCaUtQZUpwQU5KUmhKdk5vRlpOYTAreitWbThoWSt5K1d5dTk3ZzNkSk9iMi9OQ3JKazBGbzA5ZTB0bUlObWlZVlZ0N2NxcnBFTDNzaFo4aFdhLzRyMmtyYjlCbENxNnVZdWhuTy96SkptZHBjYWs4UncyUDRDdFk1TGl1NzhsenlpdGhwQnhqYUZPT3VLQy9mbHhwN3o0bU16WFJkYm9hRkNxd0NSS0tJbzhJMUJJcVFFbVlCR1VVeUlyMm5rQ3BnYTZzMDJhVHZSZW1IQitkT1hncUl3eTVNMGRVbDIyd0VaSUtTSEg4eVR5LzAyeVZyYjZsU2YyTS8yT2p6YXU3bGl4emVENjZ5c0J1Y2YrMzNBaDdvR2JneFgwL0NmRDZ0SmRaZ2RYbzczczlXSmYvaitWTGs1QUd0Qk9PUkxUc1hwdWlESlRGdUJaUFhaWm1pUTUrWFNnR0dOWFpndnNBYVNUK2ViVnZwUjhaZzFMOFh5OW9qTFZtMlo1MjJsOEIrbTNnRHptbnhEWXp2OWhtYnYwL3pUQ0p4bnJpL3BVeGlPSDhZWHE0b05YRjc5VjlNUGZRNjFHMnNEcElBVW9uVjJWbzhYZVpPZFFya0hidHQ0T2F2M2JLa1NEUnZnMWRHSmlSZlQ3VlFiL2luUXZ0WVVDdWhRbXdCS2NLZ05nc0M0YXBWQmxZQlRFM0dSY3FvZDAzOVZVUUx2MUphTHF1VmRBVzliRVA0TEdVSU0yWklRQUFBPSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVp6Rk5WRWw0VGtSak5FeERTblZaYlZscFQycEZNazlFVlhoTmFrVXdUbnBuYzBsdFZqUmpRMGsyVFZSWk5FNVVTWGRQUkVVelQwTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJGRmFNMlIwVmxSQ2MwOUhTbEZVYlZwNVdtNWtlVkl3T1ZoT00yTnlUMVZLTTFGVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNWFZVlpxUmtKYVJsa3dXSHBDUzJKWVJYaE5NRFI2V2tWYVYxVklhRzFhVlhSd1pWZHNOV1ZZVm5sUFdHaElWak5TUlZJelZrOVpibWhyVTFaR1RXRnFTblpSYkhCdFRsZEtWMk5XV1hSU1Z6UTFaREJPZVdGRk9ESmhiVGxyVDBkcmVVMXViSGhsYmxwdlpXcG9hVlpxVVRGV1Iyc3hVVmhaTWxRd2MzUmxSR1J1V0RKMFVXRnRXa0pYUmtKR1ZEQTVZVTlFYUhKT2JXaHVVakZrY0ZGWWFGZE5WVXBVWldwWmVGZHNSa1ZTVnpGSFpGZG9jMlZ1UmtkVmVscEZVMGhLYjFnemNFOU9XR3hLVW0xNFNGRXhTa2hpYXpreVdrVnpkMDFWT0hkVmJYZDVWMGR3Y0dGdE1VOWxSRVpJVTFWMFIxTnNWbXhNVlVwV1dteENNVTVJVmtoVldHZzBWRVpXYkZrelpGaFNNRnBJV1cxRk5FNVdVazVrZWtwWFkydHdNRXhYWkd4V1V6RlpVVE5PUzFsc1FtOVpNVll4WTBaQ1RtUnJPVFZaYmxwMlRYcGpOVnB0Um05VFdGcG1UVlphVFZaVVZtMWpSMXBLVG10YWRsZElaRzFqVXpGVFdXdHNWVlJJUmxCUFdFMDBZbGM0TW1NelNsbFRWWFJ4VkVSVk1HTnVaSGhaV0VaeFRURndUbGRzU2pKVFNFcE9VbFJPVW1KdGFFUldSRlpMVWxjNVFtVkZkelZVTVVsNFpESmFRMUY2WkdwT00yeHBaREphVWxReVRubFdXRUpXVlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVreldXdHNTV05ZYkhKWFIwVjRVMVZXVGxKclRtbE1WbEpQWVZSb1RsbHFhRXhYYlhSNVlYcEdXRTFVWXpCUk1VcHZZVEZTUWxGNlRUUkpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTVFJOYlRCNlpWUlpNRnBVVFhkUk1sSjZaR3hvU1dJeVVqWlJhMFpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1clNIRjVlbnBvVFhsUVYweGtiREptY25kWGQyczNhVXcyVVZScGNtZEhjalp3TVZOSFdURTBTM2hwYlZkeVREQnNORGQ2VFd4MlMxcHJaVEZXUTJKcFZFZG9kakp3VWxsTFptUnhVVE5TYmxGSE1YcFZWamRKUVhwaVYyUkNjRTQxY0RKUGRUaDZUWHBOUkhkNUxYUTVaMmRRVWpkZlZqTkJWREEyUVVGdVJHZFBla1ppU0hKM1JIaGhibGRFUmpSemRETkhaVmRpWTJwcU56WnlTMHRUUzBnMGVrSnVZMHRXUVROM1NFazRlRlZTVWpaSlNXdGxVRFJ2ZWxSc1FtdE1SVVl5VFRkMFdDMUtYMHBDYmxKd1NYaHJSelptWms1MmVITXdUVUZQV1RsdFpWQXRhWFJxV2pCNVEzTTNNVTloY1hOaU1VZFpabVZ5YkRoNFQwSTFkRVpoU1dwaVRtRlVUR0pJU2w5M1gyaFdSbTVmZWxOaU9HcHBka2xYVWpWSGJGVkNNRTV1Wlc5UVpVRmxPSGN5U21wR1NqbEVaVEpvYldGNFVsTlRMVTFQWHkwd01GcFFNa1pHVW14elMwMHpYMkptV25jaUxDSjBjeUk2TVRZNE5URXlPVEkzT0N3aVlpSTZJbmt3WVZobVJHVlFSRnBqVVMxT2VITjZaRGw1YlhwRlJVdExYMWhsVFV0WU1uUXpYemhQTlZWWGRsRWlMQ0p1YjI1alpTSTZJbU5qWlRKaE5HUXhZVFkzT1RReU5URTVaRE0zT0RGbU16SXdaRFkwTlRRNElpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUpFWjA1NVZ6WklhMVJDTUhWck5tNU1VRUZ5VTE5MVVsOTVibVY2YW1oTlJWRXdlWGR0TFRGdFIwbzBJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pZGxwV01VRmtWalJmTUVwdGNURXpUak5rUmxaUWVHWmxTMmw1YVhsNWRYSTVlRWRYZEVSSGRVNWllR1JKVVV4cU1tOUNXbVkxWWxaeFZpMUZiamwzUTNKb1R6WnFiMlE0YVRJeWVYRjZkbWg2T0dKV05EVlVhVFZCZGpaUFN5MTROMmRmYTFCcVprRllVRVZQVDFvNE9HczJhR2RIVjJsQmVGWXhRbE42TmpGYVVVUkZiVVoxYUd4NmNVWlROa1JJY21oZmVrNDFlVWxHYkVkRFVrZHVUM1prU3pBeFR6QlNiREpZYW1scWJVNTRNVWRKUzBaS1ZXVXRRbFZtVUhVMGRVZFJlSGhNVldWamQxZEhSa2RpWVRnMVZFMTNNbFp5U25RdFoyVlZMVmhEYzBwaVVHaGpWWFZ3VUUxMlQzbGlkbTh6TnpsbVlXaEpkbDh4Vmt4Vk5XWndaa2syUm05WWQyWnhMVkppU1ZSTWNVODVjemh0YnpaemNsaEpTMnBNTlRSeWQzRmhjV296V2sxYVVuWkljazFGTTFGdWFFTlVOVXBGYjBGNFREbFBVakYzWmtKRE4yTTNlV0ozWmxGUFkzSlZjRlZSSW4xOWZRLlA3OHphbF9CaWV2T2JxdWp4WFZVQXQxZjVwMUtJV1d6XzFYbkdodHpwWlZlUUw4c09rZVIyRDBwYldhUFRWR3JFN2lQZHlmc1VhcUNzUnZORmVoU0VfTEQwZUhidHJqNDBwSklhVU9mWGc3Y2tfQ0FhbGFnOGJDb1NseXdtc0FfWE1QX040MnFrTFBlSTdlWXN4TVhTOGl3cHBQOFQxT2RtSTVUTmxXaHlINDJ0ZVFWOUhOOGNiMTNzdndYei13X2hKUmZlUjJTeU5wYWJ5TXczTWJ3WlFKTlU2YzEtRWc2ZGdTeWZfeWlhU1JzV0FZS0NUS0FUTU9CU3pkUnpzLWxJdjFISVdjbUk5REV2Nm5JZEFIY01hdWZoYjRRYi15S0xMbEZCRWNiaDFUX0JEbENvamEwU2UwODJLblcwNVJmT29EclFBbkNHaWtYZFFFYnBPWVROdyJ9.\u0022,\u0022correlationId\u0022:\u0022f15b6ce4-b0cc-44e9-bf5c-e0fe789f82c7\u0022}", + "messageId": "dff02ef289484cc19a852a493fb81a51", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -11,7 +11,22 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-dc8d811704453d82fc63a3cee5416b61-bfd1bad631a591d7-00" + "Diagnostic-Id": "00-711ca188744421c4d0ba3550b48b5e16-d3510d08b8d1a415-00" + }, + "enqueuedTime": "0001-01-01T00:00:00+00:00" + }, + { + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L3FtcURjYWxlV1UyeTY2TWtNVHhwNUE/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVliVy9qdUJIK0s0SUw5RU83dEVsS2xFZ0NSdUhZU1RhM3NaUE5PdzVCQTRxaWJDV3lwS1hrMkxtOS9lOGR5azdpamJlMzIvYXVPQWV3eGJmbmVXWkVjbWJ5dWFOVm5rL0tKa3N6clpxc0xEcnljeWUxNWR6OVprbEhkcmhVdXBZa1RwU2lzVUNDNFFnRkxLQW9qc01BcVNpbVZHT3NlQkxjNGZaRE9FcEZLRkNjQmlFeXZvNFFFNzdDQ2NaYXhMVHpycE5rZFpXcnA0bWFHOENIRGxNa1Zaa1Z6VkhMRjRlVWN4MGo1aXNmQlRyZ0tNYVlJcDJtTFBKVHFvSll3SnBjRmRPRm1ocTNwbGprK2J0T3BXeVQ2YXhTR3lCdGxDQXNqcENLalVJQmppbW9OZEFrUEFBd0xiQnlRTE1zU1F5WW5hcThOcTlhTHA0cXA2NDI5dEhZUVZYQnpNcVdsYkhOMDU2YXJqbS92T3MwNWUvaEtLVjJIT1YvMTFGckVJelJONzZlUHova0tCcWtCQ2VLSVVOeENCNDNJZUlwVGhERlJ2Z3Npa09jaEx1T3NxWXVGMWEzdUowZnNmcmZlRERQaW9mYU9WRTFqZEl6QUpzMVRWWExYazlWV1RmTnMrbXNnWFdycDI3OUFPK2txOHU1RytrOTBwNnVlaXVrTlRLTG9rU1lkTFhlbXFOMTc1SDAwdEkrbUtSSGNCU0wyQkNrU1p5aUlFNG9LRFUrSXI3aUlpUXFwamp0MGFpWGtaNGZpTjVheWoreVBnSFJjNU5rYWxEVVMyUGRydEtnYks3V3hrekJDZldmUXZHem1JMW1hKzZOYnY0VXl0WlNOcm9XU1hWaFZWRlhwWFhxb0FuYWlOK05naTRKL1M3RnZ2U0RpUGM2WHpaK0g1WkZZd3FZKzdtajE0K2JnNm1xS3Q5Y1diMDZjY2N6enNzWUJoNzcrTmJlRm1VZmVaVFJ5TVBlMGNRN09nMDhRcU11aGovaWh1dCtEZDZDeGE2aCs4OVRRdDROYVpjUzBpWENkME54ZjNnaHllWTB1WTZtajczMllkNVhpeVFyUFViREtQRE9MazU3ZzZ0VGorREFFL0R0ZTRRUWozQ2c1NTZJb0FkYXJwT0REdndkVXRXM2phNlFyYk5mekZZN2plWGZ2QldhZzNBNHp4NTR3S3ZoUnBCSlBmT3MwWS91WVQxOWhlcHNXaWc0V3RQZld2V0tMWjBWYk4zT3RFR0wxS3FwVEs2dkgxNzdxbVVpZjdsaTRvUStQSDQ4cWFyOTBmbjRtRC9kVCs2UHl5MlY4OFZxM2RLcVNMSkVOVWFDNmQ3bDZOU2p4TWNSRGdPZnZERjY0OFRtQ2JUWk5GOTVWaVdKQmFmQkJBNnZqSG5XN1pqMXRGMTB1b1hPaEhQeExqcjdNWFQyRnAyQ2RtZVcwZzB3VU5nS0lZNTJHQUtJTlBUN0RPMjBYUWI2QnpQQXZtczlSQ2pqVkdBQ3ptQzBTd2djT3M2N0l2VGd6SWtXMnhxSU44L1lYd3ZZZWdQZStPTHliSEkwOGdqek1RMERETGdSNXZCZXNSL3VrdE5YY3JnZ1F2by9rYk1YY2hGUndSZ0pNVXlpalBpY3Y2V0dzOVY2dGxKMURmd0JKMENQd3pmOExQUUQrbU1DQXVINy9pNEwvVCt3c0sxOTZFZ1lGK0R1MzUyRS9sRWtPV1JodVp5cnJFRHR2Ym51bldlSkpNOTNWcncwS3ArV05tdG1jeGt2dFZjcC9XQ2FTbVhXVzVvWWJwZU5YdnRVTlNXYys4SCsrZDF3ZkVjb3Yzcy9IZ3p2enQ4UHlCM0hYbGJBelFjNzc2WTRzSWNEc1R3NnZpUlg0OE5pOEtGTVJveDkrUHRGZkxEWW4zMjgvbWw1U0ZqK0svMm5UMzRsejBJMjhQUjc4UGMzOTNoUDNIUHVEN0lnM1hzL09ZR28rRGc4WGx4OTVQczNsMlU4dWE2UEgyYVhMZnp6QlZuTlZRWHhKUERPajQ0LzlHRHpycVBLeTVEd0RpTktlL3h0djRzbzdaTGRFWWd6NTBkbis1TnR0SFRlckVmaXJMSHdadnU3VEhCTkFwWFlBbHd2NHA0cUNyT0srMFg1MVh6c25RN0hsN3Y4M1BVUGR2c2g2SjN0ajc1bENXeGtrNXRxVmhZR21VY0k2VHNhWUFwR0pQeDZuZThOSjk4eW43ditiOWhIc1JzSVhsZFVUVGFINi9hWkNZS2pzWldGZEZyV000VW9DNzBna0NTU2JDVDNCcElQNVpES1lTZ1BJamtLcFdCU3dMT1FReUVwbC9zajl6REFNaHhLc2llSEI1THRTWDhvaFM4aktnZEVCcjQ4T0pCaUtQZUpwQU5KUmhKdk5vRlpOYTAreitWbThoWSt5K1d5dTk3ZzNkSk9iMi9OQ3JKazBGbzA5ZTB0bUlObWlZVlZ0N2NxcnBFTDNzaFo4aFdhLzRyMmtyYjlCbENxNnVZdWhuTy96SkptZHBjYWs4UncyUDRDdFk1TGl1NzhsenlpdGhwQnhqYUZPT3VLQy9mbHhwN3o0bU16WFJkYm9hRkNxd0NSS0tJbzhJMUJJcVFFbVlCR1VVeUlyMm5rQ3BnYTZzMDJhVHZSZW1IQitkT1hncUl3eTVNMGRVbDIyd0VaSUtTSEg4eVR5LzAyeVZyYjZsU2YyTS8yT2p6YXU3bGl4emVENjZ5c0J1Y2YrMzNBaDdvR2JneFgwL0NmRDZ0SmRaZ2RYbzczczlXSmYvaitWTGs1QUd0Qk9PUkxUc1hwdWlESlRGdUJaUFhaWm1pUTUrWFNnR0dOWFpndnNBYVNUK2ViVnZwUjhaZzFMOFh5OW9qTFZtMlo1MjJsOEIrbTNnRHptbnhEWXp2OWhtYnYwL3pUQ0p4bnJpL3BVeGlPSDhZWHE0b05YRjc5VjlNUGZRNjFHMnNEcElBVW9uVjJWbzhYZVpPZFFya0hidHQ0T2F2M2JLa1NEUnZnMWRHSmlSZlQ3VlFiL2luUXZ0WVVDdWhRbXdCS2NLZ05nc0M0YXBWQmxZQlRFM0dSY3FvZDAzOVZVUUx2MUphTHF1VmRBVzliRVA0TEdVSU0yWklRQUFBPSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVp6Rk5WRWw0VGtSak5FeERTblZaYlZscFQycEZNazlFVlhoTmFrVXdUbnBuYzBsdFZqUmpRMGsyVFZSWk5FNVVTWGRQUkVVelQwTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJGRmFNMlIwVmxSQ2MwOUhTbEZVYlZwNVdtNWtlVkl3T1ZoT00yTnlUMVZLTTFGVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNWFZVlpxUmtKYVJsa3dXSHBDUzJKWVJYaE5NRFI2V2tWYVYxVklhRzFhVlhSd1pWZHNOV1ZZVm5sUFdHaElWak5TUlZJelZrOVpibWhyVTFaR1RXRnFTblpSYkhCdFRsZEtWMk5XV1hSU1Z6UTFaREJPZVdGRk9ESmhiVGxyVDBkcmVVMXViSGhsYmxwdlpXcG9hVlpxVVRGV1Iyc3hVVmhaTWxRd2MzUmxSR1J1V0RKMFVXRnRXa0pYUmtKR1ZEQTVZVTlFYUhKT2JXaHVVakZrY0ZGWWFGZE5WVXBVWldwWmVGZHNSa1ZTVnpGSFpGZG9jMlZ1UmtkVmVscEZVMGhLYjFnemNFOU9XR3hLVW0xNFNGRXhTa2hpYXpreVdrVnpkMDFWT0hkVmJYZDVWMGR3Y0dGdE1VOWxSRVpJVTFWMFIxTnNWbXhNVlVwV1dteENNVTVJVmtoVldHZzBWRVpXYkZrelpGaFNNRnBJV1cxRk5FNVdVazVrZWtwWFkydHdNRXhYWkd4V1V6RlpVVE5PUzFsc1FtOVpNVll4WTBaQ1RtUnJPVFZaYmxwMlRYcGpOVnB0Um05VFdGcG1UVlphVFZaVVZtMWpSMXBLVG10YWRsZElaRzFqVXpGVFdXdHNWVlJJUmxCUFdFMDBZbGM0TW1NelNsbFRWWFJ4VkVSVk1HTnVaSGhaV0VaeFRURndUbGRzU2pKVFNFcE9VbFJPVW1KdGFFUldSRlpMVWxjNVFtVkZkelZVTVVsNFpESmFRMUY2WkdwT00yeHBaREphVWxReVRubFdXRUpXVlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVreldXdHNTV05ZYkhKWFIwVjRVMVZXVGxKclRtbE1WbEpQWVZSb1RsbHFhRXhYYlhSNVlYcEdXRTFVWXpCUk1VcHZZVEZTUWxGNlRUUkpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTVFJOYlRCNlpWUlpNRnBVVFhkUk1sSjZaR3hvU1dJeVVqWlJhMFpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1clNIRjVlbnBvVFhsUVYweGtiREptY25kWGQyczNhVXcyVVZScGNtZEhjalp3TVZOSFdURTBTM2hwYlZkeVREQnNORGQ2VFd4MlMxcHJaVEZXUTJKcFZFZG9kakp3VWxsTFptUnhVVE5TYmxGSE1YcFZWamRKUVhwaVYyUkNjRTQxY0RKUGRUaDZUWHBOUkhkNUxYUTVaMmRRVWpkZlZqTkJWREEyUVVGdVJHZFBla1ppU0hKM1JIaGhibGRFUmpSemRETkhaVmRpWTJwcU56WnlTMHRUUzBnMGVrSnVZMHRXUVROM1NFazRlRlZTVWpaSlNXdGxVRFJ2ZWxSc1FtdE1SVVl5VFRkMFdDMUtYMHBDYmxKd1NYaHJSelptWms1MmVITXdUVUZQV1RsdFpWQXRhWFJxV2pCNVEzTTNNVTloY1hOaU1VZFpabVZ5YkRoNFQwSTFkRVpoU1dwaVRtRlVUR0pJU2w5M1gyaFdSbTVmZWxOaU9HcHBka2xYVWpWSGJGVkNNRTV1Wlc5UVpVRmxPSGN5U21wR1NqbEVaVEpvYldGNFVsTlRMVTFQWHkwd01GcFFNa1pHVW14elMwMHpYMkptV25jaUxDSjBjeUk2TVRZNE5URXlPVEkzT0N3aVlpSTZJbmt3WVZobVJHVlFSRnBqVVMxT2VITjZaRGw1YlhwRlJVdExYMWhsVFV0WU1uUXpYemhQTlZWWGRsRWlMQ0p1YjI1alpTSTZJbU5qWlRKaE5HUXhZVFkzT1RReU5URTVaRE0zT0RGbU16SXdaRFkwTlRRNElpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUpFWjA1NVZ6WklhMVJDTUhWck5tNU1VRUZ5VTE5MVVsOTVibVY2YW1oTlJWRXdlWGR0TFRGdFIwbzBJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pZGxwV01VRmtWalJmTUVwdGNURXpUak5rUmxaUWVHWmxTMmw1YVhsNWRYSTVlRWRYZEVSSGRVNWllR1JKVVV4cU1tOUNXbVkxWWxaeFZpMUZiamwzUTNKb1R6WnFiMlE0YVRJeWVYRjZkbWg2T0dKV05EVlVhVFZCZGpaUFN5MTROMmRmYTFCcVprRllVRVZQVDFvNE9HczJhR2RIVjJsQmVGWXhRbE42TmpGYVVVUkZiVVoxYUd4NmNVWlROa1JJY21oZmVrNDFlVWxHYkVkRFVrZHVUM1prU3pBeFR6QlNiREpZYW1scWJVNTRNVWRKUzBaS1ZXVXRRbFZtVUhVMGRVZFJlSGhNVldWamQxZEhSa2RpWVRnMVZFMTNNbFp5U25RdFoyVlZMVmhEYzBwaVVHaGpWWFZ3VUUxMlQzbGlkbTh6TnpsbVlXaEpkbDh4Vmt4Vk5XWndaa2syUm05WWQyWnhMVkppU1ZSTWNVODVjemh0YnpaemNsaEpTMnBNTlRSeWQzRmhjV296V2sxYVVuWkljazFGTTFGdWFFTlVOVXBGYjBGNFREbFBVakYzWmtKRE4yTTNlV0ozWmxGUFkzSlZjRlZSSW4xOWZRLlA3OHphbF9CaWV2T2JxdWp4WFZVQXQxZjVwMUtJV1d6XzFYbkdodHpwWlZlUUw4c09rZVIyRDBwYldhUFRWR3JFN2lQZHlmc1VhcUNzUnZORmVoU0VfTEQwZUhidHJqNDBwSklhVU9mWGc3Y2tfQ0FhbGFnOGJDb1NseXdtc0FfWE1QX040MnFrTFBlSTdlWXN4TVhTOGl3cHBQOFQxT2RtSTVUTmxXaHlINDJ0ZVFWOUhOOGNiMTNzdndYei13X2hKUmZlUjJTeU5wYWJ5TXczTWJ3WlFKTlU2YzEtRWc2ZGdTeWZfeWlhU1JzV0FZS0NUS0FUTU9CU3pkUnpzLWxJdjFISVdjbUk5REV2Nm5JZEFIY01hdWZoYjRRYi15S0xMbEZCRWNiaDFUX0JEbENvamEwU2UwODJLblcwNVJmT29EclFBbkNHaWtYZFFFYnBPWVROdyJ9.\u0022,\u0022correlationId\u0022:\u0022f15b6ce4-b0cc-44e9-bf5c-e0fe789f82c7\u0022}", + "messageId": "dff02ef289484cc19a852a493fb81a51", + "partitionKey": null, + "sessionId": null, + "replyToSessionId": null, + "correlationId": null, + "subject": null, + "contentType": null, + "replyTo": null, + "applicationProperties": { + "Diagnostic-Id": "00-711ca188744421c4d0ba3550b48b5e16-d3510d08b8d1a415-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndRejectAsync.json b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndRejectAsync.json index 4f660bd56725e..640372cf223f6 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndRejectAsync.json +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallAndRejectAsync.json @@ -1,8 +1,8 @@ { "entries": [ { - "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9DV2F1NWJ4T19FaWE5NXpyZkNmMExnP2k9OCZlPTYzODE5Mjc2MjMyMzU0NzYzOQ==\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVliWFBiTmhMK0t4eDE1ajVjQXhFQUNiNWdSdE9SWkRWeDQ3ZlljcExMZUtvQkFaQmlUWkU4a0xLa3BQbnZYVkN5TFVlNTFIZTlkc3JNeUFTd2VKNEhTd0M3bTA4OUtZcmlyR3J6TkplaXphdXl4ei8xVWxNdDdOOWM5WGd2NGtJMm5DUktDSnJFS0dZNFJEN3pLVXFTd0VjaVRDaVZHSXRJK1RQY1BTUkNJcEFTNlRSS2tLZThHRVhhRTFoaHJFakllaTk2S20vcVFtek94RUlEUG5Ub1V0VlZYcmJIbGsvRUhoRU1vRDJsSmZMajFNN1hLY0tZYVNvQ3BtTVJ3SnhDbE5sU1pOck9LWmRGOGFKWEM5UG1NcS9GRGlqeUdORWhFMGdyRmlFZlk0MEVTU2tpekFzU2hhbFdrUWFnZWE2VWhtV25vbWowbzVicHByYnFHbTN1dEJuV05WaldwcXExYVRjamtXMDVQNy9vdGRVZmQxUUtyd2VPQ243WFVWc1FqTUV6QnovM3o3TWNsYWFhTVVKakZLZ2dSYjZQRXhTQjg1R0hrMFRHTEVpWjd4MDZ5dWltV2hyWjRmYWVzK3IvNE1FaUwyOGI2MFRSdGtMT0FXemV0blhEWFZmVWVUOHQ4bXpld3J6MXB0L2N3amZweTJwaFI5dzc2c3JhQmZjdG01VkdtUGFsM0xPUTByMGpibHFaVzYzY0lJZ0NuTklVUlRMdzdFNEFUeWVLSUQ4QjJTa2p2bVRDcGFHYkU5ZnpZM2NyNUlkOFlOMjMwQ29Yd3hJNERFaVRFblF0eEhZcEdiaWcrUnZvdlpleVUyejBMMXEyZndOZFd5RTdWVXRWVDQwb203b3lWaHMwUVJtamZVTDhQbUZ4bndRZTkvd3djbnVmZDA0ZlYyV3JTekQrMUpQYjE5MlpGSFZkN0c0cnQxSDJaQ1pGbGNEQTNRRGZtSnV5R2lDSFVOOFBzSU9kNHpQbitNS0hkdGpIOEk5WWcyYlFnTHRndW0zSXdjN0V4LzB3NmhNTVJyakRTUWJqS1lmMzdyRWQ3UUFRN2N0aUlKWXFyeHcvRGdsMUxxY1g3dkR0aFVPdzc4VHc2em1FRUlkRXdCNDVjUWc5MExLZEVjakEzK1lVQTlQS0dwa20vNmozMm1uQy8rbXMwUUprdzFGMndBTk9BNWNCVjgzY01WcmUyWmV0K1JvMWVWWUtPRlhadDJZOVluTzdDRy9ienFWR3k5U0lqSTgvVkQ4Kzl0VXJ4U2V2emwrT3lHYTYvbmNkbkN6MHBCRkRMYzJIMTNzcUY4djF0aVZGcVhJbFdzMWg1YzcxMFlWRGlZZERIUGdlZWJybW5RdmJEVWd6YWJGMmpGREtnTXY2bEVUd3ZYenFHTHRsdG5hSDZIUVBuY1hnNFVOMDc1bm8zcGZvRkxUYlpRblpBZ01GdkFDSGh3eUVQVTgvMkIweTBEK1pBYlpkNXlGQ1dVUmpEQUhZdVQ5MGthVmdEaHk2dUVNM0dtTE5EdjJwZ3IwdjRKeE9yeS9Qam84Y3drTEcvQkQ3MUEvOGdKQXcybTd0cCtUMGtUeUtnNEQrSVhMdmdUejBTVWhaRU1HcEpwN3ZoUUdOdnVTR0k5KzV0aFpOWTIrRGlBQS9EcDRLZ0NZbVh2Z3NCWXd5ekE1WjZGL0F3dlkyb2lWaEVlUkkrUDlPUXY4c2trSWt1dUFMa1plb3V6ZTN2WXRjY1hKL2FTVXJMWXFzTW5rN1gvQmtKWjFheUZ2ZDFpSTN6a29uY0wzczlKcE4zVlp3OEllVHE5bjRkRVpvTkh0MU9oelBybDROeVN6Q1RsN0MxYWY1ZkRWSm0zZHYvbFdVbDZlWHAyN0ZodFByWHdnYnRwY3NlQi9NOC9mVFZNeXoyM2UvMHA4OThpdTVGN0tEcDc4SHY4eE9GN2NmV1o0Y1picDVqNzkvKzVPN21GKzNtK3B1OVhMdGpkNk1HdktoVGFqdTRPOXZ5SG9oYW9nbnZuTjFmUExhSmNFdXFqd014YzdMa0ZJMytyTGZScFJ1eXVFSXhKbXI0OHZKMlQ1YXVtaTNJMG5lR3ZpeWcwTW11Q2VCS3Q0RDNFNktIRkdXZXAwTXl1cUpQWFl1eHFmWGgveVI3UjhlOWtQUXU1d2NmVzBsc0pGMW9ldDVWV3FrN3lDbUgyZ0FFNHhJOEhTZTU0elB2cmI4eVBaL1pYMFUyd0gvY1ViZDVndTRiKytaSURwcVV4dElwWGt6RndqdUVyaFRlRFRtb3lNK0d2Snd5TW1RajBjOGh2Y0p4d0gzTVBlcE5SakhQQjd4WU1oajJEUWpIaEpPb1RuaEllTUIySTg0OWptRFRvK1BZajVrL0Nqa2t5TSszcDBFdlc0N2ZZN056ZmdOUEt2VnFyL2Q0UDNLWkRjM2VnMFpNbWd0MitibUJwYUQ1c3JBckpzYmtUVElSbTlrVi9JRXpYdEVlMGpjdmdHVWlxYWRKWER1VjdscTU3TlVhNVhBWWZzTzZoeWJFODI4aDBTaU1SSkJ6cFpCb0xXRmhmMnhZL2RaOFluT3V1UmZ4WWt2V0V4UnlCU0RaREJTS0thaFJKRDMrMFNsSVltOTFCWXZEZFNhWGRaMkx1WFNnUE96aDJLaTFLdHpLRVBNcmdOU1FFZ1FYK3VOVGY1MnVWclg2cFZ2enNac2VxV2x1SFhqYTNFWkw4L1AzdzRIQThDSG1nWnVER3N6cWN2cDNZZFhSeGZ6K1dhOEdJL3h5ZmR0QmpZQWEwQTRKRXhXeGNXMkdNbDFWMzNremVWdWFGZ1UxVXJEd2xxejFKOWhEbVNmMWplZDlPUHlMbThmQ3VYOUVadXVtcW9vdWpyaHYwcTlBZVF4K1liR2Z2b05UWGY4VGl4WnNqNmZUWElSczQ4bUhhZjRKSU84T3ZxSEhnUWV4QndLRWRDakhzVGp3SXZCRlhsenVpemEvQUlLUFhEYXpzZDVNektWVUJJKy82T2JsVTZXMlg2bURmOGRzSzB1QmZhOXhGY29FRUxEUjJVTVJZSW9sT0JVS3NqNlV4VkZ0Z3o2WDJwSjRNMU10YXc3M2pYd2RxWGdid1pwN0tXTUVBQUEiLCJzaHJUb2tlbiI6ImV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJbkJ2Y0NKOS5leUpoZENJNkltVjVTakJsV0VGcFQybEtTMVl4VVdsTVEwcG9Za2RqYVU5cFNsTlZla2t4VG1sSmMwbHVaekZrUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEpjMGx0ZEhCYVEwazJTV2t4VEZOVVRsSlBWelZQVldwa2FWVnRPVzFsUnpGc1YyMDVXV05YU2tsWGEyUnNaSGxLT1M1bGVVcG9aRmRSYVU5cFNtbE9SRlpzVFVScmQxbFRNV3RaVjBwdFRGUlJlRTVFVlhSWlZFRXlUME13ZDA5SFJUUk5hbXhwVFhwQ2JFOUhVV2xNUTBwd1l6Tk5hVTlwU205a1NGSjNZM3B2ZGt3elRqQmplVFV6WVZjMWEySXpaSHBNYlRWc1pFTTVhbHBIVFRGWlYxWnNXVk13ZUU1WFRURk1WRkpyV1dwWmRGbHFRVE5QVXpGdFdUSkdhMXBFU1RGTlJGWnJXWHBKZGtscGQybGhWMFl3U1dwdmVFNXFaM3BPZWxGNVRVUnJNa3hEU25WWmJWbHBUMnBGTWs5RVRUTk9SRWwzVDFSWmMwbHRWalJqUTBrMlRWUlpORTE2WjNsUFJHTTFUbWwzYVZsWGJIWkphbTlwVWxSS1lWb3hiRTloYlRGclVqSkplazF1VW5OVVdIQllUVVUxZEU1NlZuTmpiWFJ3WTBWS00xRlVNR2xNUTBwb1kwaENjRnBEU1RaSmJVVjZXVlJOZWxsNlNtaE1WRWsxVDBkVmRFNUVSbXROVXpBMVRWUk5NMHhYUlRGT1JGbDVUVzFWTWs5RVJtcFplVWx6U1cxR2QyTkhiR3RaVjA1NVNXcHZhVTFwU1hOSmJVNTFXbWxKTm1WNVNuRmtNbk5wVDI1emFXRXpValZKYW05cFZXeE9Ra2xwZDJsaWFVazJTV3BLVms1c1drWlVhM0JYWVdzd2QyUjZSa3BpU0U1NFlURk9UMVpWT1hGUmFrRXhUbnBPVWxJeWNGaFNiVzkzWTFkbmVXRlhUbmxhUkUxNFpESTViVk5WYUVOVU1rNTVVbXhKTlZGc1RtbFVWMUoyVW14Q2FtRnJPVWRXYW14bVVucGFXR05WV2xaWlZVNUxWbTAxTTFONlduWk5hM0JIV1RCT1RHRnRaRWxTYWtwTVZGaFZlRm96VGxOU01taHZVbGQzZVZVeVZsWlRSemxhV2pCYVRGUklWblZhV0doYVdteG9WRTR3Y0ZWU2VsWndZa1JLVmsxRlZrMVRXRXBtVkZST1IxcFhTWGhTYW1od1dsVTFiMUZyV1RKU1JsSnFaRmRPZFdONlFtWmtWR1J4V1cwMGRGcEhTbWhSYTNod1YwUmFhRTR6YUV0TmFteDZURlpWTW1Fd2NHaE9WamxXVlRGS00wOVlVakJUTUVwUVpEQjBTRTFYZUROak1qVlVaREZHTWxaWFVuZE9WMUpFVmpCc1RXUkdiR1pSTVhCMVlqRndXRk50T1c5bFZYUjZUa1pXV1dWdGJISlBSbHBJVlRCb1JHVlZTbE5oTVRsTldqRldVV1ZJUW5SaGJFSTBVbFpGTkdNelFrcGpTRmt3VlZkT2NsSkVVbXhqVmpsV1dYcGFkVXhZUmxKTmJtc3lZakZPZDFsV2NESlpWbHBZVm1wa1VHVlhTbEJrUkdoYVVqQk9SV1ZHUm14bFZUVkRZVVJhZDJOdWFFcFNWVGt4VFZVNVJWUlZkRWhUUjFaMFZWTkpjMGx0VldsUGFVcENWVlZHUTBscGQybFpWM2h1U1dwdmFWVnNUWGxPVkZscFRFTktjbUZYVVdsUGFVazBWbXN4VUZFeVZuRlZNR2cyV1hwWk5GZHFiRTFNVmxKbVYwWk9UVkl4Y0haWFZVWkVVMVpvVkZFeFVsTllNMmhtWkd4U1MySlZNWFpKYmpFNVRFTktjRnBJUVdsUGFVcHZaRWhTZDJONmIzWk1NMDR3WTNrMU0yRlhOV3RpTTJSNlRHMDFiR1JET1dwYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNYWkphWGRwWWpKc2EwbHFiMmxOYlUwelQxZE9hVTU2WjNSTk1rNXFXVk13TUUweVZtbE1WMHBzV1dwSmRGbHFRVFZPYlZacFQxUkpNRTV0UlRSSmFYZHBZMjFuYVU5cFNYZE1hMFpUVTFWRk1tTlVaRWRsYlU1V1ZtNVNjazF1Wkd4YWJtd3dUVWQ0UTFwSVpHNWlNSEJaWTJ4T1prMXRkRmRSYlRsSVdqQnNlRkV5TVRaU1J6aDNWVEJHUWxGVE5HbE1RMHA2WkZkSmFVOXBTWGxaZW1NMVdUSkpNMDlETUhwWk1rNW9URlJSZWxwWFNYUlpiVlpwVFdreGFVMUVhekphVjBrMVRXcFJNbGxVWjJsTVEwb3dZVmRSYVU5cFNtcGFSMDB4V1ZkV2JGbFRNSGhPVjAweFRGUlNhMWxxV1hSWmFrRXpUMU14YlZreVJtdGFSRWt4VFVSV2ExbDZTV2xNUTBveFpFZHJhVTlwU2t4VGJWSXhUMGRXVG1Sc2IzZGhWRkowVTJ4bk0yTXhTazlWVlVaQ1NXbDNhV1J0Vm5sSmFtOXBUVk0wZDBsdU1DNXdPVmgwUTAxRmRYSldiVkl0Y205VVQzSnRUblUyYUhGb2JVZHpjbUV5Y0RGd2VFVTNTbEJxV0ZNemIyaEJXRXMxZUdwek9UWk9jbVExU0ZGTGFISkVSRWhPYjBwdU1XSk1lSEZ4UTBsd1ZYVkxWVVZ1YTFWWFpIQnpOMFpYWjA5RU1VVlpOVlZ2TTBKeGJUUktSMHBJUTJ4bkxYRlRkbmRsZEdwdlozVjNZVWMwY1hOTmN6Z3dRM05zY3pkSlVXdDJhek4zYmpCVFZWaFVabDh3TUhWb1pFRlVhbnBxZWxGWWNEbFhUbU5hV0hBNWFXMTRRVjlCWjFaalJIRTBjM052YTJSMlRXOWFjMU5JTFVjNGQxWnhNMGhhVGpGWlVrWnJkelF4YkdscFZVWkdTWGgzUjBOeU4yeGlWVTFXV1V0dVRtUTROMkY2Ymt0NVEzTllhVkYyWXpKSVpEbFphR0Y2T1VNM1VHOVJUR1ZUVmtnNFREQlVOalpvV2pjMFFqTlhaM3BsZURFeGJGQkNVR3Q1TmpOME5GTjBURTFzYlhVNWVYSktZVzFVTmxaZlZqUm5hVXRQZDE5TldUSXlSbGh6T1ZOWGVuY2lMQ0owY3lJNk1UWTRNemMwTXpJMk5pd2lZaUk2SWxGR1lqQkhUVVpUVmpCR2RXc3phVnB5UjJNd1prTldORlY2VGpOVFptSTNaVUpFWDBZdE5qZEZiVUVpTENKdWIyNWpaU0k2SWpZMU1ERm1ZakExTnpjM1pUUTVaalE1WkRreVlUUXhZV0ZoWTJJM09EY3pJaXdpWTI1bUlqcDdJbXAzYXlJNmV5SnJhV1FpT2lKZlNHTXRWbHAxV0VOVFNIUlNWVTFWZUdkSWJrUlRWVGRTWW1wbU5WaHhhbkJ5UkRBMlFVMWxRemRSSWl3aVpTSTZJa0ZSUVVJaUxDSnJkSGtpT2lKU1UwRWlMQ0p1SWpvaU1sVTJWa1ZPU2xacVRUQjNNVWxzYzNGclUwNVZUMnBDTURVM00xRkhhbGRHYWpCeGFESnBZM0prTXpGM2IyWkpTRUpQWTNKR1VqbENVMkpOWkc5R1VHTnFUMFpXT1Y5SE5sZHhSbFZoUTBwV2JuZExObTh5U2taalEwdHFaMGhHTWt0TmRURm5jMUpIYUdoRmJESlRaVlZJYjFsblJrdE1kVzVsZUZsbVdGTTNTbFJITldsc01sVXdSVXhKY2w5Tk0wWmxZakZHT0dsbFRtaENSalpFVkdOMVkyNXpNRjkxTjJwaWJpMWtZbUZDVEdsWU5tRTNlRW95T1hNdFZUWnJTbUUxWDFWVFVuYzVkSFJMUWs5M1MwY3hiSGR6YmxOM1VYWlZaSEExWkVOWFNVeDBXVjlEV201dldsZEtiMmg1UzNNMFZWaDZhV3M0VmtkVFNFTjVRbEpyWDB4blZWQjRjRzFxVUhoRlVUaHpjRWx3ZGpSUlkydEVOR1Z4WDFWak5tNHRjVkV5ZVRadlUzQmhXblpoVmxkV04wOTVZazkwT0ZsSFEwUjRVV1Y1VGtKb05uQnllRWxGVDNVeFQwUk5TMGRJWlcxUkluMTlmUS5lRXlnSmV2NUFGa1RUQVZQSG9HOHkzeWFpRUdEa3J4QndScE1wNEdTNG5RelhVSUFIdzNGQ1AtRkZ2LVd5eUlldGZDcHRiQ1paSWQwZUtkZmUzVHBwM3lPMndYc2dLR3ZrX3djYXBaYXdNR1ZaRDViN20tVzIxNE42emNtYjhQRlMzLTlkVHA2MzFZbHlyeWlPZkhmcjdTRGw3eElTNlpEZTlYeEk1dFIyTm9tQWhjSmVGOHBWX3p2eGtKaUY0QWs4dWdYVURrbDg2UEt1N29ZeFFnT2xoOEEwelFIdUxJb1RXejNXeDJsbjNRdXM5V1RLVWZBWEJJanlFdzNQdDZjcEgtTVZjYUZuLTNVQ2ZIQzJGZ015cmw2ZU44N2RwSWE0MFpBeEdobXlCZTB3eXFTMnRLamx1RG1ENW5uWGJJdHl6WVhONlJScFBkQkp4Q0ktV2JZZlEifQ.\u0022,\u0022correlationId\u0022:\u00220a043b4d-6aae-4b55-8a1d-b0fcd8bdfd88\u0022}", - "messageId": "a1407e64da7642e1934b1d3c7281488e", + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L2RKQndqcWMyRkVxSlBxWEZBVGxoTWc/aT0yJmU9NjM4MjA2NTU3OTUyMzYxMDc1\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVlhMi9iT0JiOUs0SVgyQTg3cFVWU0w1S0FzVkRzcEhVenlYanltR21BWUFPS29tUk5aRW1oNU5oSnAvOTlMMlVuY2VQT3RMczdzeGdWY01USFBlZndpdVM5dHg4SFNwYmxhZDBWV2FGa1Y5VFZRSHdjWktaZTJMOUZPaEFESnFScUJVbFNLV25DRVE5d2hQekFweWhKUWgvSktLRlVZU3haNnQvZy9pRU1aVHlVaU9BZ1F0cFRFUXE0SjNHS3NlSXFHcndacEVYYmxQTGhWQzQwNEVPSHJ0S21McXB1YXZtaTBHY1pEM3pFQ2RmSTE5aEhqRVlwb2xobkhETWU0Y2dEbTFKVytWTG0ydHBVeTdKOE0yaWs2UXBWTkhJTFJHWEd0WXd3QW9zTStkSVBrV1IrZ0VoQ0VvOEZTbk9kQWRDOFNGTU55ODVrMmVvWExSY1BqVlhYYW5PdlRkdzBNTE14ZGFOTjkzQWc4dzNucHplRHJ2NGpITVdUUFVleHJ6cHFBNEl4K3NMUDAvTk5qZ3BTamJOQUVVUWlHaUtmQmg1aWtZNlFseEJGRktXSkgvRjlSeG5kMWt1amV0ekJ0Nno2Tnp4WUZ0VnRhNTBvdTA2cU9ZRE51NjVwaGV2S3BoaG1aWkhQTzdCYlB3emJXL2dtUTFVdjdJaDdUMTNWdUd1a0ZOTExxa2FZREpYYW1hT1VlMC9jckRhM09uWFRVSWN5eVNnS2toVDJncDlraUhtU28weG5qSE5OVXo5TlhCcTVCWEU5bjdzYktmOHNSdGFCQzUwV01xN2FsVFlnVGlsUXRwQ2J4ZVRnaFBZdm9maEp6RmF6MGI5bzFmMGxsRzJrYkhVdDArYkN5S3B0YW1QVlFSTzBFVzhZK1VNU2VrT0tQZUg1RVhNSG43WitIOWRWcHl1WSszR2dOcS9iZ3ltYnB0eGVXVzZiMnVPWmxIVUNBL2NqZkcydXEzcUVITmpKMk1ITzlOU1p6bnlIMEdpSTRSK3h3KzJvQlcrQnNXMm8wZE9Va0ExRE9xU0VEQW4zN0ZBeUdsOElzajFOdHFNYkFhUjlXWXprTWkxcUovQUlvYzdaeGN5TmY1bzVCUHNPaDEvUElZUTRoQUU5YzNnRVBkQ3luUXgwNEsrUXlwSHBWSU5NV3p6cW5YYVdpSDg0YTdRQTRYQ2VIZkNBMDhLTklOSjI3aGl0N3UzTFp2b2F0VVZlU1RoYStlOVp2V0FMdTRvdGQ2RTBXbVpHNXVLZ2piOTc2V3RXcVpnY3o4ZEhyU3JWM2RYZDQ0ZXAzOVMzN2ZReHBqc3FGOHYxcHFWa2xSYXA3TFNBcFR1WGs1bERpWWNqSFBvZWViWG9yUk83QjlCbXNuTHRHSm1tQnB3R0V4aDhzc0F4ZHNkc3B1MmoweDMwZ0ZzWDc2TjczNGJ1dlVhbm9OMHVTNm9PR0Noc2hSQkhld3crSjhFMzZPK243VFBRUDVrQjlsM3ZJVUlEUmprbVVlQUVkRWdJSERyR2hqeDA0TXp4SHR0b2lEZFAySjhMMlBrQ3pzbkY1ZG5wZE9MNEpDUXNDa0Z6U0RFTmNlRGpmVzc2d3MxNEdOTC9pZHQ3NWdaQUgzc2gwQVlZVTI2ZjhEVTVISzdldFkxc1d6RHdHUUVCT0h5bEFLTFZkbnQ4VllMUFBTL2FaNkgvQjVaZ1p5TmFrb0J4aitBL25JVCtXU1NsVEhRcEZyS29VSDl4Ym5vWFJTckkwNldWckxRczg5b1UzWHdoa3BWeUdxbHVkZGZJd2pncm5jRDFzdFZySHBxdWhvTWZINTdmakU5dUNHVTM3MDdpOGMzNXU1amNNT3dVRlZ4OVduejM4SE41OUY1bjUzUkIydnRJUFo0ZllSNi8rekRuNjJ3Y3ovMUgvdTdIc3piSmY2WC84c2l2NUVuSUZwNStEZjVLVS9tMkxPNFc3OTltdk1TMGh0Z1lkUGoyREZEanRBdkxLUHJ3OXFTYzlmQlBOMlN6a0EwRUZOODVuMzUvN0pKd0cxYWVoN2p6TnFMVVphLzdiVWpwVGZaSElOQ2NUODhPVDNmUnNrVzNHVW1LenNDWEhlMHp3VDBKVkh3SGNHUEVIRmxWZXAyTXF2cXorZGlaalU4dTkvbVo3WS8zK3lIcW5SMU92clFTMk1pNjFNMjhyalRTOXhEVDl6VEFGSXhJK0xtZDU0eFB2N1I4WnZ1L3NENks3WUQvWXRGMHhRTHUyeWNtaUk3YU5BYnlhZEhPSmFKQjZQaStJSkVJSnVJZ0Ztd3N4bFNNUTNFVWlVa29lQ0E0dkhNeDVvSXljVGl4THpFVzRWaVFBekUrRXNHQjhNYUNleUtpSWliQzk4VFJrZUJqY1VnRWpRV1pDTHpkQkhyZDlmb2NtNXlKYTNoV3E5VndzOEdIdGNtdnIvVWEwbVRRV25YdDlUVXNCODFUQTFiWDF6SnBrWTNleUs3a016VHZCZTA1Yi9zZG9FeTIzVTBDNTM1VnBOMzhKdE02VGVDdy9RMktIWnNWM1hqUGlVUnJGSUtVTFlkQWE2c0wrMlBIbmhMajczWGVWd0NLRVMwMUpKQ1o4aVZraGI2SHVJTDhrSkpFcFRqVllSUWt0b0pwb2VEc3M3WWZsRm9hY0g3K1hGRlVldlZEbHRrc3UrK0FGQkR5dzJQOVlKTy9iYmJXdHdaWHl6eHJmejdtSmp1K3ZHK3VGdDNrclVkK0hJMEFId29idURGZ3pqUTM2eUkwcDY0dW1xdko3SkpmMWJQekdPWUFyQUhoa0RCWkZiTk5SVkxvdmdRcDJyUHRVRnlXOVVyRHdqcXoxSi9BQnJKUDY1dGUrclM2TDdybmFubDN4S2FycGk3THZsVDREM052Z0huSnZxR3htMzlEMDAzZkg2eCt1VlAwNlBEdS9lenV3MUY4VWM1UGNraXM2ZC8xS1BRWXhXRVFSRHlnWGtod0ZJQXppdlprV1hiRkRPbzljTnZXeTBWN1lHcVpLdGdBTDQ1T2RiTE1kM050K0YrQlRaR1o0Z1FpTkh6M3pFK2dHdmRTSkNHTUk2WWxZNFFGSkF2N3d1Ni9LU21CTnpmMXN1bDUxOERiVjRUL0J0L0hUcEtURUFBQSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVp6Rk5WRVV5VGxSUmVFeERTblZaYlZscFQycEZNazlFVlhoTlZGa3hUa1JGYzBsdFZqUmpRMGsyVFZSWk5FNVVTWGROZWtrd1RWTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJFZFNSMVl3V21wT01tRnBkR2xXUlhob1pXNWFlRXd6Ykd0aGJYQnlUREJLTTFGVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNXdOazlWUms1aFJWWk5Za1ZGTUZSRVVuWk5SbkJQVGxaQ2RrMVhNVXRNVlRsMFpGVktSbVF5TldGV1ZFNTZWakF4ZGxReGFEUlVVekZFWWtkdk1sWkZkR1poTVdNd1ZXMXdNV1JyUmpaUmJYUktZVzVXTTJSR1ZUSmFTRUV4VWtWVk1tUXpWa1JaYkZFd1dqTk9iV0o2YUd4T01IaFpWbTFzVkZGWGNITmlhMDVXVmxoR1dHRnJiekpYVmtaaFVqSmtVMVJETVhsYVZuQkdVbXBDVm1SSFpGVk5NMDV0WXpCYU5sTnVjRnBpUlZKS1pWaE5kRnBGY0UxaFZVNVNZa1ZHZGxadVRuUmtia1pJWTNwYVFsbHVValJSYW14cFQxVmtkbVZXU2tWWlZWWlJXakJvY21KcVNucE5WMnh2WkRCT2RXRklRa3hrUkVadlZqQTFOV0pyY0VWa2JUa3paRWhTWmsxNmFHMWphMW95VkZoc2VWWklWa2hoVkd4U1ZVUkdWR0pGYkUxVVYxWlBVMGMxVUZSWE9VTmtlazVIV1ZSS1VGTXlVa3hOYlU1d1RUSjBiVk5JVVhsVWJFcFNVVE5rTVZkVlVYbGxhbHBPVGxaT1pscHRNVWRXUldoUlUwWTROVk50WnpGa1JsWkZWRVYwTlZWRVFrTmtWbXhxWkd0T2NWUlhWVEJWYmxwbVVqTmFlbU5XVm5GaFZteHdaR3RzYkZSWFpETmhWWE0xV2tWdk5GTldRbkZpYldoV1VYcFNNVk16WjNkYWFrSlZXVmMxVEZGV09UQlZNbkEyVlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVwaFVsaHdUVkZWTlVoYWJUQXpVWHBrVUZWR2JFbE1XRXBWV1ROU1ZWRXlOVzFZTTNCSFRGaHNZV1F3Ums5WFdIQm1ZekJhUjJORVpIWkpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTbkZPUlZwc1lsUkdiVm96YUVaaVYyUjJWVmR3V1ZVelNsRmhhMFpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1U1VEVlJOVmhyU214TmVEazNPR2R6YW1VNFgyMVJlbTExWlRCM2NHMUdaa1JJTW1GeVdtMUdOelppWHpaUWNYbzBUVUl6YVdkaGQyaEpTVTVMYUdkNUxUUlVVMWxEVW1wcFEwNVZUMmRMZUc1NFVXTjZZbVpmUm5wR2NXa3pNVTFaUlRGdVVHNDBPWFYyZW5SaWEyZG5NelY0Y0RodVRHWjRSakE0TURKWFRYUXlibnBXTm5GaFZYWm1iRTFJUTNnM1IxUlhWVTg1ZFZad1IxcG1iVk5zU1V4Nk5tUjJaME5DVkRJNGQweDVaRnA0Ym5OWVUwSnFkMGw0YTNWQmRtUldORU0xYWxSQ2VDMW5abTluZDJOS00wUnpRbDlZYmpaUmFWZGllbUZQTURsclprNXFlRGh1YkdOa1NYVm1lV3BNZFdFd2JXbG1jWEJrYTA1R1NsTlZPRXh1TVRKelEwSkNSSGhxUWs1cmF6VkNTWEZZUmtoNVdtTmFWVlZIYlUxMlMyMDFjemhpWVhkVldVdGhWVXROY0dSeldWTnNOMFZmYUhKS2RISm9hek5TZUZoeGFGOHlUMnhQUld0clFrUkxTamh3ZGxFaUxDSjBjeUk2TVRZNE5URXlPVEk1Tml3aVlpSTZJbVJFWlcxS2JuWlpXRWhEV25SNWNtNHhZWGxWT1hFelQxUkdabGMxWDFWRlMzQmpRM2N0YVdkVGJ6Z2lMQ0p1YjI1alpTSTZJamxoT1dFNVlXVTBNemN3TURRNFl6RmlObUV5TVdObU1XRmpNREF3WmpVeUlpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUpaWmpCaFpXbDNlRU5wTVROaU5EUjNaMW8zUTFGUlVUTkxWVE5WY0hWSFIwTm5PVlJXZEVWSlZHRXdJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pZW5vNVFVMW9SVXhzUVRSTU5HOHdXazQxVUc4eGJVb3RUMjExUWtWM2JscFZNM05YVFc5UFdIaE5MVU5zYWpaVVMxOXJWelJTYW5WMlFYcENhMGxxZFhkMFZUWmtjRFZFUlRaM2RVTmlWRFJuYzJadk9HVTNURmhXYVZOQmFteHVRMVZWY1ZkcVNqWlpVVnBIWjFKTUxYSmxXa1ZHTUZWMFoxUXpjMlp6Um5wS2VsbHNSRWw1Y3kxa1NreHBRMUZzUVc5V2MyMTJjVWR6TmtGaWRIaENPV0k1UjI5NVVrUmhSVkJuU0d0dU1uTXhhV2gzUTI1b2NFdDBNV2hYVG5sdVNrUjJiM2QwZEY4ek9HWnlSblpOZVhKVWRVZHBPVkZRTVZOc1NVeE5aVTVJYms5TmIwSjNNMFpoTWs5TFpFc3lZMmt6YTJaSWRESk9VbEZEZDNWWlJESjZOazAxVTE5bWJVWlVTRkJJWHpsS2FEVjBWVVJNUzNsUU1FSjFXV04yUTJwTlpUUlNkbDlIZG5OeFZXcHBXV2wyU1dWTlozZHBTemxrU2poSlVHcHVhRlZETkhWTGVEQm1NRlJoYmt0QlgzUlRhbnBSSW4xOWZRLlZ1NmpDSmRDY2ZJZ0VyblZ1eVhGSU13VnMtTFh0eWEwZ0Nzay1GUXVBT2xYS3NZR1RmcjVWV080UDUyQnl4T1E4elVDRVBsOWdYal9qaE9MQU5STDBCTE1hQlJKdDlhTzkxSWxkN0pEc2stRUlxbFRlNE9ILWphaDdhOHliTkxhc0V1amNsYzlGTUs4RDZVUE1ibFU2bFJNNjBtdFNQMzVJTTBzZnFFSzZVdDhFX1B4eldaRkpKeXl2X002LV8yZlBON09MX19zbDMwY0tWX00tTTRobHdBTWRmbElyRVlxdGFib2JlX1RnTmZKMldReDR4MFVEcmQ4b0JqSzFEeVdfUnl0Z2pmZFV4SXpFaFNWNV9CUWZmekZwZDhUbWtrNDhvTVFLY0oxeXRzSXhmdlQ0WTJlWHR1MThKdVBEWHl2N1p2dnFZcmhwVzU5alBrckhndGEtQSJ9.\u0022,\u0022correlationId\u0022:\u00220d0b3470-1f4b-4e3d-a289-8ea881851f64\u0022}", + "messageId": "efb5d493a34f4937b2c414cb1e591d97", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -11,7 +11,22 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-b48884c5a1b4659c08698a89959e4ddf-abb95a4b2217e57e-00" + "Diagnostic-Id": "00-b221ec77bff6bc691668b32bf7a88242-36cd64a71753bc25-00" + }, + "enqueuedTime": "0001-01-01T00:00:00+00:00" + }, + { + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L2RKQndqcWMyRkVxSlBxWEZBVGxoTWc/aT0yJmU9NjM4MjA2NTU3OTUyMzYxMDc1\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVlhMi9iT0JiOUs0SVgyQTg3cFVWU0w1S0FzVkRzcEhVenlYanltR21BWUFPS29tUk5aRW1oNU5oSnAvOTlMMlVuY2VQT3RMczdzeGdWY01USFBlZndpdVM5dHg4SFNwYmxhZDBWV2FGa1Y5VFZRSHdjWktaZTJMOUZPaEFESnFScUJVbFNLV25DRVE5d2hQekFweWhKUWgvSktLRlVZU3haNnQvZy9pRU1aVHlVaU9BZ1F0cFRFUXE0SjNHS3NlSXFHcndacEVYYmxQTGhWQzQwNEVPSHJ0S21McXB1YXZtaTBHY1pEM3pFQ2RmSTE5aEhqRVlwb2xobkhETWU0Y2dEbTFKVytWTG0ydHBVeTdKOE0yaWs2UXBWTkhJTFJHWEd0WXd3QW9zTStkSVBrV1IrZ0VoQ0VvOEZTbk9kQWRDOFNGTU55ODVrMmVvWExSY1BqVlhYYW5PdlRkdzBNTE14ZGFOTjkzQWc4dzNucHplRHJ2NGpITVdUUFVleHJ6cHFBNEl4K3NMUDAvTk5qZ3BTamJOQUVVUWlHaUtmQmg1aWtZNlFseEJGRktXSkgvRjlSeG5kMWt1amV0ekJ0Nno2Tnp4WUZ0VnRhNTBvdTA2cU9ZRE51NjVwaGV2S3BoaG1aWkhQTzdCYlB3emJXL2dtUTFVdjdJaDdUMTNWdUd1a0ZOTExxa2FZREpYYW1hT1VlMC9jckRhM09uWFRVSWN5eVNnS2toVDJncDlraUhtU28weG5qSE5OVXo5TlhCcTVCWEU5bjdzYktmOHNSdGFCQzUwV01xN2FsVFlnVGlsUXRwQ2J4ZVRnaFBZdm9maEp6RmF6MGI5bzFmMGxsRzJrYkhVdDArYkN5S3B0YW1QVlFSTzBFVzhZK1VNU2VrT0tQZUg1RVhNSG43WitIOWRWcHl1WSszR2dOcS9iZ3ltYnB0eGVXVzZiMnVPWmxIVUNBL2NqZkcydXEzcUVITmpKMk1ITzlOU1p6bnlIMEdpSTRSK3h3KzJvQlcrQnNXMm8wZE9Va0ExRE9xU0VEQW4zN0ZBeUdsOElzajFOdHFNYkFhUjlXWXprTWkxcUovQUlvYzdaeGN5TmY1bzVCUHNPaDEvUElZUTRoQUU5YzNnRVBkQ3luUXgwNEsrUXlwSHBWSU5NV3p6cW5YYVdpSDg0YTdRQTRYQ2VIZkNBMDhLTklOSjI3aGl0N3UzTFp2b2F0VVZlU1RoYStlOVp2V0FMdTRvdGQ2RTBXbVpHNXVLZ2piOTc2V3RXcVpnY3o4ZEhyU3JWM2RYZDQ0ZXAzOVMzN2ZReHBqc3FGOHYxcHFWa2xSYXA3TFNBcFR1WGs1bERpWWNqSFBvZWViWG9yUk83QjlCbXNuTHRHSm1tQnB3R0V4aDhzc0F4ZHNkc3B1MmoweDMwZ0ZzWDc2TjczNGJ1dlVhbm9OMHVTNm9PR0Noc2hSQkhld3crSjhFMzZPK243VFBRUDVrQjlsM3ZJVUlEUmprbVVlQUVkRWdJSERyR2hqeDA0TXp4SHR0b2lEZFAySjhMMlBrQ3pzbkY1ZG5wZE9MNEpDUXNDa0Z6U0RFTmNlRGpmVzc2d3MxNEdOTC9pZHQ3NWdaQUgzc2gwQVlZVTI2ZjhEVTVISzdldFkxc1d6RHdHUUVCT0h5bEFLTFZkbnQ4VllMUFBTL2FaNkgvQjVaZ1p5TmFrb0J4aitBL25JVCtXU1NsVEhRcEZyS29VSDl4Ym5vWFJTckkwNldWckxRczg5b1UzWHdoa3BWeUdxbHVkZGZJd2pncm5jRDFzdFZySHBxdWhvTWZINTdmakU5dUNHVTM3MDdpOGMzNXU1amNNT3dVRlZ4OVduejM4SE41OUY1bjUzUkIydnRJUFo0ZllSNi8rekRuNjJ3Y3ovMUgvdTdIc3piSmY2WC84c2l2NUVuSUZwNStEZjVLVS9tMkxPNFc3OTltdk1TMGh0Z1lkUGoyREZEanRBdkxLUHJ3OXFTYzlmQlBOMlN6a0EwRUZOODVuMzUvN0pKd0cxYWVoN2p6TnFMVVphLzdiVWpwVGZaSElOQ2NUODhPVDNmUnNrVzNHVW1LenNDWEhlMHp3VDBKVkh3SGNHUEVIRmxWZXAyTXF2cXorZGlaalU4dTkvbVo3WS8zK3lIcW5SMU92clFTMk1pNjFNMjhyalRTOXhEVDl6VEFGSXhJK0xtZDU0eFB2N1I4WnZ1L3NENks3WUQvWXRGMHhRTHUyeWNtaUk3YU5BYnlhZEhPSmFKQjZQaStJSkVJSnVJZ0Ztd3N4bFNNUTNFVWlVa29lQ0E0dkhNeDVvSXljVGl4THpFVzRWaVFBekUrRXNHQjhNYUNleUtpSWliQzk4VFJrZUJqY1VnRWpRV1pDTHpkQkhyZDlmb2NtNXlKYTNoV3E5VndzOEdIdGNtdnIvVWEwbVRRV25YdDlUVXNCODFUQTFiWDF6SnBrWTNleUs3a016VHZCZTA1Yi9zZG9FeTIzVTBDNTM1VnBOMzhKdE02VGVDdy9RMktIWnNWM1hqUGlVUnJGSUtVTFlkQWE2c0wrMlBIbmhMajczWGVWd0NLRVMwMUpKQ1o4aVZraGI2SHVJTDhrSkpFcFRqVllSUWt0b0pwb2VEc3M3WWZsRm9hY0g3K1hGRlVldlZEbHRrc3UrK0FGQkR5dzJQOVlKTy9iYmJXdHdaWHl6eHJmejdtSmp1K3ZHK3VGdDNrclVkK0hJMEFId29idURGZ3pqUTM2eUkwcDY0dW1xdko3SkpmMWJQekdPWUFyQUhoa0RCWkZiTk5SVkxvdmdRcDJyUHRVRnlXOVVyRHdqcXoxSi9BQnJKUDY1dGUrclM2TDdybmFubDN4S2FycGk3THZsVDREM052Z0huSnZxR3htMzlEMDAzZkg2eCt1VlAwNlBEdS9lenV3MUY4VWM1UGNraXM2ZC8xS1BRWXhXRVFSRHlnWGtod0ZJQXppdlprV1hiRkRPbzljTnZXeTBWN1lHcVpLdGdBTDQ1T2RiTE1kM050K0YrQlRaR1o0Z1FpTkh6M3pFK2dHdmRTSkNHTUk2WWxZNFFGSkF2N3d1Ni9LU21CTnpmMXN1bDUxOERiVjRUL0J0L0hUcEtURUFBQSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVp6Rk5WRVV5VGxSUmVFeERTblZaYlZscFQycEZNazlFVlhoTlZGa3hUa1JGYzBsdFZqUmpRMGsyVFZSWk5FNVVTWGROZWtrd1RWTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJFZFNSMVl3V21wT01tRnBkR2xXUlhob1pXNWFlRXd6Ykd0aGJYQnlUREJLTTFGVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNXdOazlWUms1aFJWWk5Za1ZGTUZSRVVuWk5SbkJQVGxaQ2RrMVhNVXRNVlRsMFpGVktSbVF5TldGV1ZFNTZWakF4ZGxReGFEUlVVekZFWWtkdk1sWkZkR1poTVdNd1ZXMXdNV1JyUmpaUmJYUktZVzVXTTJSR1ZUSmFTRUV4VWtWVk1tUXpWa1JaYkZFd1dqTk9iV0o2YUd4T01IaFpWbTFzVkZGWGNITmlhMDVXVmxoR1dHRnJiekpYVmtaaFVqSmtVMVJETVhsYVZuQkdVbXBDVm1SSFpGVk5NMDV0WXpCYU5sTnVjRnBpUlZKS1pWaE5kRnBGY0UxaFZVNVNZa1ZHZGxadVRuUmtia1pJWTNwYVFsbHVValJSYW14cFQxVmtkbVZXU2tWWlZWWlJXakJvY21KcVNucE5WMnh2WkRCT2RXRklRa3hrUkVadlZqQTFOV0pyY0VWa2JUa3paRWhTWmsxNmFHMWphMW95VkZoc2VWWklWa2hoVkd4U1ZVUkdWR0pGYkUxVVYxWlBVMGMxVUZSWE9VTmtlazVIV1ZSS1VGTXlVa3hOYlU1d1RUSjBiVk5JVVhsVWJFcFNVVE5rTVZkVlVYbGxhbHBPVGxaT1pscHRNVWRXUldoUlUwWTROVk50WnpGa1JsWkZWRVYwTlZWRVFrTmtWbXhxWkd0T2NWUlhWVEJWYmxwbVVqTmFlbU5XVm5GaFZteHdaR3RzYkZSWFpETmhWWE0xV2tWdk5GTldRbkZpYldoV1VYcFNNVk16WjNkYWFrSlZXVmMxVEZGV09UQlZNbkEyVlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVwaFVsaHdUVkZWTlVoYWJUQXpVWHBrVUZWR2JFbE1XRXBWV1ROU1ZWRXlOVzFZTTNCSFRGaHNZV1F3Ums5WFdIQm1ZekJhUjJORVpIWkpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTbkZPUlZwc1lsUkdiVm96YUVaaVYyUjJWVmR3V1ZVelNsRmhhMFpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1U1VEVlJOVmhyU214TmVEazNPR2R6YW1VNFgyMVJlbTExWlRCM2NHMUdaa1JJTW1GeVdtMUdOelppWHpaUWNYbzBUVUl6YVdkaGQyaEpTVTVMYUdkNUxUUlVVMWxEVW1wcFEwNVZUMmRMZUc1NFVXTjZZbVpmUm5wR2NXa3pNVTFaUlRGdVVHNDBPWFYyZW5SaWEyZG5NelY0Y0RodVRHWjRSakE0TURKWFRYUXlibnBXTm5GaFZYWm1iRTFJUTNnM1IxUlhWVTg1ZFZad1IxcG1iVk5zU1V4Nk5tUjJaME5DVkRJNGQweDVaRnA0Ym5OWVUwSnFkMGw0YTNWQmRtUldORU0xYWxSQ2VDMW5abTluZDJOS00wUnpRbDlZYmpaUmFWZGllbUZQTURsclprNXFlRGh1YkdOa1NYVm1lV3BNZFdFd2JXbG1jWEJrYTA1R1NsTlZPRXh1TVRKelEwSkNSSGhxUWs1cmF6VkNTWEZZUmtoNVdtTmFWVlZIYlUxMlMyMDFjemhpWVhkVldVdGhWVXROY0dSeldWTnNOMFZmYUhKS2RISm9hek5TZUZoeGFGOHlUMnhQUld0clFrUkxTamh3ZGxFaUxDSjBjeUk2TVRZNE5URXlPVEk1Tml3aVlpSTZJbVJFWlcxS2JuWlpXRWhEV25SNWNtNHhZWGxWT1hFelQxUkdabGMxWDFWRlMzQmpRM2N0YVdkVGJ6Z2lMQ0p1YjI1alpTSTZJamxoT1dFNVlXVTBNemN3TURRNFl6RmlObUV5TVdObU1XRmpNREF3WmpVeUlpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUpaWmpCaFpXbDNlRU5wTVROaU5EUjNaMW8zUTFGUlVUTkxWVE5WY0hWSFIwTm5PVlJXZEVWSlZHRXdJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pZW5vNVFVMW9SVXhzUVRSTU5HOHdXazQxVUc4eGJVb3RUMjExUWtWM2JscFZNM05YVFc5UFdIaE5MVU5zYWpaVVMxOXJWelJTYW5WMlFYcENhMGxxZFhkMFZUWmtjRFZFUlRaM2RVTmlWRFJuYzJadk9HVTNURmhXYVZOQmFteHVRMVZWY1ZkcVNqWlpVVnBIWjFKTUxYSmxXa1ZHTUZWMFoxUXpjMlp6Um5wS2VsbHNSRWw1Y3kxa1NreHBRMUZzUVc5V2MyMTJjVWR6TmtGaWRIaENPV0k1UjI5NVVrUmhSVkJuU0d0dU1uTXhhV2gzUTI1b2NFdDBNV2hYVG5sdVNrUjJiM2QwZEY4ek9HWnlSblpOZVhKVWRVZHBPVkZRTVZOc1NVeE5aVTVJYms5TmIwSjNNMFpoTWs5TFpFc3lZMmt6YTJaSWRESk9VbEZEZDNWWlJESjZOazAxVTE5bWJVWlVTRkJJWHpsS2FEVjBWVVJNUzNsUU1FSjFXV04yUTJwTlpUUlNkbDlIZG5OeFZXcHBXV2wyU1dWTlozZHBTemxrU2poSlVHcHVhRlZETkhWTGVEQm1NRlJoYmt0QlgzUlRhbnBSSW4xOWZRLlZ1NmpDSmRDY2ZJZ0VyblZ1eVhGSU13VnMtTFh0eWEwZ0Nzay1GUXVBT2xYS3NZR1RmcjVWV080UDUyQnl4T1E4elVDRVBsOWdYal9qaE9MQU5STDBCTE1hQlJKdDlhTzkxSWxkN0pEc2stRUlxbFRlNE9ILWphaDdhOHliTkxhc0V1amNsYzlGTUs4RDZVUE1ibFU2bFJNNjBtdFNQMzVJTTBzZnFFSzZVdDhFX1B4eldaRkpKeXl2X002LV8yZlBON09MX19zbDMwY0tWX00tTTRobHdBTWRmbElyRVlxdGFib2JlX1RnTmZKMldReDR4MFVEcmQ4b0JqSzFEeVdfUnl0Z2pmZFV4SXpFaFNWNV9CUWZmekZwZDhUbWtrNDhvTVFLY0oxeXRzSXhmdlQ0WTJlWHR1MThKdVBEWHl2N1p2dnFZcmhwVzU5alBrckhndGEtQSJ9.\u0022,\u0022correlationId\u0022:\u00220d0b3470-1f4b-4e3d-a289-8ea881851f64\u0022}", + "messageId": "efb5d493a34f4937b2c414cb1e591d97", + "partitionKey": null, + "sessionId": null, + "replyToSessionId": null, + "correlationId": null, + "subject": null, + "contentType": null, + "replyTo": null, + "applicationProperties": { + "Diagnostic-Id": "00-b221ec77bff6bc691668b32bf7a88242-36cd64a71753bc25-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTest.json b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTest.json index 8e1d09cf10dc1..4863d30dc5d41 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTest.json +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTest.json @@ -1,8 +1,8 @@ { "entries": [ { - "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9iekNWZmdhZUJFVzJuc1JvYmlwOWZ3P2k9MSZlPTYzODE5Mjc1MTQyOTUxMDU4NA==\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVlhMi9qdUJYOUs0SUw5RU4zYVBHbEZ3R2pjSnhNSnk5UDFrazJtQ0pvUUpHVXJZa3NxWlQ4U0dibnYvZFNkaEpuUFoxTjI5MWlIY0FXeWN0enpyMFV5WHZ6cGFka1VZeXJOczl5SmR1OEtudmlTeSt6MWR6OTVyb25lckdRcWhFazFWTFNORUZKZ0NQRUEwNVJtb1ljeVNpbFZHRXNZODN2Y1BjaE1aS2hVa2pUTEVWTXN3VEZoa21zTWRZa29yMTNQWjAzZFNFZnhuSnVBQjg2VEtucktpL2JZOGNYUkNiRUNZc1F5MWlJT0tNR3BRb0RuZEVtekdRY0VCWEFuRUtXMDRXY0dqZW5YQlRGdTE0dGJadXJ2Slpib0RDSk0wVWxBS1VKQUNrU29EVFRGQ21OZ3pTaERFdk1BV2lXYTIzQTdVd1dqWG5SY3ZWUU8zV05zVXRqaDNVTmxyV3RhbVBiaHdNNTNYQitmZGRycTk4aVVIRzhGeWp5cTRIYWdHQ012dkgxOUhsVG9EVFZPQ0k4UlJIUE9PSVJaU2hoUnFNMFRySlFSaUhPcE5vUGxEVk50YkNxdysyOXhldC9FOEVpTCs4YkYwVFp0bExOQUd6V3RuVWpmRi9XZVQ4cjh1bXNoWG5yaDM1ekQydlNWOVhjamZoTDZxdmFoL0F0R2lNcHdyU3YxSTZKVXY2UytGbGw3NDMyWXhYam1HVWFoVndaeEdXUW9KUW1LYUlxaVhGS2VaeW8xS2VSbnhPZjhjVGZLUGxyUG5DYTUwYm5jbGcySzJOQm0xSWdiQzQzdmt3aEJzMGZRZkNUbHExa2F6NGIxZjRSaEcyVWJHVXRkSDFsWmRuVWxYWGlvQW5TQXRvbmhQY0poOStFQ01hajJPOTkzWVo5VkpXdEtjSDRTMDl0SHJmYlV0WjFzVDJ3L0VhN3paa1dWUW9EeXdHK3RiZGxOVUFlb1p3SHpNUGU4ZGc3dnVEUWp2b1kvb2d6YUFZTnhBdW11NFlhYkUwNDdrZHhuMkF3d2gxT09oaGRDWGp1UHE2akhXQ3ZlNWdQNUVMbmxjZVRNSWk5eWRXRlAvenB3aU9ZZXdsOE00OFE0cEVZMkdNdmlhQUhXcTR6QmhuNCs1eHlZRnRWSTl2a2oyYW5uYVhpTDk0YXpVRTI3R1lQSXVBMWNCNEkzY3c4YTlUU1BXek0xNmpKcDZXRWpUWDkzcXdYYk9HY1NEYnRISloxa1ZrNUZVZVQ5N09Ydm5xbHhlaW1ZU2ZITncrVHlmbnFmaldwN1ZCOXV0TDZma2ZsZkxIZXRKUXNkYTVsYXdSNDdsMGZYbmlVTUJ6aGtEUHkydWR0Q05zSGtHYXpZdTFacWJXRmtQVXBpV0c5T1BXc2UyVTJkdnZvZEFjOVNDREMrK2pKRzlHVFg2SlQwTzdja3FvRkJncDRJWTcyR1VoQTM4UUFkdnNNOUhkbWdOZXVpeENoUVV3VFRLTEFlOXAwc2FOZ0hteTZUWVNzZ2V0bWkvNWF3YzRLZU9kWDE1UHg4YUZIZ2lTa09NQXNESU9Rd01ZTjRyM2xZZHZsNmNqakpBenAvMFNldkpCanh0elVJT1pKUkNrTEk3Ym5PZXo1THJhMWJCcDNITVFFQk9Ed3RRSU16WURoTjBrSUtFL1lQZ3Y5UDdBRU8yK2lJd25paEJIOG01UFEzNHVra0trcHhGem1KZW9PemszdlBOZUNQSjFhNmNySVlsclp2SjNOUmJwU1hpM1Z2V2xybVZ0dlpWSTRYN1o2N1VQZFZyRHpoMGVYZDZQek8wTGp1dy9udzlIZDVZY2h1WXV4bDVkdzloblJSSmFFUHhRbkkvOFREMytNVHRuSnlZOVN0cWVMTkR5MXAvUnl1UjZQYjI0ZXlwL3BQeGo1bVR3SjJjTFRYNFAvSlAzeThQTDg2bW9xUiszRjJmSVJMNnBFajIreVpWYjhjTDMrTUZWTHY5WEZXUWYvZEVUV2MxbkRoY0s5eStPelU1K0UyMnZsZVNqeC9nWnZzeC8vc3QvdGxHN0svZ2hjTkpmSGs2UHhMbG8yYnpjamFkNWFXTm5CUGhNY2xFQ1Y3QUJ1SnNXZUxFdXpUZ2RsOWNvZWV4ZWo4K3Q5L3RqMUQvZjc0ZGFiSEIxK3l4TjRrVTFoNmxsVkdtU1djS252YVFBVGpFajRlaDd6UnVOdnVSKzcvbS80UjdFYjRDOHo2amFmdzRIN3hBVFhvN0cxaFhSYU5ET0phQkI2RVJmeFNCd2Npb09oaUlhQ0RNWG9RQ1R3ZkNSd0tCZ1duRHFEVVNLU0F4RU9CU1FzNUVCRVJGQm9Ib2tvRUNIWUh3ak1SUUNkVEJ3a1loaUl3MGdjSFlwUnNDRTI2N2JUNTduc1ROekNaN1ZhOVRjdmVMK3kwOXRiczRZc0diU1diWE43Qys2Z21iWXc2L1pXcGcxeTF6ZHlucnhDWXk5b3o1bmJkNEF5MmJSM0tlejdWYTdiMlYxbWpFNWhzLzBKYWgyWEZOMng1MHlpc1FwQjBqYUZtOVlWRis3TGpUMGx4bWRtMmhVQW1lR1o1cG9oRGdjeGduc29oTHlRWWhRU1YydVpUTFBNdUFLbWdYcXpTOXMrS3JXd0VQenBjMEZSbXRYSExITlpkdGNCT1NCa2lLZm13V1YvMjJTdGEvWCtmbklXTGNmdDlCR1hKKzhmUDBmTnhYbXVwb01CNEVOZEF5Y0cyTFRzK253WWZyeGNGNS8vZWMyUGw0dkY5ZVA3SWRnQXJBWGhrREU1RlJlYmdpUTNYUVdTTjVQdDBMQW9xcFVCeDFxN01GOWhEcVNmTGphZDlPTnltYmZQeGZMdWlNdFhiVlVVWGFud0h5WGZBQUxwOThwMDJUYzBkdk52YVBycDQraW5iQ3JOd2RFTkxadEpsZVoxa3EwZ3NTWi9Ob09Rd1oxRG93Q1M2Q1FnR0s1RUNFWGVuQytLTnIrQVlnK0N0bzF4M2h6WVNtb0Z5LzhTWm0zU3hYUTMxWVovQ1hTTGF1Sk1wcHFIaUhhTGlwbENpVTdnaVVNSnJYU1ljUk82U3VpL3FTZUJkMnFyUmQzeHJvRzNLd2YvQllncG1nNlFFQUFBIiwic2hyVG9rZW4iOiJleUpoYkdjaU9pSlNVekkxTmlJc0luUjVjQ0k2SW5CdmNDSjkuZXlKaGRDSTZJbVY1U2pCbFdFRnBUMmxLUzFZeFVXbE1RMHBvWWtkamFVOXBTbE5WZWtreFRtbEpjMGx1WnpGa1EwazJTV2t4VEZOVVRsSlBWelZQVldwa2FWVnRPVzFsUnpGc1YyMDVXV05YU2tsWGEyUnNaSGxKYzBsdGRIQmFRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsS09TNWxlVXBvWkZkUmFVOXBTbWxPUkZac1RVUnJkMWxUTVd0WlYwcHRURlJSZUU1RVZYUlpWRUV5VDBNd2QwOUhSVFJOYW14cFRYcENiRTlIVVdsTVEwcHdZek5OYVU5cFNtOWtTRkozWTNwdmRrd3pUakJqZVRVellWYzFhMkl6WkhwTWJUVnNaRU01YWxwSFRURlpWMVpzV1ZNd2VFNVhUVEZNVkZKcldXcFpkRmxxUVROUFV6RnRXVEpHYTFwRVNURk5SRlpyV1hwSmRrbHBkMmxoVjBZd1NXcHZlRTVxWjNwT2VrRjNUMVJKTVV4RFNuVlpiVmxwVDJwRk1rOUVUVE5OUkVFMVRXcFZjMGx0VmpSalEwazJUVlJaTkUxNll6Uk9lbGw1VGxOM2FWbFhiSFpKYW05cFVsUktZVm94YkZGYU0wNTNWRWh2ZVdGNlNrNVpWV3QyV2tSS1QxcDZWbUZOUkVKWlZtdEdRbEJVTUdsTVEwcG9ZMGhDY0ZwRFNUWkpiVVY2V1ZSTmVsbDZTbWhNVkVrMVQwZFZkRTVFUm10TlV6QTFUVlJOTTB4WFJURk9SRmw1VFcxVk1rOUVSbXBaZVVselNXMUdkMk5IYkd0WlYwNTVTV3B2YVUxcFNYTkpiVTUxV21sSk5tVjVTbkZrTW5OcFQyNXphV0V6VWpWSmFtOXBWV3hPUWtscGQybGlhVWsyU1c1TmVGTnJXalZVYlhnd1pXMWpOR1ZzWkhaYWJtY3lUMFZPTldGcVZrOWlSRXBYVW10S1lWTlZkRzlYYms0MVRteEpNMXBIV20xaVJ6RjVWRU13TVZScVpETmhNa3AzVkdwc2JFOUZjRVphUmxwcFZVVm9hbGRITldwU1JHaHBZakJhVjFOc1NuUlZTRVpOVjBoa2ExcEdhSE5XVlVaNFltNUNVbFZYVFRCUmJuQmhXVmhrUjFsdVFrNU5SRTQyVVZWMGJHUnNWWGxpTWpsaFZVVlNRMVpFUm5CalZrRjNaREpPYzFwSFdtbFdWRkpZVlhwc2VtSkhVbEJNVjA1T1pGaE9NbFZJVG10amJrSllWMGROZVV4WWFGUmlWRkpIVjI1YVYxcHJNV3hhYlRRMVZqRldUR0l5Y0c1T01Vb3daRVZzWVdNeE9WaFhSVVpFWTFWSmVFOVZXazlUVm5CMldURnNRMU5JUWpGbFIyaGhZekZzTlV4VVJsbFdWMlJ5WW0xU05Gb3phSGRTUnpVMFRYcFZNMVJYY0RaT1ZGcDVVMGhrVFU5RldrSlZSV3d6VkRKNFVWVlhPVmhTYTI4MFZsVjBNMlJIZUhoa2F6UjNaRlUxYUUweWJHcGxXRkpMVm0xMGIxcFhVakpOVmtJMFZtNWthMkZGYkVWU1IyaE9ZVEZPUjFac1NtMWtSelUxWTJ3NVJrNHlVVFJSYkVJMVdXMTRiRTlYV25Oa00zQkNVakJLZUZKNlVURlZha295VVROR1YxUnJSazFTYlVwMVdUSk9jVkpITlVsa1JWWnRWVk5KYzBsdFZXbFBhVXBDVlZWR1EwbHBkMmxaVjNodVNXcHZhVlZzVFhsT1ZGbHBURU5LY21GWFVXbFBhVXBTVG14YU1rNUZSakZNV0ZWNlkwUmtVR1J1Y0hWU2EyaE5VekU1V1ZZelVuWk5TRXBRV0hwc2RscHJiRnBTYWxwcFZrVldhMVJFVGxwSmJqRTVURU5LY0ZwSVFXbFBhVXB2WkVoU2QyTjZiM1pNTTA0d1kzazFNMkZYTld0aU0yUjZURzAxYkdSRE9XcGFSMDB4V1ZkV2JGbFRNSGhPVjAweFRGUlNhMWxxV1hSWmFrRXpUMU14YlZreVJtdGFSRWt4VFVSV2ExbDZTWFpKYVhkcFlqSnNhMGxxYjJsTmJVMHpUMWRPYVU1NlozUk5NazVxV1ZNd01FMHlWbWxNVjBwc1dXcEpkRmxxUVRWT2JWWnBUMVJKTUU1dFJUUkphWGRwWTIxbmFVOXBTWGRNYTBaVFUxVkZNbU5VWkVkbGJVNVdWbTVTY2sxdVpHeGFibXd3VFVkNFExcElaRzVpTUhCWlkyeE9aazF0ZEZkUmJUbElXakJzZUZFeU1UWlNSemgzVlRCR1FsRlROR2xNUTBwNlpGZEphVTlwU1hsWmVtTTFXVEpKTTA5RE1IcFpNazVvVEZSUmVscFhTWFJaYlZacFRXa3hhVTFFYXpKYVYwazFUV3BSTWxsVVoybE1RMG93WVZkUmFVOXBTbXBhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1dsTVEwb3haRWRyYVU5cFNuUlViVGxYWVdwQ2FXTjVNVVprVmxsNlYwWkpOV0pVVWpOa1JVWkNTV2wzYVdSdFZubEphbTlwVFZNMGQwbHVNQzVrUVhGZmFEa3ROMUEyZVMwM2MyTjJXVVV4V1RaMExWcDVUREozVDJKa2EzUXRNbWhOVmtabk0wMWlXUzF3YlZsRE4zbElkWGRqVUZNdFJuTjVlV1Z0ZEU5eGRuSkdlVWxtVXpWVmEwSlhZbGRtY0RSaGNFdERkRGRKZUZSSFdIRnBkR3gwZEdWRmRGWktMVkpuY0cxT1NUSXhPSEkzU2paYU0wOVlTblJ2ZGxoa1RVbFpaaTFQVkRreVlsVkRZVEZMVmtWcWRYQkRiMVoyT1dneVlsVlBObTlsVlZZMVRWbDBRazl2YWtoQk1FZFNRMVp3Y0ZkNFRYTm1jVWQ1WDFSMlprOUxOVzEwY0dSbFJFWnZVWGRQWVhKcWIxTnVZMDQ0TVd4UFdUQnZiV0l4YlZreU1sUlVWbVZOTkZKak56RlpOWEZtT1VVMlpWVlBkbVI1TmpKaFdFTnJWblozU1ZWVVQwSTRVRVZ3WjBodWFWQmZWMTkzYnpWSU1tc3lUVUpsVDIxUlRuSm9NbGxyV0RWUVZUUnZZMnRoZUd0SVdWOUZhVGhOY0dWT1prbFBlakF0UWxGMVdUUnllbU5uYzBWaFJ6UnhObmNpTENKMGN5STZNVFk0TXpjME16STFPU3dpWWlJNklucE1iMkV0WmpVeU1XVTVPRFJhVTNGQ1VEQllXak5TTkZsclFURkpPV2h1TUhobWJVUTBSV2g2UjNjaUxDSnViMjVqWlNJNkltVXhOVGt3TlRWaFltTXhOelE0WkRRNU1EWTFNVE16WWpjeFkyRTJNVEV3SWl3aVkyNW1JanA3SW1wM2F5STZleUpyYVdRaU9pSmtSMFl5Tm5wTE16TXhaMDlQZDE4MGVWOVZVMlkyWmpaelVVdFNiakUzVUdsUlZYSjJhVlV4TFZSdklpd2laU0k2SWtGUlFVSWlMQ0pyZEhraU9pSlNVMEVpTENKdUlqb2ljekZLUm5sT2JIUjZaemg2VjI5bWVEWTRRM2xxTlU1c01sWkdRbHBKUzJoYWMzazJVamRrWm1ac2JYSk1MVFZPTjNkclluQk9PV1U0U2tWa1ZtSlFTR05ZYm1ORU9HSnZSbFpLVW0xUWNVeFlkMlJrV0d4VlFYRnVjRkZSWXpSQ2VscGhkMFppY0Uwd00zcEJTMlYyVlRKdmIxcFFSRUpVTVdseFVEQjNZMnhrWm1KVk5GZFRPWE5zWkU4dFkwMTFjM1pRYzJSeWNGZFlZekl0ZUZOdE5FWmFkbFptVFdWbWJqbFhWVXR2YW1jM1VuUjBTVnB6WDFkWVFVTnhRakU1Ums1SldtOWpXVUpJY0hWNGFGcHpXWGt0TVZoVloydHVaSGhuZUhCRWJuZ3pOVGROYW5vMU5uSklkMHc0UmtGUVNYZFBiRkJSYjFkR1NqaFZTM2QwYkhGMlRqQjFUbUV6YVdONWRFcFdhMmhsWkhZeFVIaFdkMlJvU1VSRWFFMXJVMFpXVW1aMGJubHlYMFUzWkRoQ1VIbGliR1U1Wm14M2VrRkhRbkZITkRWU01uWkRjVlpPUVV4R1ltNWpZMnBFYmtoMFJXWlJJbjE5ZlEuSmhJNnFuejlTMDB5S3dXODYzSkloRnQ2alU3cWQ4Yk1fWHJjMDNWZ2FLdm1nV1dtSG5DeldaOVgtdXZPLWNQNEFOQWIwam9lSTJWVjA0RkEwS25FSXBidXktM0IwbjVKaG00OG5CbERxRm50dktSdEVoNGhCc0ZGdnFpN1ZUSVlFR1MyaGYzTlFGWmlIM3luMlZQZG84cEZ3Q0pnajZrUGlfMFl6aUE3ZTQyVF91a0otbHhGaGx4MWdJVndSSHJiNV9vSzdiNVEzM2lIVW9YNGZEcFdtSHMxZnFGTU9BVlFsTVJMdkcxZHFqZk0tU0t3c1k4N3NkLWZsdmh4U04yWThHVGNwMWdyX09ucE9SblZwTGp1YVRXVWhnNFJpdFpZVE5pbFVjMFN4aG0tZGg1ZGtKc1lCY0J5akRRU0ktb0swQ29ZTk1UZjdzN3dQdHJSYm9RMjVRIn0.\u0022,\u0022correlationId\u0022:\u0022e8fabd46-2673-403c-9d93-44d05cd6f4e6\u0022}", - "messageId": "2c96ce11eb94463c9db2c5cfbb177af6", + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L3NlYUZjT1o3QkVPcHNLekFkRUU2VEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVlhMi9iT0JiOUs0SVgyQS9iMGlhcEJ4K0FzWEJzWjVKSjQ2U0oyMFVId1FZVVNjbWF5SkpHa21Pbm5mNzN2WlNkeEsyejArN3V6R0ljd0JaZjU1eDdSZkxlbTA4OXJmSjhWclpaa21uVlptWFJrNTk2U1YwdTNXOW1lckxIcGRLTkpMRlJpc1lDaVJBekZJUUJSWEVjQlVpeG1GS05zZUltdU1YZGgzQ1VpRWdnRytNRVdWOHpGQXBmWVlPeEZuSGNlOTB6V1ZQbDZtR21saGJ3b2NNV3BpcXpvajExZk1KRUprcXdSZ24xQlFwRW9wR0lLRUZKRWlZQnNSSEJBWU0xdVNyU2xVcXRXMU9zOHZ4MXIxSjFtK21zVWp1Z21HZ1RzQ2hFSktZYUJVeHpwQklkSWgzRzFtZlVXazBVQUMweVl5eVluYWk4c2M5YTVnK1ZVOWZZK3Q3V282cUNtVlZkVnJadUg0NVV1dVg4L0xyWGxyK0RvNVFKa1ltNFFwZ0huRktNNDRpRjMzVFVGZ1JqOU1MWDQrZTdIR1dFN3hNcUFzU2l4RWVCSWdFQ0l4Z3loaGxsTURjK1pvZU9xbTFUcm1yZDRmYSt4K3AvNDhFOEsrNGE1MFRWdGtvdkFHelJ0bFVqQndOVlpmMGt6OUpGQytzMkQvM21EdDVKWDVkTE56SzRwd05kRFRaSWEyUlhSWWt3Nld1OU4wZnJ3VDBaSkdWOVo4MkFZMnVEVURDVVJDSkJnU0UrRXBhRDF4bE5LSTZ0VmJFWVVEYkl5TUFQeEdBcjVlL1prSUxvcFRXWkdoWE4ydFlnVG10UXRuUWJCMFNsNElUbVQ2SDRVY3hPYzIxL3RycjlVeWpiU3RucFdwbHFYcXVpcWNyYXFZTW1hQ04rbndWOUV2bDlpbjNwQjR3UGVwOTNmaCtYUldzTG1QdXBwN2VQdTRPcHFpcmZYVm1EeHJqakdlZGxEQVAzUTN4VDN4VGxFSGswcE56RDN1bk1PNzBNUEVKWkg4TWZjY1BOc0FGdndXTFgwTVBIS1JIdlI3UlBDZWtUNGJ1aGVEaWVTN0k3VGE2akhXS3ZlMWdPMWNwa3BSZFNFbUx2YW40NUdMMi85T0IyOGdSOCt4NGh4Q09Pbm51Q1FRKzBYQ2NISGZnYnBHcFl0N3BDZFpOOXRIdnRKSlovOHpab0NjTGhQSHZnQWErQkcwR2FadUhWVnQrN2grMzBEV3F5dEZCd3ROTGZXdldNTFowVm5XUFVNTk1XclpKYXBSSmZuWncvOTFWckk2OW03eGZweFVTOWk5NWVURjd4WTFWOGJGcmZEdlpVTGxlYmJVdXJ3bVJHdFZhQzZkNjd5YVZIQ2R3a09BcDg4cFhST3llMkQ2Q3RUdktOVnl0amFuQWFUT0R3eWtLdmRqdG1PKzBRbmU2aGg4SzUrQkNkZkI4NitScWRnblpubHRJdE1GRFlDaEZtQnd5QklDSDlOa00zN1pDQi9zRU1zTzg2RHhFYWNpb3dZU0hZMmljRURoM25mUkY1Y09aRWgxMWJpRGVQMkY4SzJIc0Qzdm44M2RYc2RBSTdXakRPbzBENEVHYzVYUDNCUytUMG1aeUxLS0wvRXpsNUlnOVl5SDBodUdBTTg0ajdMM0RENGVwY1c2bW1BUUVCSjhDUG82OEVoQUVtK1BzVWdLVitlTWhDL3c4czRkNUdkQ1FoRno0QS90NGs5SThpeVZWc2M3bFVXWUc2aTNQYnU4eU0zSjI1RFlyWFZ1VnBXV2Z0WWluanRmWXFwZTlzVzZtczl0WTJodXRscDdkK3FOb1NEdjVvZW4wN1ByOGxsTitlbkkvR3Q5Y25JM0xMc1pjVmNQVloyYjZablp5Mjc4WEZ6L09USXNvLy9MaGErL1BadkJXYnlHZkI5TzVWcHM2cWJMWDZsZjdUSjcrU1J5RTdlUG90K0kyUHhmSEhFOEdyVTc2WjVWZnBxN01Oem96V3Y0UlhhdjNobUgrWXBQRUhzK2pnSDIvSWFxa3FDQ2lCZDMzNjVteEFvbDFZZVJvUzNnK01VZ2l5WC9XN2tOSXRPUnlCUUhOOWVqV2Q3YU1seTNZN0VtZHREVzkyZU1nRTl5UlFpVDNBN1NMdXFhS3dtM2hZbEYvTXg5N2wrUHpkSVQ5My9hUERmb2g2VjlQSlM1YkFScmE1clJabFlaRzloNWgrb0FHbVlFU2lMOWY1M25qMmt2bmM5YjlnSDhWdUlIaGVVYlhaRXU3YlJ5YUlqcmF1YXNpblpiTlFpSWFSRndTU01CbE81TkZJOHJFY1V6bU81REdUazBpS1VBcDRGbklzSk9WeU9uRVBJeXlqc1NSSGNud3N3eVBwajZYd0phTnlSR1RneStOaktjWnlTaVFkU1RLUmVMY0o3S2J0OUhrdU9aTTM4Rm12MS8zdEJ1K1hkWHB6WXplUUpvUFdvbTF1YnNBY3REQTFyTHE1VVhHRFhQUkd6cEl2MFB4bnRLZTg3VGVBRXRXMHR6R2MrM1ZtMnNWdFlxMko0YkQ5QllvZGx4WGQraytKUkZOckJDbGJDb0hXVlJmdXk0MDlKc1p2Yk5wVkFDcmhRU0pJaktpeUdBWGNKaWlHK3hwUnc0MzJDYmVXSnE2Q2FhRGc3TEsyQzYxWE5UZy9mYW9vQ3J1K1NCS1haWGNka0FKQ2ZuaG1IMXp5dDh2V3VsWlA0SVZPeFk4bnhjYUcvNWd2OHV6dFQrYnU3WEFJK0ZEWXdJM1JwWlpIWTNaNWZMMEs4ZnNmSHZMeGZOcEcwelhNQWRnYWhFUEM1RlJjYml1U3pIWWxTTlpjN1laR2VWNnVMUmpXMWl2N0dkWkE5dWw4MDBrL0xlNno5cWxhM2g5eDZXcGQ1bmxYS3Z5SHVUZkFQR2ZmME5qUHY2RTVhS3c2MWhjL3NhUHBSZFdjZlJ5WjZUU2FqeUN4eG4rMXc4am5GRWNoeEVUQy9JQkFKQVpuWk0zNUttK3pTNmozd0cwN0wyZk5VVjBxbzJFRFBEdmEySGlWN3VmYThGK0JiUkZOUmNLSVlTaG1qS1BBV25qUzhJSnhBaEdYbVNDaXlyM1cvNnFrQk42MExsZFZ4N3NCM3E0aS9CY3pKTDdxa3hBQUFBPT0iLCJzaHJUb2tlbiI6ImV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJbkJ2Y0NKOS5leUpoZENJNkltVjVTakJsV0VGcFQybEtTMVl4VVdsTVEwcG9Za2RqYVU5cFNsTlZla2t4VG1sSmMwbHVaekZrUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEpjMGx0ZEhCYVEwazJTV2t4VEZOVVRsSlBWelZQVldwa2FWVnRPVzFsUnpGc1YyMDVXV05YU2tsWGEyUnNaSGxLT1M1bGVVcG9aRmRSYVU5cFNtbE9SRlpzVFVScmQxbFRNV3RaVjBwdFRGUlJlRTVFVlhSWlZFRXlUME13ZDA5SFJUUk5hbXhwVFhwQ2JFOUhVV2xNUTBwd1l6Tk5hVTlwU205a1NGSjNZM3B2ZGt3elRqQmplVFV6WVZjMWEySXpaSHBNYlRWc1pFTTVhbHBIVFRGWlYxWnNXVk13ZUU1WFRURk1WRkpyV1dwWmRGbHFRVE5QVXpGdFdUSkdhMXBFU1RGTlJGWnJXWHBKZGtscGQybGhWMFl3U1dwdmVFNXFaekZOVkVVMVRsUlplVXhEU25WWmJWbHBUMnBGTWs5RVZYaE5WR3N4VG1wSmMwbHRWalJqUTBrMlRWUlpORTVVU1hkT2Fra3lUV2wzYVZsWGJIWkphbTlwVWxSS1lWb3hiRVJoV0hCclpGVmplbFZIVm1GbGFtUllZMms1ZEZaVGRFMWtNbU16WWxWR00xRlVNR2xNUTBwb1kwaENjRnBEU1RaSmJVVjZXVlJOZWxsNlNtaE1WRWsxVDBkVmRFNUVSbXROVXpBMVRWUk5NMHhYUlRGT1JGbDVUVzFWTWs5RVJtcFplVWx6U1cxR2QyTkhiR3RaVjA1NVNXcHZhVTFwU1hOSmJVNTFXbWxKTm1WNVNuRmtNbk5wVDI1emFXRXpValZKYW05cFZXeE9Ra2xwZDJsaWFVazJTVzVTUzFsdE5VdFVNMWw0VmpCNE5GcHRkekpPVldSU1RsUkthMDFYT0ROaE1ITjBaRE5HZVZOR1FuaFZNVkpTVFVad00weFZNSGxXTURWWFZFaEthMU5yVmxkWlZYQkZUa2hzYlZWdVZrVmlNV3hUVVdzMVJGUlZlRU5qYW14UVVXMXdXVk5yUm1wWmJXTjVaR3BTU0dOclZrcGFWMVYzVGxkc2QxVlVTWHBrZWxwM1RqTmFiRTE2UWt4T1YxSktVbXRzZFdOSFdubFZiRnBxWkdwV01tUlhTbkZVV0hCWlRta3dkMVl6YkhGUlYxSjVWMVJTZFU1WGVGZGlNRGwxVGtWS2NWSldiM1JPYlVaMVVXNWFhMVZ0Vm10V1JYQTBVbXQwYjFVeWNIQk1WbWh5V1ZoS2Fsb3lVWGRPVjFwcFl6TnZOVlV4YkZOVk1IaEVWbTFhZEZOdWFFNVBWRkp1VmtSb00xTnRhR2hUZWtwRlRtMU9hVlZJVFhsWlZFSlhWVVZ3VFdGc09WZFNSVkY1V1d4b2FWZHJlR3BSTTJ4NlUxaHdhRTVZYXpSWmExSTJUbFYwZDFZd1RtNVhVekZVV2pGR1dWTlVSa2RpZWxGMFZXcG9iVlF5YUROYWJYUldXbXRXYkZaSE1UTlRSMUo1Wkd3NWNsVkZjRTlWYWxaQ1lXNUpORk5xWTNkaVJVWXhaVWRuTVZGdFdraFBWbkIzVFZST2IyRlZlSFpqTTBVMFVqSTVSMUV6VWt4bGJYaHZZVWQ0ZUU1c1JYZGlWVTU1WTI1b2Jsa3dkM2hVYm1oVVZWTkpjMGx0VldsUGFVcENWVlZHUTBscGQybFpWM2h1U1dwdmFWVnNUWGxPVkZscFRFTktjbUZYVVdsUGFVcDVWV3hPY2xWRVFsZE9iWGN6Wld3NVRsUlhUbVpVZWxKelZsVmFTbHBIUmxOWk0xbDVZWHBzVTFKRlJUTmpWMVpNVmpGV1JHUXpSa1pKYmpFNVRFTktjRnBJUVdsUGFVcHZaRWhTZDJONmIzWk1NMDR3WTNrMU0yRlhOV3RpTTJSNlRHMDFiR1JET1dwYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNYWkphWGRwWWpKc2EwbHFiMmxOYlUwelQxZE9hVTU2WjNSTk1rNXFXVk13TUUweVZtbE1WMHBzV1dwSmRGbHFRVFZPYlZacFQxUkpNRTV0UlRSSmFYZHBZMjFuYVU5cFNYZE1hMFpUVTFWRk1tTlVaRWRsYlU1V1ZtNVNjazF1Wkd4YWJtd3dUVWQ0UTFwSVpHNWlNSEJaWTJ4T1prMXRkRmRSYlRsSVdqQnNlRkV5TVRaU1J6aDNWVEJHUWxGVE5HbE1RMHA2WkZkSmFVOXBTWGxaZW1NMVdUSkpNMDlETUhwWk1rNW9URlJSZWxwWFNYUlpiVlpwVFdreGFVMUVhekphVjBrMVRXcFJNbGxVWjJsTVEwb3dZVmRSYVU5cFNtcGFSMDB4V1ZkV2JGbFRNSGhPVjAweFRGUlNhMWxxV1hSWmFrRXpUMU14YlZreVJtdGFSRWt4VFVSV2ExbDZTV2xNUTBveFpFZHJhVTlwU2s1YWF6QTFVMVpDVlZkVlZrWmFWVkpKWkVVNGQyTldUbkJsYTBaQ1NXbDNhV1J0Vm5sSmFtOXBUVk0wZDBsdU1DNU9ObEZ4TWsxamMwdDFhVFpVZG5KTFp6QlVhWFpwZDFKNFgwdEthMUpWWW1oWE1ETkVMWGxQZVUxeVMweE1jMWxCVlc5R01XZHRSMHRrUlMxakxWTktZVGRzVEcxVU1tdFVaWGRWU2pSRFltRkZZbmxCZG1OSlZYQk1lVkpOWldWVFFTMTBhUzFvYWtkRlNFeHVTM2N6TWxONWFtWldkWE55YUdNelZHZHVWM1pYYTFCamIxODNSSFpSWWpoWWRuZzBlRGxwUWs5eFNHOVVRazEzVTJGSlpuSlVSbXQ1T0ZGRE9YcElTbVJuYzFoTFVFeDZNV3B6TWxCd1J5MXROVlZZVW1kRk5YSnRUVlpEVEVKZk1saEpiVGR3VGpsdlUyODVTbGRDYUdweU0yUmhNREZmVEVWb2VubERWMFJYU2xZM2JYWnBUbkYwU1MxUlVqRXdOMHBQTVZsWE4wVTJOeTFIUXkxaFltbDNSa3BXZWtsM1ZYaExOVTlNYzNCT04ydHBObmswTkdORlJIb3RZVXhzY1RnelNqWnhNM2ROVDJNemJsQmtka2RHT1cxT1ZVUkhkREJSVVZSZmVtMURNbEJ0TVZoVFZFRWlMQ0owY3lJNk1UWTROVEV5T1RJNE55d2lZaUk2SWs1c2NEbHRYMUZYUVc1T04xVmhjVk5TY2tKQmVYVlBkRTVSYlZWWFJtb3plSFZ1ZUZoSFlWSkxhakFpTENKdWIyNWpaU0k2SW1WalpEVXhOVEUxWmpZME1EUTBPV1ZoWmpFek5UVTBPVGcxWWpBNE9EYzBJaXdpWTI1bUlqcDdJbXAzYXlJNmV5SnJhV1FpT2lJM2RWOHljMjFFU201VE1WcGFUemhEUkZONWRVWk9XVTVZUjNNdGFXbEZhVVpITURabVJHeEtZM2hqSWl3aVpTSTZJa0ZSUVVJaUxDSnJkSGtpT2lKU1UwRWlMQ0p1SWpvaWRFcGlia3BQZGpGWFRIaG1iRFkxUjFFMU1tUXhiemRyU3kxM2NYSklVSEZUVkZFd1duY3RUVEpYVGxaTWNtUktSVlpoU2tRMGVXWlNkVVJ2V1ZKQ1RrTk5URUp5T1U5Q2FsaEtRV05pWnpKMk5FZHlSVWxsWlRBMWFYQlJNak4zTm5BM2RtVXpNRXMxWkVsR1NXNXdabkpTVm1OMk5YWjFZbXBOZWxnMkxUQlhlV3BCWkhKWk5HNDFiRlp2VDI0MFFtcEZXaTAyWVc1Q2RtUlNaV1JVU25oR1MyaFRhbWt0V0d0aGNtTm5aREExWm1KemVqbFRXVkpUVEVOV1ptMUtlRTA1TkdkVU9IZEthR0ZMTWtRMlkySlFjekpoTUZaUVNreHFYMVpFUkRKaVdHSmFUR05EZVhOSmVtRTFlVGhpUkhvMVMzQlhRMmRaTFZOblVWaEpNVVp2TkMxU09HWlBhSGRtYTFWbVJXVlViWGRJWkhKMlgydFFTazVTTlVGcWNqaEtOekJzUVhWNGFEVkNaa2M1V25BeE0yaHBURzl6Y1RoSGIwWkRkRXQ2Ykdob2JIRTJVVEJ0UTNKeWVHZGpUREZPZUZOUkluMTlmUS5zaWktaDNybUFMdkxoc2l6eDVPRWoxVnFXMjF3Z2tZOFEyelNLcTFnUlp3OTN4dVZ4U1Ytd21DYVYwZ3VZZFhvMDg0NFJUcU5KQVJ4OXRWekFQcFU1TFR4Q1dYSTFTMFFxUlZFQzFHSFRfUzBvZG9NU2lTZmxxV0hBMzJ6S2I0ZjBab2liVWJ5OWdmbnpZcVppTHFWNDNkaW1QRHlwVy1uRV9IVk5VWUZfemVlalU1OWt1ZWU2b3JoU2ptM3loc3cyWVhkWG5tZDk0OEdid1dJUlF6N0VyQUtNVEItNWgxdVNpYXdxV1lVMFc0WGhVcXdhR2NGN1ZzeWluZldYQ2cyblAyNjBERWNLTFdZZEtZb0tzUjl4YjE3bDVncWlGdHBKb0ZFMkMxOG4tc0tkYmVYUk1kZkp2UzlUb3J5dGxGcmpwZmN2SjhrbTBBNHNYWmZCUTd5S2cifQ.\u0022,\u0022correlationId\u0022:\u0022b29f71d7-b778-4ee7-bce0-0f6837d462af\u0022}", + "messageId": "e9502be2d0ad40eba8125a9616efa72e", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -11,13 +11,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-ebc6f1111019886fdd529cbf199a461d-143bc4e0c2b1e34b-00" + "Diagnostic-Id": "00-5d7c0122784207fc451776a3fa5c1080-2538fa0444e58ee9-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9iekNWZmdhZUJFVzJuc1JvYmlwOWZ3P2k9MSZlPTYzODE5Mjc1MTQyOTUxMDU4NA==\u0022,\u0022correlationId\u0022:\u0022e8fabd46-2673-403c-9d93-44d05cd6f4e6\u0022},\u0022time\u0022:\u00222023-05-10T18:27:41.5837754\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022}]", - "messageId": "e261d96ea4b64924981e261af7948e56", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/411f1200-b763-4317-b5bc-9b58fb43507f\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022411f1200-b763-4317-b5bc-9b58fb43507f\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L3NlYUZjT1o3QkVPcHNLekFkRUU2VEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022correlationId\u0022:\u0022b29f71d7-b778-4ee7-bce0-0f6837d462af\u0022},\u0022time\u0022:\u00222023-05-26T19:28:10.5807105\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/411f1200-b763-4317-b5bc-9b58fb43507f\u0022}]", + "messageId": "dd2bec75226249f3b4779ca8a5abbc14", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -26,13 +26,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-cb8c248960fac76b39235dc9fc9358a9-06b0e8f10948efe3-00" + "Diagnostic-Id": "00-ad8d5b248ba7e69867fb71629bf769a7-4f8733f2291b3e8f-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9iekNWZmdhZUJFVzJuc1JvYmlwOWZ3P2k9MSZlPTYzODE5Mjc1MTQyOTUxMDU4NA==\u0022,\u0022correlationId\u0022:\u0022e8fabd46-2673-403c-9d93-44d05cd6f4e6\u0022},\u0022time\u0022:\u00222023-05-10T18:27:41.5837754\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022}]", - "messageId": "8baf26cda6f74acb979dd97a7f74bb09", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/411f1200-b763-4317-b5bc-9b58fb43507f\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022411f1200-b763-4317-b5bc-9b58fb43507f\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L3NlYUZjT1o3QkVPcHNLekFkRUU2VEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022correlationId\u0022:\u0022b29f71d7-b778-4ee7-bce0-0f6837d462af\u0022},\u0022time\u0022:\u00222023-05-26T19:28:10.5807105\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/411f1200-b763-4317-b5bc-9b58fb43507f\u0022}]", + "messageId": "81d2110e8a3e4d82bddbc03026bc7791", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -41,13 +41,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-11f70a1003900c74620b3f99f642542c-0c27311de93b4c55-00" + "Diagnostic-Id": "00-18bfac2076f3853d95db4e355a191bb6-4ba194c700574bd3-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallDisconnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9iekNWZmdhZUJFVzJuc1JvYmlwOWZ3P2k9MSZlPTYzODE5Mjc1MTQyOTUxMDU4NA==\u0022,\u0022correlationId\u0022:\u0022e8fabd46-2673-403c-9d93-44d05cd6f4e6\u0022},\u0022time\u0022:\u00222023-05-10T18:27:42.6306614\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-0632-4aed-8aa2-e1bd0116d7e3\u0022}]", - "messageId": "c24140908ac94028ac858ff179ced625", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/411f1200-b763-4317-b5bc-9b58fb43507f\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallDisconnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022411f1200-b763-4317-b5bc-9b58fb43507f\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L3NlYUZjT1o3QkVPcHNLekFkRUU2VEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022correlationId\u0022:\u0022b29f71d7-b778-4ee7-bce0-0f6837d462af\u0022},\u0022time\u0022:\u00222023-05-26T19:28:11.706554\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/411f1200-b763-4317-b5bc-9b58fb43507f\u0022}]", + "messageId": "a49afd7ba9cf49c9b3a4a2716fbb9e96", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -56,7 +56,7 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-3049050651943be549ad3db8a636e7de-069a5e66e208eb64-00" + "Diagnostic-Id": "00-e4f579d1c2275a88cf0fee0be970ccbc-5b8d6d17c25c1746-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTestAsync.json b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTestAsync.json index 05f9f46074bc0..d1b17f1df0697 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTestAsync.json +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallAutomationClientAutomatedLiveTests/CreateCallToACSGetCallAndHangUpCallTestAsync.json @@ -1,8 +1,8 @@ { "entries": [ { - "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi92NHpXZ25YekNrQ1FVaXZIWkd0a1d3P2k9MTkmZT02MzgxOTI3NDY3NzYzOTI1MTk=\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVlhMi9iUmhiOUs0UVc2SWQxUnB3WEh6T0FzSkJsMlhFVHU0NGZTUnNZYXd5SFE0b1JSUklrOVhLYS83NTNLTm1XbzJ6cWR0dEZHWURXdk00NTkzTHV6TDM1M05NcXo4L0xOa3N5cmRxc0xIcnljeStweTVuOW04VTkyUXVsMG8wa1Vhd1VqUVFTSGc0UTl6aEZVZVJ6cElLSVVvMnhDbU4raDd1SGhFajVPa1lZeHo1aU1STW9ORXpoR05va0NIdXZlbkhXVkxsYW42dVpBWHpvTUVWY2xWblJubG8rTFNKQmZFYVFvRDVEWERHRmxDQUpvbDRRNHpERXd0Y1UxdVNxU09jcU5YWk5NYy96VjcxSzFXMm1zMHB0Z1Zoa3RGSlJnRVFzSXNSWkhDUEZxRVlpb1N4TUlrOHp4Z0Zva3NXeEFiTVRsVGZtU2N2MXVyTHFHbE12VEQyc0twaFoxV1ZsNm5aOXFOSU41NWRYdmJiOE14d0Zobjd0cU9BM0hiVUJ3UmpXNzcwZW5oYzVLdlk5N2hHQ1VSQ0EyM2xNQ1FwRFRsQmt2RVNvaEdyS2tuMUgxYVlwNTdYdWNIc3ZzZnEvZUREUGltbGpuYWphVnVrSmdFM2F0bXFrNjZvcTZ5ZDVsazVhV0xkYTk1c3BmSk8rTG1kMnhGMVFWMWV1MW1qZUxBM0N0Sy8xemd5dDNRVnhrN0tlbXRqbDFBK29GZ3laUUlFNlRRVlNDWThSVGFJNENzRTY2Z3VYQm01R1hNYUZ1eEh5cjJ4QVFQTE14SmthRnNCUjI4MnBRZGRNYlV4SndRWE4zMER2ZzVTdDR0cDhNcnI5RytqYUNObXFtc2ZWZGEyS3BpcHJxdzJhb015amZVSjRuM2lpRHlFdkdROUN0L2RsNi9SUldiU21nTW1mZTNyemN4dVRxcXJ5N1dubE5yR056Q2d2SXhoWURQQnRmVnVVQStRUTZ2a3NjTEJ6ZXU2Y1huQm9CMzBNLzRpZDBBd2FjQmNzdHcwOTJFN2h1QitFZllKeG4xSm1SNkxCNkZwQ3UzdHNSenZBVHZkak5sRHpPQ3NkajNMbU81ZlhGKzd3L1lWRE1IY0V2SmxEQ0hGSUNPeWhJd0xvZ1pidERFRUcvajZuR3RTdHJsRGRaUGRtcDUxRThwL09DczFBTm9TeUF4NXdHamdNWk54TW5Ocm9oZjJ4bWI1Q1RaWVdDcUlxL2Q2cUoyeHBqUWcyN1V3Yk5FOXFsY28wK09YNnFhOWF4akk1ZTNNelA2QjBuVSt1VC96czV1QWRTVTNwRDNkVXp1YXJUVXVySXM1aTFSb0psanMzUnhjT0pRd0gyT2VNUExkNTY4SjJEZExxSkY4NXRZcmpHbHpXcHlTRTd4VmdwN1piWmpOdkg1M3VvSHNDUEx5UEhyd1FQZmdhbllKMmE1YlNMVEJRd1BSeDhEVURGOFNqTDJEbzV1MHowTCtZQWJaZDV5R0loNUFLVEFMUGVRaTYwRkl3QjRKT2RPaTFnYnRtaS81Y3djNFhjTTZ1Ynk3UFQ0OWdlelBDT053VEFjemd6T1ArWm1zL0o2ZFA1S0h3ZmZvL2tRZVA1RFRnT01Ud3BqNWhvVThaMnpNY1FyNXpiYVdhQmdUd2tBQS85cDhMQUQxQ0VQd3lCWmdKYjUrRi9oOVl2SjJOYUVtOFVEREErN05KNkY5Rmtxdkk1SEttc2dKMTUrYW1kNWJGa2p3Y1d0SFNxRHd0NjZ5ZHpHUzAxRTZsOU5TMGxjcHFaMmtpT0Y2MmV1dDExWllRK01QeDFkM283STdROE83MTJYQjBkL1Y2U081QzdHUUZISDFHcHUvb21pOHpXdm5tZnZMUng1OE9EdHpGOHVUOTlkSEo5Q3BUczJOQ2w4SHgxUDJWL3B1Ulg4bURrQzA4L1MzNHF0U0x3K1RnVXp5ZWZ5Ukg2WGg4c0JoOVBCNmZuWnh6TWcyblUwYlc2WEd6VWgzOHd3bFp6VlFGOXdsM3JrN2Z2bkdKdjcxVkhvZUVjd0xCNUlaZjk5dEE2WmJzajhBOWMzVjZPVDdmUlV0bTdXWWt5dG9hdnV4Z253bk9TYUFTTzRDYlJhR2ppc0tzb2tGUlBwdVBuWXZSMmMwK2YyajdoL3Y5Y09sZGpvKytaUWxzWkpPYmFsSVdCcGtGM09sN0dtQUtSc1Ivdm80NW8vTnZtUi9hL20vWVI3RWQ0RThycWphYndYbjd3QVMzbzZtckdsSnAyVXdVMUJhK0EvbUhONUpIeDNJMGx2eFlIbnJTRDZVL2xtUWtENFVjQlRJY3kwTW1LWlhEUUE0UHdWbVNITWxnTEptUTNsZ2VjZWtKZVV5azhLVEFFaDlKNGx2QVl5NTlJZG4ybWpTcnR0UG4yTnhNM3NLelhDNzdtdzNlTCt2MDl0YXNJRU1HclVYYjNONkNPV2dTMTdEcTlsWkZEYkszTjdLV1BFTmpUMmlQaWR0M2dCTFZ0SGNSeFAweWk5dkpYV0pNSEVHdy9RUHFISnNUM2JISFJLS3BOWUtjTFlXTDFoWVc5bVhISHJMaXR5YnRrbjlQS2MvWHpFTStuQktJR3dWcG9RazQ0dFJFeHZnYUxuM1BGaThOMUpwZDF2YVQxdk1hbko4K0ZoT0ZXZjZVSkRiRjdqb2dCWVFFOFkxWjIrUnZtNnQxcmQ3YjRkblNWTFAycWdsV2E2aFhKcXYzTjlWeU1BQjhxR25neElBNUI0bFozZGZWcC9TWGs0Tm9Hbi80K2NmVmovd2R6QUhZR29SRHdtUlZYR3lLa2N4MDFVZldYRzZIaG5sZUxnMFkxdFp6OHdYV1FQWnBmZE5KUHkwV1dmdFlLTytPMkhTMUx2TzhxeE4rVitvTklFL0pOelIyMDI5b3VndCsveUV0ZnI0ZlRVZnZickxGNjQ4bjdmVEQwdWJWNGdjejhCbGNPbkFWK2tIZ00wRTlJc0FYV1hNMno5dnNBaW85OE5yV3lWbHpXSmNxMXZEOW4vd2NtMmllN3FiYThQOEJtNi9xWVc2Z1ZrWW1EQTNpZ1FjVmVhUVYwa2tjZWNLUHVCOXFXd2Y5a1dJU2VOTzZuRmNkN3dwNHUxcndQeFY5QTRhTkVBQUEiLCJzaHJUb2tlbiI6ImV5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSTZJbkJ2Y0NKOS5leUpoZENJNkltVjVTakJsV0VGcFQybEtTMVl4VVdsTVEwcG9Za2RqYVU5cFNsTlZla2t4VG1sSmMwbHVaekZrUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEpjMGx0ZEhCYVEwazJTV2t4VEZOVVRsSlBWelZQVldwa2FWVnRPVzFsUnpGc1YyMDVXV05YU2tsWGEyUnNaSGxLT1M1bGVVcG9aRmRSYVU5cFNtbE9SRlpzVFVScmQxbFRNV3RaVjBwdFRGUlJlRTVFVlhSWlZFRXlUME13ZDA5SFJUUk5hbXhwVFhwQ2JFOUhVV2xNUTBwd1l6Tk5hVTlwU205a1NGSjNZM3B2ZGt3elRqQmplVFV6WVZjMWEySXpaSHBNYlRWc1pFTTVhbHBIVFRGWlYxWnNXVk13ZUU1WFRURk1WRkpyV1dwWmRGbHFRVE5QVXpGdFdUSkdhMXBFU1RGTlJGWnJXWHBKZGtscGQybGhWMFl3U1dwdmVFNXFaM3BPZWswMVQxUkZlRXhEU25WWmJWbHBUMnBGTWs5RVRUTk5lbXMxVFZSRmMwbHRWalJqUTBrMlRWUlpORTE2WjNsT2FsbDRUVk4zYVZsWGJIWkphbTlwVWxSS1lWb3hiRkJhTVdNeVYwaGFUbVJGV2taaGFsRjRWVzV3VkZsV1VrdFhhemxPV1RCR1FsQlVNR2xNUTBwb1kwaENjRnBEU1RaSmJVVjZXVlJOZWxsNlNtaE1WRWsxVDBkVmRFNUVSbXROVXpBMVRWUk5NMHhYUlRGT1JGbDVUVzFWTWs5RVJtcFplVWx6U1cxR2QyTkhiR3RaVjA1NVNXcHZhVTFwU1hOSmJVNTFXbWxKTm1WNVNuRmtNbk5wVDI1emFXRXpValZKYW05cFZXeE9Ra2xwZDJsaWFVazJTV3BTUWxkSVVtOVdNMlJRV1ZVeFNHVkZOWHBqVlRsWVYyMUtaazFYYkdwU1ZWcExWVWhPWms1RVpGSmFWM2Q0VmxSV2MxWnJjRTFPYW1SNFRUTlNVVTB5V2toTlJGRjBWbE14U1dGc1dtbGxibEpoWW0xYWFXTXlOREJpYlVWNVZteHdRMUpJV2xwaWExcFJVbGhzWmxadVZucGxWV1JaVVdzNVNHRXhUbFZUUkdSV1VWVjBiR1ZIU25sTmJHeGhZak5PTlZSck1ETmpNazR4VFRKSmRHUXlUbnBTVlRVMVZrWnNTbU5xWnpKaVJYQnpZakp3YlZRd1VtRlRibVJvWVZjeGVFMUZUVFZhV0dSdlRtdGFUazVHUWtkU2JXaEVUVVpLVjFkdGNGSlZiRnBRVFVkR1FtTkhSVEZXU0ZJeVZGWlNUbUV5V21aaldGRTBVek5KTWxneFJsTlphMUl3V25wb2FWSnRaRmxTTTJoRVVXNW9VRnByTlZGa1ZGSk5VbTF3YlZkdFNsQk9hMDVNWlVkbmQweFlRbEpOUmxwbVRWYzFVMWRxVWtaV00wa3hZVlZvZFZGcVpIWlNWbVI1Vmxkc1RGWnNXa3RWYkRsMVRUSTVRMU15WkVsU2VtUlRVbmt4TmxkVk9YQlhWVnA1VkZkS1JsZFdWa3hSTWtZMlVXdHNhVlV6VGpOaWFsWldZVzVDYWxKNlRsVk5XSEJtWlcxT2QyUXdWazFZTTFwSlZHdGFiR015Y0hOWFZtaHpZMjVDZFZaVk9URmtXRXAyVkVoV1JsbFhNVEpUVlZwV1ZWTkpjMGx0VldsUGFVcENWVlZHUTBscGQybFpWM2h1U1dwdmFWVnNUWGxPVkZscFRFTktjbUZYVVdsUGFVcFhUVEU1UTJGWGFFdFdSV3d5VlRKUmVWWXpXWFJWUmxKd1V6QTFOVmR0T1dGV2JXaGFUbXRPYjJGR1dsWlJWRlpPVVd4R1lWcHVZM2RKYmpFNVRFTktjRnBJUVdsUGFVcHZaRWhTZDJONmIzWk1NMDR3WTNrMU0yRlhOV3RpTTJSNlRHMDFiR1JET1dwYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNYWkphWGRwWWpKc2EwbHFiMmxOYlUwelQxZE9hVTU2WjNSTk1rNXFXVk13TUUweVZtbE1WMHBzV1dwSmRGbHFRVFZPYlZacFQxUkpNRTV0UlRSSmFYZHBZMjFuYVU5cFNYZE1hMFpUVTFWRk1tTlVaRWRsYlU1V1ZtNVNjazF1Wkd4YWJtd3dUVWQ0UTFwSVpHNWlNSEJaWTJ4T1prMXRkRmRSYlRsSVdqQnNlRkV5TVRaU1J6aDNWVEJHUWxGVE5HbE1RMHA2WkZkSmFVOXBTWGxaZW1NMVdUSkpNMDlETUhwWk1rNW9URlJSZWxwWFNYUlpiVlpwVFdreGFVMUVhekphVjBrMVRXcFJNbGxVWjJsTVEwb3dZVmRSYVU5cFNtcGFSMDB4V1ZkV2JGbFRNSGhPVjAweFRGUlNhMWxxV1hSWmFrRXpUMU14YlZreVJtdGFSRWt4VFVSV2ExbDZTV2xNUTBveFpFZHJhVTlwU1ROU2EzZ3lUak5TUWxSc1ZuSlVNREZ6WkZVeGRXRlliRXRrVlVaQ1NXbDNhV1J0Vm5sSmFtOXBUVk0wZDBsdU1DNW1TMnBVVUU1ZlptWkVhMFJ1TW1oVFlXSldPWEpGUlRsMWR6UldPVW8yVVhVM2QzbFBiRzh4Y2kxbGRVczNNM1pHUld0eFgwMXpYMnRSYXpKTWJYcHlSalpaVFdGaFJERjBiMms0V0hkVFNsTnNhVGN3VWxoQ1VFcE1VMGxGVEZKNWVqTTFjalozVTJORFRIWkVMV3BaYjNCZk1GRTFjVzlaYTJGeFVIRmlVWE5rYURCUmEwbDRaMkowY1hOb2NUQkJUQzFXTWtsWGFuUkJjbWR2U210dmVtMTVVbE5UZEVndFkxWnZWekUxV21kNFUwNXBXRTV6U0RaNlYxcDZiRFJFTXpJNFMzVkxZMHhyUW0xU2NtMVpWemxNVUhCNFRVMUxMWHAyYjI5a1JWUXdWbTVLZFRZM05ubDRZbE4yYm00MlEwZEZNWHBhWkZoU1dqVkNZbWhCYmxkeFZqZ3hNbXBZVm5aUWIwVnhiR3BYYVhCb09GRkJlbkZpUjJwc1REWmllVEEzYTJOU1NESldZbkpKTkd0QlpHaE1WRFUxVm0weGJuVkdWelJzUVROWFFYVnFSamhCTTFSQlNEQmFOMGd3VUZSVVNuY2lMQ0owY3lJNk1UWTRNemMwTXpJM01Dd2lZaUk2SWs1MFJUSnlSRUpPVkZSc2RsOXphVXh2TTFkemMwdFRjMEp0TFZwcFVEQXpSMVo2UVhRMVlqZHVWamdpTENKdWIyNWpaU0k2SWpBM1pqaG1ZalkwT1dZd1pUUm1Nalk1WXpjeE1HSTBOMlU1T0dWbFpqSXdJaXdpWTI1bUlqcDdJbXAzYXlJNmV5SnJhV1FpT2lKalprTXhXVXBrU2twb2JuRmpTVzlNUTNsT01FbHhhSFI1Y1VOYVJrTTBhV1ZMT0dWNFEycFNWSGxySWl3aVpTSTZJa0ZSUVVJaUxDSnJkSGtpT2lKU1UwRWlMQ0p1SWpvaU5FRllkR2hYZDA5aFRVZDRUbk54VDFkYVlsOHhhV05GUmtwUWMxODBOMUZsYkRGVk5XeFdTa3cyTjNFemRGQXpaa2N3TkMxVkxVaHFWbUo2ZEZwdVptSnpialJ1WVRKV1drSkVkbGx1UmxCRmVWOVdkWE41UjFoQ1QwZHJVMVJJTjFWQlMyVjRZbkl5V1ZwdmMzbE9UVGR6WTNVellpMTNZM05GVG5sVVdVbHlPRFpzU214dmFtWlBSRnBLZDJGcGJYRXdRemxsZDJnMlJrMDBVRVpHYUVNd1VsWmFhbEZTVms4d1lVRndZVFZVZEhaTlZFMXJabDl4ZERoTGNqWmZVVkppUkhSbk9HSkdaMWhIZUVOQ2VFOW1UbEIxTkV4R2FtWmFZazgyUTB0NGFEQXRjRkV3Vmw4eGJsSmFORVZYY2pWcFNHNUNOMjlGVjNKVmFVdFdWa3BTWDI0emIwSkxaMGhITjFKSExYcFpUMmxaUm5KTllrVlpWVXREWVhwQ1NXSlRjM2R1TlZWcWNHTkhNMVF4ZWw5NlkzQjNSVXhmZGtoT1JtVnphbXhaV0d4eWNHNVZUM1YxY205TWRVVmhiWFpKUmxWUkluMTlmUS5HXy1jR1RlNXF1WWNtclpybEExR29XOGh2YWpnYWtiLWxTXzNuMEdxNlpxcDU0T0djZ183cXJiT1RhMW54VXpOelhsdzFlQkZYajhRdkV0RldJazVfcHlPZ2NNYk9lUE9BYWVDbnN4T2VNVTV3SGNmVFgyMG9NblFNbkpsU2VhcDc2M2dodkZqSXgwNkFhMjdwa2RyWk1DNFBtNUt3OGI0Q3BMWGx5S1hkLWRjaVdDNjNuSHIwZHExV2NzUDMtUTB3dWxFMk5tZ1FYQUFCTlhwT0VvQjlRWlZ5SmZFRnQwd1JtUkRoaEF2Q2x4c2JFNkxMUjlDV0J6LW5HVUZ5b0lVRnpMZG00aGxQVnFQblJTblR4X0RFMjEzdjlfcFhrZHJDRjA3RVFQdnhtU1RtSlpjTEtudWR6SmxMQU1DWHNXcGxVVjA0Nms2V1VNX0RtZVNzMlJ5YVEifQ.\u0022,\u0022correlationId\u0022:\u00225504e9f2-e88e-4751-9bca-cfdb596b468c\u0022}", - "messageId": "a89cffe7da0e41e49b1dc2597e8e387c", + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L19BWE1CZmZuMGtHZGJuRTBRMTRqdEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVlhMi9qdUJYOUs0SUw5RU14dFBqUWd5UmdGSTZUekdSbjhwakVTYlpCVUlPaUtKc1RXZEpLY3V4a2R2NTdMLzFJbkhHNms3YTd4U3FBTFBLUzV4eGV2dTdOMTQ1V2VYNVN0amF6V3JXMkxEcnlheWVyeTZuN3RXbEhkcmhVdXBFa1NaV2lpVUFpeERFS3dvQ2lKSWtDcE9LRVVvMng0bWt3d3N1SGNKU0pTQ0VheEFvWnBtTVVDcVp3aXJFV1duZmVkVkxiVkxsNk9GRlRBL2hRWVlxMEttM1JIamsrbFNpaEU2cVJNUUZHUWNRSVVta1dvREJqY1d5d0NxbWgwQ2RYeFhpbXhzYjFLV1o1L3E1VHFicTEybFpxRFlSNWxuTE9HR0k0QWFCQVlNUU55MUNtTU1PVWlsZ3BCVUFUbTZZR2hwMnB2REhQV29ZUGxWUFhtUHJlMVAycWdwWlZYVmFtYmgvMjFIakYrZTFkcHkxL0QwZXhhTWRSeVE4ZHRRTEJHTDN5Mmp4dmNoVG5SQW1oQklyQ0xBT1BKeHJ4MkFTSXBWSE1jSlNKT0dTN2pxcE5VODVxdmNUdHZHWFUvOGFEdVMzdUd1ZEUxYlpLVHdCczByWlZJMzFmVmJhYjVYWThhYUhmNHFIYjNNR2NkSFU1ZFJiL252cTY4aGRJdzBxWkZTWENwS3YxVmh1dC9YdmlaMlY5WjFLZkpZRkphYVNSU2loSFFaSXlsQWh1a0dJa2kya2FoanJLZkJyN2x2Z3NFUDVLeXQ5dHo2MjBxVW10NmhmTjNOUWdUbXRRTm5VTEIwU053UW5ObjBMeFJzeGFjMjIrR04zK0taU3RwS3gxemRKcVdLdWlxY3JhcVlNaWFDT3NHd2RkRXJFdXhVeXlJT1orNTl2YTc0T3lhRTBCYmI5MjlPcHp2VEZWVmVYckk4dHZVcmM5azd4TXdIRGZ3N2YxYlZIMmtFZERSanpzSFoxNFIyZUJSMmpjeGZCSG5MbnBOZUF0Nk93S3VyZHBFdkZ1Ukx1VWtDNFJ6Sm1TM21Bb3lYbzN1WXEyaDczbHg3U25acWt0dlVBd0Vuam53ek8vZjNYbUVSeDRBdDdNSTRSNGhBTTk5MFFNTlZCeWxSeDA0QitRcWw3ZDZnclZqWDAwVytVc2tYL3pGbWdLd21FL2UrQUJyNEVUUWFiTnhLdU52bmNmcStZTDFOaHhvV0JyalgrcjF6TzJkS01JVjJXckRacGx0UnJMK1dMdjhibXVtcWR5OFBQTjRWVjh2WDgyRnlmdmY1cmF5L0hEa2VIaXc1Yks2V3l4S21sVnBEWlZyWkV3ZE85eS84eWpoT0VZUndITXlzdEJyNTNZUG9DMk9zc1hYcTNTdEFhblFRTU9VeFo2dFZzeHEyYTc2SFFMUFJUT3hidm80ZHZRdysvUktXaDN3MUs2QlFZS1N5SEM4U3NNSktSdllZQm11d3owRDJhQWRiZjBFS0VocHdLVE9QUkMyaVVFTmgzblhSRjVzT2ZFRXJzMmNOOXNzRjhLMkpvQjczaDRlWDV5dE8vUkNDeVU4b2dFTEloQ2dmSE83TEQxN0N5NXVZZ2krajl4aDAvY2pFUUJ4NEdBTzBvUUVNRlcrM09iRy9iVzByT1ZhaG9RRUhBQy9EajZUa0NJc1FqZnJJQ0pYUmI2ZjJBSnQ5YWhJd2s1ZUFQLzdpVDBqeUxKVldKeU9WVzJRTXR6YzFVN3Rha2ttek1ybVJ1Vmo4dmF0cE9wVE9iYXE1UytNMjJsYk8zTlRRS255MXB2L1ZDMUplejcvc0hGYUhBOElwU1BQaHozQjZPTEQzMHk0dGl6Qlp4OFJzNkhOM3RYMlZ5UVQ4UGhXWmlwMDV0Q2ZZamI2djdqcElwL0tpZW5qL3pFdi9DVFgray9HZm1WYklTczRlbVA0TC9FNWZYcHJQaEhkWHlSMWJQSlFYN0g3bEwrMkFaSCt1NHEvV3o2cy8yMnNPUmdDYjg1SUt1cHF1QStDYnlMbzA4ZmZSS3RiNVVuay9EZXg1VDYvUHQ2ZDZNc3UreGE0SjY1T0RvL09ObEd5NmJ0eXBMWXRvYVo3ZTB5d1RFSlZHSUxjTldKZTZvb3pDTHBGZVdMOXRnN0d4eGY3dkp6VjkvZnJZZEw3L3hnLzdXUndFSTJ1YWttWldHUXVZY3JmVWNETk1HSVJDLzdNVzl3OHRyd3VhdC9aWHdVT3dPY0VSdEQxZG9wSExjYkpyZ2NUVjNWRUU3TFpnSlJlQmg1UVNCSkxNTjl1ZGVYZkNBSFZBNGllUmpML1VpS1VBcjRGbklnSk9YeVlOOTk5TEdNQnBMc3ljR2hEUGNrRzBqQlpFeGxuOGlBeWNOREtRYnlnRWphbDJSZjR2VWlNSXQycWM5enNabThoV2MrbjNkWEM3eGIxdVBiVzdPQUtCbTBGbTF6ZXd2RFFaTzBobDYzdHlwcGtMdThrUnZKQ3pUMmpQWVV0djBHVUthYWRwVEF2cC9idEoyTU1tUFNCRGJiWHlEWGNVSFJpRDNGRVUydEVVUnNZN2huWFhMaFhzNjJpWXMvbWZFeUFXQXh6MEk0ZzEzQ2xrQ3lGWVlvNFpEZ0NCV2JCUEtIU0tYQ0pUQU41SnZMb08xVTYxa056aDgvSlJTRm1aOW1tUXV5bHhVUUFVSjQrTkU4dU5odkhhd3RTeDFmVDZ5d29iMytaWEl6U0xMRjVlSG42OGR4cndmNGtOZkFpUUZ0UHB5ZkZzSDRRcDhPcXRsVmNUTzhIcjZmSHZlaERjRFdJQnppSmFmaWJKV1FXTFBNUUd4enZqYjE4N3ljR3hoWVc4L01OK2dEd2FmenpWTDZVWEZ2MjZka2VkdmlvdFc2elBObHB2QWZodDRBOHh4OFEyRTcvSWFpUCtyL2ZMeVhaUVcrZTU4bXhRSCtUSUl2YlIvaWF2eFgwNHNZcHpnS2d6Z2tNUXNJamwyMlpadmpXZDdhTTBqM3dHMXJMOXRtcnk1VnFtRUJQRHM2TmNsc3ZCMXF3ejhGVnRNSzF6cG1FVWFSQ1dCYU02MFFaeWFCZ0Q4bHNZb1VEaFBpVXFIL0pxTUUzbkZkenFvbDd3SjRsd25odndCMWNYdVBraEFBQUE9PSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVp6Rk5WRVUxVGxSWmVVeERTblZaYlZscFQycEZNazlFVlhoTlZHc3hUbXBKYzBsdFZqUmpRMGsyVFZSWk5FNVVTWGRPYWtreVRXbDNhVmxYYkhaSmFtOXBVbFJLWVZveGJFUmhXSEJyWkZWamVsVkhWbUZsYW1SWVkyazVkRlpUZEUxa01tTXpZbFZHTTFGVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNVNTMWx0TlV0VU0xbDRWakI0TkZwdGR6Sk9WV1JTVGxSS2EwMVhPRE5oTUhOMFpETkdlVk5HUW5oVk1WSlNUVVp3TTB4Vk1IbFdNRFZYVkVoS2ExTnJWbGRaVlhCRlRraHNiVlZ1VmtWaU1XeFRVV3MxUkZSVmVFTmphbXhRVVcxd1dWTnJSbXBaYldONVpHcFNTR05yVmtwYVYxVjNUbGRzZDFWVVNYcGtlbHAzVGpOYWJFMTZRa3hPVjFKS1VtdHNkV05IV25sVmJGcHFaR3BXTW1SWFNuRlVXSEJaVG1rd2QxWXpiSEZSVjFKNVYxUlNkVTVYZUZkaU1EbDFUa1ZLY1ZKV2IzUk9iVVoxVVc1YWExVnRWbXRXUlhBMFVtdDBiMVV5Y0hCTVZtaHlXVmhLYWxveVVYZE9WMXBwWXpOdk5WVXhiRk5WTUhoRVZtMWFkRk51YUU1UFZGSnVWa1JvTTFOdGFHaFRla3BGVG0xT2FWVklUWGxaVkVKWFZVVndUV0ZzT1ZkU1JWRjVXV3hvYVZkcmVHcFJNMng2VTFod2FFNVlhelJaYTFJMlRsVjBkMVl3VG01WFV6RlVXakZHV1ZOVVJrZGllbEYwVldwb2JWUXlhRE5hYlhSV1dtdFdiRlpITVROVFIxSjVaR3c1Y2xWRmNFOVZhbFpDWVc1Sk5GTnFZM2RpUlVZeFpVZG5NVkZ0V2toUFZuQjNUVlJPYjJGVmVIWmpNMFUwVWpJNVIxRXpVa3hsYlhodllVZDRlRTVzUlhkaVZVNTVZMjVvYmxrd2QzaFVibWhVVlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVwNVZXeE9jbFZFUWxkT2JYY3paV3c1VGxSWFRtWlVlbEp6VmxWYVNscEhSbE5aTTFsNVlYcHNVMUpGUlROalYxWk1WakZXUkdRelJrWkpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTazVhYXpBMVUxWkNWVmRWVmtaYVZWSkpaRVU0ZDJOV1RuQmxhMFpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1T05sRnhNazFqYzB0MWFUWlVkbkpMWnpCVWFYWnBkMUo0WDB0S2ExSlZZbWhYTURORUxYbFBlVTF5UzB4TWMxbEJWVzlHTVdkdFIwdGtSUzFqTFZOS1lUZHNURzFVTW10VVpYZFZTalJEWW1GRllubEJkbU5KVlhCTWVWSk5aV1ZUUVMxMGFTMW9ha2RGU0V4dVMzY3pNbE41YW1aV2RYTnlhR016VkdkdVYzWlhhMUJqYjE4M1JIWlJZamhZZG5nMGVEbHBRazl4U0c5VVFrMTNVMkZKWm5KVVJtdDVPRkZET1hwSVNtUm5jMWhMVUV4Nk1XcHpNbEJ3UnkxdE5WVllVbWRGTlhKdFRWWkRURUpmTWxoSmJUZHdUamx2VTI4NVNsZENhR3B5TTJSaE1ERmZURVZvZW5sRFYwUlhTbFkzYlhacFRuRjBTUzFSVWpFd04wcFBNVmxYTjBVMk55MUhReTFoWW1sM1JrcFdla2wzVlhoTE5VOU1jM0JPTjJ0cE5uazBOR05GUkhvdFlVeHNjVGd6U2paeE0zZE5UMk16YmxCa2RrZEdPVzFPVlVSSGREQlJVVlJmZW0xRE1sQnRNVmhUVkVFaUxDSjBjeUk2TVRZNE5URXlPVE13TUN3aVlpSTZJalJ1WTA0eFNsSklUVGczYlUwM1FrNUNUMjQ0U0ZCclZUQklNMDlWYldoalQwSkpZM1JSTUhwUlFsRWlMQ0p1YjI1alpTSTZJbVk1TkRrNE1qRm1PREpsT1RSbFl6QTROemN4TWpOaFpETm1aRGxtTldNeklpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUkzZFY4eWMyMUVTbTVUTVZwYVR6aERSRk41ZFVaT1dVNVlSM010YVdsRmFVWkhNRFptUkd4S1kzaGpJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pZEVwaWJrcFBkakZYVEhobWJEWTFSMUUxTW1ReGJ6ZHJTeTEzY1hKSVVIRlRWRkV3V25jdFRUSlhUbFpNY21SS1JWWmhTa1EwZVdaU2RVUnZXVkpDVGtOTlRFSnlPVTlDYWxoS1FXTmlaekoyTkVkeVJVbGxaVEExYVhCUk1qTjNObkEzZG1Vek1FczFaRWxHU1c1d1puSlNWbU4yTlhaMVltcE5lbGcyTFRCWGVXcEJaSEpaTkc0MWJGWnZUMjQwUW1wRldpMDJZVzVDZG1SU1pXUlVTbmhHUzJoVGFta3RXR3RoY21OblpEQTFabUp6ZWpsVFdWSlRURU5XWm0xS2VFMDVOR2RVT0hkS2FHRkxNa1EyWTJKUWN6SmhNRlpRU2t4cVgxWkVSREppV0dKYVRHTkRlWE5KZW1FMWVUaGlSSG8xUzNCWFEyZFpMVk5uVVZoSk1VWnZOQzFTT0daUGFIZG1hMVZtUldWVWJYZElaSEoyWDJ0UVNrNVNOVUZxY2poS056QnNRWFY0YURWQ1prYzVXbkF4TTJocFRHOXpjVGhIYjBaRGRFdDZiR2hvYkhFMlVUQnRRM0p5ZUdkalRERk9lRk5SSW4xOWZRLlBYNVUxdURMSEcwemRfdW1yMGxBN3dfME5KNG40dEFnRHRSbDh2X0JpZmV6SUZnNHFlT0V6c0djSjRaT3NDVWdKZS12YlI3WGtsWXQxODVUSk9KYmFTUDJQWjVnYklZcUhzOGVtTEEtb193WWxYanBPSS1XWi1YcGt3czVCUjc4OTJ3OGw4ZnpySXpxZGtBRnlPZldlYWwwNVdzaE9Venh6U2lBME81U3ZSQTJGcjVCbGxLcUhiRmNDalhkcU9mdWNyTWdSUGljVzdGemdaYVhIYnljOWhXV0VuQWNhLURLYmtjX1ZmQk1LTDVHWTlSdWJYbXdLelk0ejZZMk53b1lOdUVQV2F1Y09SMU5kWG5WZ3ZYbGxTdUFDQzZ5SncyMndSX1dnc3lTUWNFSC10blJGN3dfMS1mT3dYRDJ4dVl3cUtQMjlQdUdicUU4UVl0OEZRbER6ZyJ9.\u0022,\u0022correlationId\u0022:\u002233460360-6e4b-4fca-83eb-b9d17a6a05b1\u0022}", + "messageId": "061f9b832ce34b058b2d302c201d30d3", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -11,13 +11,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-b6182ce8942ffc61dc2b134f73b1bdbe-64daa5f587658e59-00" + "Diagnostic-Id": "00-0ecbcf84b41883cd808a00d489d5854c-c5fac45631dc368f-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi92NHpXZ25YekNrQ1FVaXZIWkd0a1d3P2k9MTkmZT02MzgxOTI3NDY3NzYzOTI1MTk=\u0022,\u0022correlationId\u0022:\u00225504e9f2-e88e-4751-9bca-cfdb596b468c\u0022},\u0022time\u0022:\u00222023-05-10T18:27:53.0086127\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022}]", - "messageId": "f5e2d2f45f6645d4aae712323d9a0c89", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/411f1200-98cc-4751-9ef8-3072073ef879\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022411f1200-98cc-4751-9ef8-3072073ef879\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L19BWE1CZmZuMGtHZGJuRTBRMTRqdEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022correlationId\u0022:\u002233460360-6e4b-4fca-83eb-b9d17a6a05b1\u0022},\u0022time\u0022:\u00222023-05-26T19:28:23.6285642\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/411f1200-98cc-4751-9ef8-3072073ef879\u0022}]", + "messageId": "2d4d0e01c3c04dfe9c30ceb5fe7d1317", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -26,13 +26,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-675c19d9f6d8778d8b7c601485b82748-6cc975fc9739a8f9-00" + "Diagnostic-Id": "00-88a3903cc473fe86a8104f6125e5e00b-a31ad6cbaa6880bc-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi92NHpXZ25YekNrQ1FVaXZIWkd0a1d3P2k9MTkmZT02MzgxOTI3NDY3NzYzOTI1MTk=\u0022,\u0022correlationId\u0022:\u00225504e9f2-e88e-4751-9bca-cfdb596b468c\u0022},\u0022time\u0022:\u00222023-05-10T18:27:53.0086127\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022}]", - "messageId": "43de13d5e6ae432d8b4db1fcc065f9bd", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/411f1200-98cc-4751-9ef8-3072073ef879\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022411f1200-98cc-4751-9ef8-3072073ef879\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L19BWE1CZmZuMGtHZGJuRTBRMTRqdEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022correlationId\u0022:\u002233460360-6e4b-4fca-83eb-b9d17a6a05b1\u0022},\u0022time\u0022:\u00222023-05-26T19:28:23.6285642\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/411f1200-98cc-4751-9ef8-3072073ef879\u0022}]", + "messageId": "01ba42ed7e594c0089c44f2c56b2231b", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -41,13 +41,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-abb01a7d6618d61b2a28c747ecf3d7f2-79623a6cba571038-00" + "Diagnostic-Id": "00-ad531225a128dece44bb2fc87548bb2d-114418b99e60507c-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallDisconnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi92NHpXZ25YekNrQ1FVaXZIWkd0a1d3P2k9MTkmZT02MzgxOTI3NDY3NzYzOTI1MTk=\u0022,\u0022correlationId\u0022:\u00225504e9f2-e88e-4751-9bca-cfdb596b468c\u0022},\u0022time\u0022:\u00222023-05-10T18:27:54.1336256\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-5c7c-4781-8adc-3e51774e8bf7\u0022}]", - "messageId": "1b60936819694af0992efcb2b25fc380", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/411f1200-98cc-4751-9ef8-3072073ef879\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallDisconnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022411f1200-98cc-4751-9ef8-3072073ef879\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L19BWE1CZmZuMGtHZGJuRTBRMTRqdEE/aT0wJmU9NjM4MjA2NTQ3NTE3MzQxMDc0\u0022,\u0022correlationId\u0022:\u002233460360-6e4b-4fca-83eb-b9d17a6a05b1\u0022},\u0022time\u0022:\u00222023-05-26T19:28:25.1910817\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/411f1200-98cc-4751-9ef8-3072073ef879\u0022}]", + "messageId": "cc7b79ff7e614f9ca6dca90b9d02b7e3", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -56,7 +56,7 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-038554d73514645a0cd6b3cb54649fe2-454bd3cd0c4c0349-00" + "Diagnostic-Id": "00-036dbe73a6fa3216c3e7fa9491af84da-b0d562c2ad84e61f-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTest.json b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTest.json index 6dc5502e04da8..34ea64f717358 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTest.json +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTest.json @@ -1,8 +1,8 @@ { "entries": [ { - "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi93RExtMll6WEFFLXVZOThYVWJmVDl3P2k9MjAmZT02MzgxOTI3NTY3ODYzNzY4NjM=\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVliVS9qT2hiK0sxRlgyZzk3eDYzdEpFNWlxVnFWVWk0c1E0Y3BNRHRjb1VXTzdhU0JOTWwxVWxLWU8vOTlqOU1DWmNyT1pYZnZTRGRJYWZ6MlBJK1BYODQ1Zk9sSmtlZlRzc21TVElvbUs0c2UvOUpMVExtd3Y1bnE4VjdJaGF3NWlaVVFOSTVRNU9NQWViNUhVUnd6RDRrZ3BsUmlMRUxsWGVQdUlTRVNUQ3BFWkNpUXE5d0loZG9WV0dHc1NDQjc3M29xcTZ0YzNFL0ZRZ00rVk9oQ1ZXVldORWVXVHdpUFNKWEVLQlMranp6bCtpaVd6RVhLRHdUVGhBQS9nVEc1S05LbFNMVWRVeXp6L0YydkVxYkpaRmFKRFZBaUVrL0tRQ0tsZklJODdHTVVLUm9oUHdoVmtHaWxoUllBTk0rVTBqRHRST1MxZnRaeWZsOVpkYlUyZDlxTXFncDZWcWFzdEdudTkwUzY1dno2cnRlVWY0U2hFclZqS1BXN2hscURZSXhlZVQwK2J6SlVSTDFFeWpoR09LRVllVzZVb0ppUkdERU5aa3BJeUtqM2lxR01yc3Vsa1IxdTd5MnovZzhXekxQaXRyWkdGRTBqNUJ6QTVrMVQxWHd3RUZYV1QvSXNuVGN3Ym5YZnIyOWhUZnF5WE5pV3dSMGR5R29nSlZyV1dsQ0VhVi9LclM1U0R1N0lJQ25OclZZREZTZUVDajlHd2xVSzlwVFdTUGhNb2pCMC9WZ3oxMDBvRzlCZ2tKR0I2MFdEdFpLL1owT3JlYUZWSmtaRjNXb0QycVFFWVF0ckR0Q1VnZzNxUDRQZ1J5MGJ5VWJmYU5uOEdZU3RsV3hrTFZWMWJrUlJWNld4NHFBSTBuemFKOFRyRXc5K0k4SmRMd2dIdmE4YnM0L0xvdEVGZFA3U2srdlB6YkVVVlpWdkxxeEJyZXpoalBNeWhvYTdJYjR5VjBVNVJBNmhQdk9JZzUyanFYTjA2a0U1NkdQNEk3WkRQYXpCWGpEY0Z1UncwOFhEL1NEc0U0ejdsTHEySlI2T3p6bVV1OGRXTkVQc2RCK0xvVmlxckhSOHlrTHN6TTVQQjZOUHB3N0JuaFBCMjNVSUlRNEpnVDEwb2dCcW9HUXJRNUNCdjg4cGhxYVJGVEoxOXFDM3lrbk0vK2FzMEFKa3cybDJ3QUpPRGZjQlYvWGNNVnJlMlk5MTl4V3FzN1FRY0xEUzc0MTZ4dVoyRXAxWnhEQ1RHaTBUSTFLdTNJZmd1YTVxRlQ5VG1YZjY2ZU5QaHRTWGwrNFlqKzZtMDAvekpOaFN1Vml1MWlVcENwVXAwV2dPTTNjdTlrOGRTbHdjWU9hNTVPV2NOeVpzN2tHYVNmS1ZZNFJTQmt6V3B5U0U5UXF3WSt5V1dmZmJSYWRiNkg0RUZ0NUZKMjlFSjkraVU5QnVweVZrQXd3VU1Ca092bVh3SXVMVE56QjAvWFlaNkE5bWdHM1hXUWpPUTBnalRBTGZlVHgwb2FXZ0RoeTZxRU0zR3R6TkJ2MmxncTBWY0U3T0wyYlRvMzNZM2k0T1NZU3g2NFBoV1JDeFhXcjZUQjFHak5IL2k1bzhVd2MraXdMZmkveUFobUVVWVhlWEhFNThaOWxLMURVbzhFQXFZNWk5VklBZFB5VGtqUkt3aDNkMmlMZFp2eC9MNG0vdFEwdmloNUZMOEI5T1FuOFVTUzVpbmZPRnlBclVYWnZyMmtXbStLYkRDc1d0Rm5sYW1xeVpMM2pjU3FjUzhsWTNsY2lNMCtvWWJwZU5Ybk5mTlNXYys5SGs3SHA4Y2sxb2VIMTRNaHBmbngyT3lEVnN6NnlBbTAvejRuTTdkK3VmMmwrbkh4Y0hleEY5bUFUdlI4RW5mVFA1VmYvOHo5SFp6RHY4Qi80d2MzK2ovM0xKYitSUnlBYWUvaDc4QXQ4azhTL2x4VjM5Y0tHUGo4ZHRXK1kzN2VYbE5QZlQ4eHZDem5EeHkreGpldC9CUDE2UTFVSlU0RTQ4NSt6by9mR0FzSTFUZVdxS25KOERTZ2ZodC9YV29YUkRkbHZBelp3ZHpTYlRiYlJrMGF4YjRxd3hzTExEWFNhNEpvRXEyZ0pjRHdvZFVSUjZGUStMOGtWLzdKeU9UeTUyK1VOYlA5cXRCNTgzbSt5L05oUFl5RHJYMWJ3c05OSjM0TkozTkVBWGpBaDdPYzUxeHRQWHBoL2ErbGZtUjdGdDhKNUhWRTIyZ092MmtRbWNvemFWZ1dDYTEzT0JJRlp3bU12OU1kOC80T01KOXc3NG5zOVp5Tm1Fa3pIZmkvZzQ0T0dFNzdtY1VqNEsrR2dQak1YSlBnOG0zSTI0UCtIN0h2Y2pma0I0NVBNSWM3elBDYk9BQng1bkVYZEhhMks5YWpwOWpvM04rQlU4YmR2MjF4dThYNXIwNmtxdklFWUdyVVZUWDEzQmROQmNHUmgxZFNYaUdsbm5qZXhNWHFDNXoyaFBjZHQzZ0JKUk45Y3huUHMyVTgzOE90RmF4WERZL2dLWmpnMkpydDJuT0tJMkVrSElsb0tmdGFtRmZkbTJ4N0Q0dlU2NzhKL0Z2dFMraEtBZkZnSjVURVJJRUt4UndqemhoM0JocU5qbWJMcUdiTE1MMmo1SXVUUmcvUFFwblNoMCt5RkpiSXpkVlVBRUNQSGhzYjYzc2Q4bVZPdEt2VVZHMDRQazV2WndkbklmNWVkNzhqejFacVBoRVBBaHE0RWJ3NlppUzNXNzc1MjRKNmVMbzhsbmQzYnNIOHEwaFQ0QWEwQTR4RXRXeGVrNkhjbDBsMzlrOVd6VE5NcnpzdFV3c2NZczlWY1lBOEdudFUwbi9haTR5NXFuVkhtN3hVYXJwc3p6TGxINHIwSnZBSUhndTlWZDdBMkY3ZWdiaW9OMi8vMkNYajU4SGszUThqSUtQMS9FeVhuVVFsaE44Vi8xa0xuZ2RDaDR4Q0JrYnNEZ0JiYkk2cE5sM21TbmtPdUIxVFpHenVvOVV3b2xZZjJmN2F4MHZFeTNJMjM0ajBDM3FyQ2dyc0xDZzZRdWhxU09TVmpWS0pGSXh6SFdNZ2lvb3N3bVF2OUxPZ204cVNtWFZjZTdBdDR1Ry93MzY0Rng5SThRQUFBPSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVozcE9la0YzVDFSSk1VeERTblZaYlZscFQycEZNazlFVFROTlJFRTFUV3BWYzBsdFZqUmpRMGsyVFZSWk5FMTZZelJPZWxsNVRsTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJGRmFNMDUzVkVodmVXRjZTazVaVld0MldrUktUMXA2Vm1GTlJFSlpWbXRHUWxCVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNU5lRk5yV2pWVWJYZ3daVzFqTkdWc1pIWmFibWN5VDBWT05XRnFWazlpUkVwWFVtdEtZVk5WZEc5WGJrNDFUbXhKTTFwSFdtMWlSekY1VkVNd01WUnFaRE5oTWtwM1ZHcHNiRTlGY0VaYVJscHBWVVZvYWxkSE5XcFNSR2hwWWpCYVYxTnNTblJWU0VaTlYwaGthMXBHYUhOV1ZVWjRZbTVDVWxWWFRUQlJibkJoV1Zoa1IxbHVRazVOUkU0MlVWVjBiR1JzVlhsaU1qbGhWVVZTUTFaRVJuQmpWa0YzWkRKT2MxcEhXbWxXVkZKWVZYcHNlbUpIVWxCTVYwNU9aRmhPTWxWSVRtdGpia0pZVjBkTmVVeFlhRlJpVkZKSFYyNWFWMXByTVd4YWJUUTFWakZXVEdJeWNHNU9NVW93WkVWc1lXTXhPVmhYUlVaRVkxVkplRTlWV2s5VFZuQjJXVEZzUTFOSVFqRmxSMmhoWXpGc05VeFVSbGxXVjJSeVltMVNORm96YUhkU1J6VTBUWHBWTTFSWGNEWk9WRnA1VTBoa1RVOUZXa0pWUld3elZESjRVVlZYT1ZoU2EyODBWbFYwTTJSSGVIaGthelIzWkZVMWFFMHliR3BsV0ZKTFZtMTBiMXBYVWpKTlZrSTBWbTVrYTJGRmJFVlNSMmhPWVRGT1IxWnNTbTFrUnpVMVkydzVSazR5VVRSUmJFSTFXVzE0YkU5WFduTmtNM0JDVWpCS2VGSjZVVEZWYWtveVVUTkdWMVJyUmsxU2JVcDFXVEpPY1ZKSE5VbGtSVlp0VlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVwU1RteGFNazVGUmpGTVdGVjZZMFJrVUdSdWNIVlNhMmhOVXpFNVdWWXpVblpOU0VwUVdIcHNkbHByYkZwU2FscHBWa1ZXYTFSRVRscEpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTblJVYlRsWFlXcENhV041TVVaa1ZsbDZWMFpKTldKVVVqTmtSVVpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1a1FYRmZhRGt0TjFBMmVTMDNjMk4yV1VVeFdUWjBMVnA1VERKM1QySmthM1F0TW1oTlZrWm5NMDFpV1Mxd2JWbEROM2xJZFhkalVGTXRSbk41ZVdWdGRFOXhkbkpHZVVsbVV6VlZhMEpYWWxkbWNEUmhjRXREZERkSmVGUkhXSEZwZEd4MGRHVkZkRlpLTFZKbmNHMU9TVEl4T0hJM1NqWmFNMDlZU25SdmRsaGtUVWxaWmkxUFZEa3lZbFZEWVRGTFZrVnFkWEJEYjFaMk9XZ3lZbFZQTm05bFZWWTFUVmwwUWs5dmFraEJNRWRTUTFad2NGZDRUWE5tY1VkNVgxUjJaazlMTlcxMGNHUmxSRVp2VVhkUFlYSnFiMU51WTA0NE1XeFBXVEJ2YldJeGJWa3lNbFJVVm1WTk5GSmpOekZaTlhGbU9VVTJaVlZQZG1SNU5qSmhXRU5yVm5aM1NWVlVUMEk0VUVWd1owaHVhVkJmVjE5M2J6VklNbXN5VFVKbFQyMVJUbkpvTWxscldEVlFWVFJ2WTJ0aGVHdElXVjlGYVRoTmNHVk9aa2xQZWpBdFFsRjFXVFJ5ZW1ObmMwVmhSelJ4Tm5jaUxDSjBjeUk2TVRZNE16YzBNekkzT0N3aVlpSTZJazlRWDFGcmFXTmhUV1ZRZVZBMVptZHdTblY0WmtsV2QxbDVUSGsyVUVsa2RtWjJNV1o0YURsT1RHOGlMQ0p1YjI1alpTSTZJbVE1WVRsak1EazVNemN5WXpReU9HVTRZbU16TmpZeVpESmlNVFJsWlRkbElpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUprUjBZeU5ucExNek14WjA5UGQxODBlVjlWVTJZMlpqWnpVVXRTYmpFM1VHbFJWWEoyYVZVeExWUnZJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pY3pGS1JubE9iSFI2WnpoNlYyOW1lRFk0UTNscU5VNXNNbFpHUWxwSlMyaGFjM2syVWpka1ptWnNiWEpNTFRWT04zZHJZbkJPT1dVNFNrVmtWbUpRU0dOWWJtTkVPR0p2UmxaS1VtMVFjVXhZZDJSa1dHeFZRWEZ1Y0ZGUll6UkNlbHBoZDBaaWNFMHdNM3BCUzJWMlZUSnZiMXBRUkVKVU1XbHhVREIzWTJ4a1ptSlZORmRUT1hOc1pFOHRZMDExYzNaUWMyUnljRmRZWXpJdGVGTnRORVphZGxabVRXVm1iamxYVlV0dmFtYzNVblIwU1ZwelgxZFlRVU54UWpFNVJrNUpXbTlqV1VKSWNIVjRhRnB6V1hrdE1WaFZaMnR1WkhobmVIQkVibmd6TlRkTmFubzFObkpJZDB3NFJrRlFTWGRQYkZCUmIxZEdTamhWUzNkMGJIRjJUakIxVG1FemFXTjVkRXBXYTJobFpIWXhVSGhXZDJSb1NVUkVhRTFyVTBaV1VtWjBibmx5WDBVM1pEaENVSGxpYkdVNVpteDNla0ZIUW5GSE5EVlNNblpEY1ZaT1FVeEdZbTVqWTJwRWJraDBSV1pSSW4xOWZRLnJjckZBX25NdlMydW9HRjNQMExZb3U0dldKVlNWTWhFUVEzM2ZERHdBVTFyTDFtaTg5Zk1oZ3FYdFFkU0NlUmNNLWdsM1ZPN29PRUlwdVQ4cjBNdmtPd09VZmRtaUlZakhDTWtIcV81YjFaZjV4TDdLXzJvU29TbUNCaV9vZHI4cElfM1l1LV9XNHJiejU2Zno1dW1RQU1TeU9HMV9DTU10T0wyS25iM002R0JCbHMtaDVCVXdMY09lQnVVeUMydzZmeEJmbWVfR1JWZ2RMYVlfdC1USGJsWVNmdVpuOGFrbGFqb0xTVHpZZXg4RVpOM0xlTjRxZTA1S3lGZnlVLWRiSGM1c1NWeTFuczdQaGVJTXYwWFRVZ3VJV1ZEZzhQSzluNElaUU1CT3VBSVdqUmc4VGprRUNiMnNUR3dBeDdaTDAxdjFFRHh2anE1dHAwWExPd0F2QSJ9.\u0022,\u0022correlationId\u0022:\u00225c23d0a4-95b7-46c9-a9fc-ebb0ec772d26\u0022}", - "messageId": "7ac30fc7b0c34e80a245a080f0ad89fd", + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L0hLSlNVMk9XNDBDdGhVS2tBNGlWOHc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVliVy9iT0JMK0s0SVAyQTkzcFVWU2xFUVNNQTZPazdScG1qUk40clE0QkJkUUZDVnJJMHNxSmNkT3UvM3ZPNVNkeEttNzI5N2Q3bUVWUUJiSjRjd3p3NWQ1SnA4SFdwWGxhZDBWV2FGVlY5VFZRSDRlWkxhZXU5OGlIY2dCbDBxM2tpU3BValFSU0lRNFJpeGtGQ1ZKeEpDS0UwbzF4b3FuN0FiM0QrRW9FNEloVHRNRXhRd3JSRWlnY0lveHkxUXdlREZJaTdZcDFmMnBtaHZRRHgybVNwdTZxTG9qWnk5S2pBa05OaWloSkVETUJCd3BsV3FVSlZFWXFaU213cVF3cDFSVnZsQzVjWE9xUlZtK0dEVEtkb1V1R3JWUlJFeVVabW1Ha2NaUmlwZ2dCSEVGcnl4TjRpeElDZVdFZ2FKWmthWUczTTVVMlpvbkxKZjNqVVBYR250bjdMaHBRTEt4ZFdOc2Q3K244clhOTHk4R1hmMEhCQ3BRQWhtVkJTaGttMEJGU244M1VHc2xHS052dkI2ZUh3cFVvalZMVTBGUlNKbEdqT2dZS1pFeFJJUWdJalVKeVhTNkd5aHIybnBoZGE5MzhDTmUvMFlFeTZLNmJWMFFWZGNwUFFObHM2NXJXdW43cWltR1dWbmtzdzdtcmU2SDdTMnN5VkRYY3pmaTMxRmZOLzRLYVkzTW9xb1JKa090dDJTMDl1K0luOVgyMXFSK0ZyQkVoeVpCbk5NRVhCUVJTdUtZSTZZenczVkVJb3dUbjhaK1FmeUFDWDhONVovRmlBRG91VWtMTmE3YXBiRUFUbXRBTmxkclozSUlRdnVYUVB3QVpvUFptcCtON3Y0U3lOWlFOcmdXYVhOcFZkVTJ0WFhvb0FuWVNEQ00yWkJFd1pEaVFBWXM1djdneXlidWs3cnFUQVd5bndkNi9iazVtS3BweXMyVjViZXBPNTVKV1Njd2NEZkMxL2E2cWtmSW95RUxQZXdkblhwSFo4d2pOQjVpK0NOdXVCMjFFQzJZN0JwNjlDQVM4V0ZFaDVTUUlSR0JHMHBHazB0Sk5xZkpkWFFqN1BVZjg1RmFwRVh0aFhDT0krLzg4c3dmWDUxNUJETlB3RHZ3Q0NFZTRXQ2VleUtHSG1pNVRnNDQ4SGVNcXBIdGRJTnNXM3d5Vyswc2tYLzNWbWdPd09FOGV4QUJyNFViUWFidHpMTkczN21QdGZnS3RVVmVLVGhhK2UvTmV0SXRuUmZ4dWwxb2d4YVpWYm4wUHh6blQzM05NcFZ2N3ZDN1czMDFyaXR6TlQxVXg1Zjc3MTd5S1I1dm9ad3ZWdXVXVmxWYXBLb3pFbHozcHZ0bkhsem9PTVlSQzhoWFRtK0MyTjBETnB1Vks4K3FOTFVRTkJEZ3NHU2haOTJPV1l2dGFxZGIya1BoUXJ5clBmNHg3ZkhYMmlsZ2QyNHAzWUVGQ2xzaHd2R09CY2d1SWYyK2hWNXMxd0w5a3kzQXZ1c2pSR2pJcWNBa0RyMlFEZ21CUThmNVVFUWVuRG5SNjdZRzhzMkQ3dWNBdGxiQU83bWNucDhlN1FQY01NSWhqMElTQzhETUdkczFUWjlNY3hGRjlIOHlIVCthanVJUWxqc0drWkRGZ1dBMDJOa1ljTFQ2d0RhcWJRRUE0M0JWUlRqNkNrQ0lneWo2TVFSTUFOcGRLL1QvWUNYYzJvYk9TTWhGUVBBZmJvVCtXVVpLbFpoU3psVlJvZjdhWFBmT2kxU1NoeXNyV1JwVjVyVXR1dGxjSmt2dE5VcmZtcTVSaGZXV0pvSExaWVBYM2pkZERjZCtmSEJ4TXptNUFTSjM4K3BrUExtNWVEVW1OeHg3UlFVWG41SHZEOHV6OFhneC9kZkhLcGhoVlgwNFZjMkhsLzg0bWRXWHVqMmY1djVia3gxZFRLOStvZjhPeUMva0FjaEdQZjJlK3Vwb1BIbXR4NGRNdkpxeGVWWk8ycGY2NUZEYzU3NDJ5YUxGcTlONU9iOHYzL1hxSCs3SFpxNGFTQ2ZNdXpoNmMreTdWSW1mRFFudlpVeXB6Ny91ZHdtbG43STdBbW5tNHVqODRIUmJXemJ2MWlOSjBWbFkyZEd1SmJnbHdaVFlVcmlleEQxVlZXYVZqS3I2bVR6MnppWW4wMTM3M1BXUGQvc2g1NTBmN0gvTEU5aklwalROREhJSU1uZVEwWGN3Z0FoR0pIbytML0FtcDk5eW43ditiL2hIc1J0Z1R6T2FycGpEYmZ0Z0NYS2pzWTBGTmkzYm1VSTBqRHpHSklsbHVDLzN4cEpQNUlUS1NTUVBZN2tmU1JGS0FkOUNUb1NrWEI3c3U0OHhsdEZFa2owNU9aVGhuZ3dtVWdReXBuSk1KQXZrNGFFVUUzbEFKQjFMc2kveFpoT1lWZGZqOHh3MWs5ZndMSmZMNFhxREQydWJYMStiRlpCa3dGcDE3ZlUxdUlObXFZVloxOWNxYVpITDNjaDU4a3hiOEtUdGtiWDlqcUpNdGQxTkF1ZCtXYVRkN0NZekprM2dzUDBOU2gzSGlXNkNSeHJSV28yQXNPV1FabDF0NFY1dTdJRVd2ekg1dW9TSU5BMUV6QkNqUkNFV2NJRjRURUlFWGRpd1dCc2xIUDB6TFpTYlBXZDdxL1hDUXZEengzcWlNc3UzV2VZNGR0OEJCQkRZNGJHNWQ5UnZ3OVg2MWlENEVPYjVsTktEeWZuUG4zajdtczJxa3pmTDBRajBRMWtETndiSStORXllWGUzUEx3dDNzZWZQcFluWWZLYWZIUXlvTllDY0tCTERzWFp1aDRwVEYrQUZPMzVabWhjbHZVU3lreloyWVg1QW5PQWU3clk5TkNQcXJ1aWU2eVZ0MGNjV2JWMVdmYUZ3bi9JdkVITkUvZUd4amI3aHFiLzZ2ajF4WlMrZmMvd3BKdE5qMi9IckxqaVMwZXJmektqS09BVVIyRklJU3NLWUJBMGhtQVU3Y21pN0lvenFQWWdiSnNvRisyZXJhR2NoZzN3RkdpbzhSYjVOdE9HL3duMHk1b0ZVTGN4VHFHbTFFRDFvWkJHU1dBNE1vU0ZobVpRNjhXdVR2MnZDa3F3bTl0NjBmUjJWMkMzcndkL0JjRGt6ekNSRUFBQSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVp6Rk5WRVV6VFZSQk1FeERTblZaYlZscFQycEZNazlFVlhoTlZHTjRUVVJSYzBsdFZqUmpRMGsyVFZSWk5FNVVTWGROZW1kM1RrTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJFOWhhemxRWld4Q2RscHJhR2xUZW1oNVQwWndjbVJ1VWpGT01HUXdUVlZLYmxGVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNW5NR1Z1VG5KU1JGWnRXbFpTWms5VlJsRllNamt3WlZjNU0xUXdkRkZrUld3MlRtMDVOVlZzYUVka1ZqbHBWRE5rZDFwVlVraGxSVW95VFRKYWQxSlZVbGxaYTBsM1pGZGFRazlFYkRCYWJHdzJVV3BrZEZWWE5EQlphM0JyVkZSR1RsWlZjSEZPYmxaM1ZVVTFXRk5XUm5wWk1sWkZVMWRrV1ZOSFpFWlJWbXgxVXpGR1NXSnNRbFJrYTA1TFpVWndkRmt5Vmtaa1NHZzBVekJ3YzFKNlRqSlhhemg2WVZWd1RGUXdXa05SV0VWM1dtMXNlVlZJUWxGTlZqa3pWa1JzYzJReE9VSldWR00wVWtaR1IxUldRblpZTVd3MllrZEtOV0pzWkZSaVZtUkNZV3huZUZKWVVsZGpha1p1WVROT1VtSjZhM1JPTURsMlRUTm9iMkZWY0cxWmJGSlFVMGRHYTFwSFNscE9SbFUwVlZoR1ZGSnNaSE5pV0ZaMFlqRkdjMUpGU25aYU1rbDNZak5qTUZwVlpFZGFSR1JxWTNwWk5FMUdUWGRYYW1SRllVVkdlVmxZVG1sWFZ6ZzFWVEprUlV4VlJuTlBWMHBxVTFkT1RsRXdaRFZoUjBaNFlrVk5kMkV5V2tWVk0wNUVWa1pPVVZWV09XMVRWV3cyVDBSU01HVkhaRlJOVlU1SFVtMDVhVk5ITVVaV2JFcE9aRmRSTUZaSGFFbFZWbVEwVFZVMWQySXpiSFprU0ZvMFZGVldlVlpFV21aWFV6Rm9UVmhHUkU1R09WcE9SWFExVlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVreFRGUk9jMlJxYkZOa1NFa3hWMVJTUWxwRlpFdGlSWFJVWW1reE1tSkdWWFJrVld4SlQxVmFORTFXWkcxWFJFNUlWRWhLVkZwSGJGSkpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTbTFsV0ZaWlVsaGtXbFpYV1hkalZYaHdaRE5vUm1KVmFIUllNRVpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1d1JtUklMV05IVVhkRFExcE5OREJmVjBOQldFbG1aak0xYmtZM2RFbzBabUp1YVcweVZIaFdiVXBpTkRSQmVrMWhaMjV1ZGtoTmVGUlpXVU01TjNsRU0wazBRbTFWVldKc2JrMVdOVmRKYWtSeVRVSlRabFJ3TW1zM1kxSjRaR2s1Ym5SVVEwWXdhMlZoU2taU01VUlJOVE5JVFVab1ptbHBZekpETmw4dGJGOVpRVFpLV2sxWlMwNVFhREY0VDBWb1ozQnlhbWhyVG1sbVdqQlBYMlZtU2xkaU4ycHVjbFZVY0RCVFVGZzFSMHRtVm1Ga2JqQnpiVlZ5YWs5SUxVSk1NMlpaWjBrNFdqWktSMGxWTUU1RlZuRktkVlUyVUUxdmVIRnhWMXB0TTNSNFMyUm1SV3Q1YUhRMU1GZ3RNbTVVV25aMGFETkhVVFIxYkhwak9GQXdRelZtU2xaak1IWjFSRzQxV0RjNWRYaDBXRk5tU0d0VU4wMVNZelJpTWpVeFRsbE5WRWRGYTNab05uY3dSRmt6UzBReFNGZHZka1U0ZWxNMlEwSldjMFp3Y1VGbVVGRTBhRnBZWlVnM1UwMHhUV1pYYm1jaUxDSjBjeUk2TVRZNE5URXpNakE0TWl3aVlpSTZJbVp3VTNVeU5XUmpSRVUwY1VaT1QwdE1iRFpaWDFGS1dtaERkQzFuYjNJemNsSmlka2xuT1dnM2NYTWlMQ0p1YjI1alpTSTZJamc0TURjMU9UYzVZalF4TWpReVl6YzVabVJsTlRBMk16azVNalF3TXpRNUlpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUk0VnpONGIzTkhTR0oyZUZSQlEwdENkVVI0T1c1UVlrSmlOMWRtUWtkWGNWRlhRME55TVc1bExYa3dJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pZURSNmMydEVOV1psVkY4NVFWQmZiM1I1YjNkUFMxQjBTWG8yYjNsU1dFWjFYMkpQZDNCbFJFZDRRbll6Wm5CRlJGaGlRakIxWmtFNE9YUm1XWHBDTjIxUmJqUmlTbVJOTVUxVlNtbzJkWEJRVGxkSlVYTmpaVVJKWjFoSVowVkJXVzVMVVVodVVGTjJRMHA0V20xalpVVjBlSGhMU214SE0zWmFUek5wU2t0UFJrSkJjVEJtYVhKUWNGQXhYM2RVT1d4M1gwRlZOemhFVVVaTlVHOWZXWHBzWW5sdVYxTnRWMEZxV0RGRmRGWnlNV2RyYzFGdk9TMDNUMjh6ZUdocFNtWmlWRTlJWVdSa1lsazBWVGhSY1ZOR1YyeHRkVzF2VVd4RVFtOW5ZakJ2ZHpSbFIwWmtOMk56Tmpnd1V6QmFOMFJvUVhKaGMySlpiemxUWjBRdFFXdzVZbU5KWTAxRFIzbG9ZWEZzUXpCclprUlRjME5VVTFCUlgyWkpTWG80TkhSNFoxTXhRMFpHYjJKSWJVVldVazExWkRSVWFFaFJWM2d4VG5CdmVXOTBkbmhOUlhKVU5sOVpMV0V4Y1VNMFgxazBTM2xSSW4xOWZRLm5JY3pmbW5veWUtMDZZcGQ0bl90dWh0T0hJTXI2Zmdqcm1lWE95cUxiTy1BNzFjZHU3UmRxYTRacFZYTEVkVEJvb285LV8xTlhnSUpQdHBvdkEzUHhVOWE2eVNfSmhVMVI5UzJfZmFZNjYxTFRpU0M5ZURxd2ZxZHlXRGMtRzVXRUlwRFpSQnZ1c3k0YThVei03QlFfYk9iZzhxa2pvMlNTaG9IMGpUUDVULU5VUTdSMTQ5WHRMcC04TGFqMHZGQ3Q2TEhUTDlEQWt4cVpLaWpLbDlwTHhzNmJhankyNmltQU1pR2hMaDc0UjBkM2pkMWVzS1FuWk42Q2JvOWdubmhiMUwteXRkcE9PTzdFSHZHUjdGdG9JLTluSUt0VXg2UGc0RGlzWUJuWkl4OUxLX09Qdzd6b2Y4Y016My1nRzN2Ql9kdnBqOUEtUTJvUDJaRUloUlp5dyJ9.\u0022,\u0022correlationId\u0022:\u0022f38d4482-00cb-4c06-b3e8-e145e2f5077c\u0022}", + "messageId": "143185a38b0b4a5b926ad0c7ceb82336", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -11,13 +11,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-008d8f07a0b6a0079b6ff63060e1add5-fbe662959019253c-00" + "Diagnostic-Id": "00-aefe132521c390779c3e7f65c4d7cdc4-4717dc8cb7e47274-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi93RExtMll6WEFFLXVZOThYVWJmVDl3P2k9MjAmZT02MzgxOTI3NTY3ODYzNzY4NjM=\u0022,\u0022correlationId\u0022:\u00225c23d0a4-95b7-46c9-a9fc-ebb0ec772d26\u0022},\u0022time\u0022:\u00222023-05-10T18:28:00.1649744\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022}]", - "messageId": "856b0bec10974dfa9fc381f23c2cca27", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/421f1200-0b6d-4499-9060-01d269293aa1\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022421f1200-0b6d-4499-9060-01d269293aa1\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L0hLSlNVMk9XNDBDdGhVS2tBNGlWOHc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022correlationId\u0022:\u0022f38d4482-00cb-4c06-b3e8-e145e2f5077c\u0022},\u0022time\u0022:\u00222023-05-26T20:14:47.9489239\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/421f1200-0b6d-4499-9060-01d269293aa1\u0022}]", + "messageId": "da698ed5a44d4f7f9d6cb999d931ce41", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -26,13 +26,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-a00cef52d5986dc3ebd3b62499f933c6-5dd3109c4772628a-00" + "Diagnostic-Id": "00-f0b5044470fac60edae5104cc63c09df-84c219e7be74b8fb-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi93RExtMll6WEFFLXVZOThYVWJmVDl3P2k9MjAmZT02MzgxOTI3NTY3ODYzNzY4NjM=\u0022,\u0022correlationId\u0022:\u00225c23d0a4-95b7-46c9-a9fc-ebb0ec772d26\u0022},\u0022time\u0022:\u00222023-05-10T18:28:00.1649744\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022}]", - "messageId": "b36f622d29554e219654627d1c6cf61f", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/421f1200-0b6d-4499-9060-01d269293aa1\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022421f1200-0b6d-4499-9060-01d269293aa1\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L0hLSlNVMk9XNDBDdGhVS2tBNGlWOHc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022correlationId\u0022:\u0022f38d4482-00cb-4c06-b3e8-e145e2f5077c\u0022},\u0022time\u0022:\u00222023-05-26T20:14:47.8551793\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/421f1200-0b6d-4499-9060-01d269293aa1\u0022}]", + "messageId": "618d88a4510a4a458153b1775a502856", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -41,13 +41,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-88bfcf133e1b1050331cea5ad8fc3959-3768960d0aca0729-00" + "Diagnostic-Id": "00-0218ae645630e4b0a4d0114e67ccdb5d-4df71995a265244c-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022type\u0022:\u0022Microsoft.Communication.RemoveParticipantSucceeded\u0022,\u0022data\u0022:{\u0022operationContext\u0022:\u0022MyTestOperationcontext\u0022,\u0022participant\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022callConnectionId\u0022:\u0022401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi93RExtMll6WEFFLXVZOThYVWJmVDl3P2k9MjAmZT02MzgxOTI3NTY3ODYzNzY4NjM=\u0022,\u0022correlationId\u0022:\u00225c23d0a4-95b7-46c9-a9fc-ebb0ec772d26\u0022},\u0022time\u0022:\u00222023-05-10T18:28:01.4149362\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022}]", - "messageId": "40d59a0145724ea8b8647d0e3afb7e70", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/421f1200-0b6d-4499-9060-01d269293aa1\u0022,\u0022type\u0022:\u0022Microsoft.Communication.RemoveParticipantSucceeded\u0022,\u0022data\u0022:{\u0022operationContext\u0022:\u0022MyTestOperationcontext\u0022,\u0022participant\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022callConnectionId\u0022:\u0022421f1200-0b6d-4499-9060-01d269293aa1\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L0hLSlNVMk9XNDBDdGhVS2tBNGlWOHc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022correlationId\u0022:\u0022f38d4482-00cb-4c06-b3e8-e145e2f5077c\u0022},\u0022time\u0022:\u00222023-05-26T20:14:50.2614342\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/421f1200-0b6d-4499-9060-01d269293aa1\u0022}]", + "messageId": "a44563218ffc450f8f38db649b382496", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -56,22 +56,7 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-233c71f05877cb7f3b7ae59a13f23c55-71080373753e1c01-00" - }, - "enqueuedTime": "0001-01-01T00:00:00+00:00" - }, - { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallDisconnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi93RExtMll6WEFFLXVZOThYVWJmVDl3P2k9MjAmZT02MzgxOTI3NTY3ODYzNzY4NjM=\u0022,\u0022correlationId\u0022:\u00225c23d0a4-95b7-46c9-a9fc-ebb0ec772d26\u0022},\u0022time\u0022:\u00222023-05-10T18:28:01.7743192\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-18a6-4ec3-8c05-415a2f0a3c09\u0022}]", - "messageId": "750c11ab9e4541a1a20459d09a5788f1", - "partitionKey": null, - "sessionId": null, - "replyToSessionId": null, - "correlationId": null, - "subject": null, - "contentType": null, - "replyTo": null, - "applicationProperties": { - "Diagnostic-Id": "00-a2904e5fc9787cebb0569c227e1cd2ec-46c55b40995d4470-00" + "Diagnostic-Id": "00-47a52e29845fcd34ca14fe738bf5fd9e-1d0f805a7bb543d9-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" } diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTestAsync.json b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTestAsync.json index 02d13a249b80c..0ed8ed141d919 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTestAsync.json +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/SessionRecordedEvents/CallConnectionAutomatedLiveTests/RemoveAUserCallTestAsync.json @@ -1,8 +1,8 @@ { "entries": [ { - "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9Dek9ZZU1ETWhVLXo2SFhoaTBTZ3lnP2k9NCZlPTYzODE5Mjc2NzYxNTIzODI1Mg==\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVkrMi9iT0JMK1Z3UWZzRDljUzV1a0hxUUlHQWZIaVZzM2o3cDVkTGVMNEFLS29tVFZzcVNsNUZlNi9kOTNLRHVKVS9lNnZic3RzQXFpaU9Sd3ZtK0dqNW5KcDQ2U2VYNVJObG1TS2Rsa1pkRVJuenFKS2VmMmJ4WjNSSWNMcVdwQm9saEtHb1VvOURGRG51OVJGRVdCaHlTTEtGVVlTeDU3ZDdoOUNFY3lVREZ5SldQSWpkMFFjZTFLSEdNY0U2WTdMenR4VmxlNTNGekl1UWI5MEtHTHVDcXpvaGxiUEJyaWhDZGFJUytNSlBLa0JCQS9aQ2lodnArRW5tWTRjV0ZPTG90MElWTnQ1eFNMUEgvWnFhUnBNcFZWY3FkSU01VlFnaFdLWlJJaUQ4Y004VEJLa0l4WUZIbytWYkgwUWRFMGkyTU5aaWN5ci9VVGwrdE5aZG5WMml5MUdWUVZTRmFtckxScE5rY3kzV0orZnRscHlyL0NVVG82Y0ZUeXA0N2FLc0VZZmVYMThIeVhvMExpSy9CcWhFTHFCOGdqbUlPamRJS1NTQ1dNSmlya3NYdm9LS1ByY21GVXE3ZnpQVmIvQncvbVdUR3JyUk5sMDBnMUJXWFRwcWxxMGV2Skt1c21lWlpPRzVpMzNuVHJHYXhKVjVWek85SmIwcDZxZWtxaFJiM1NDQk5VeDdDMnM3cXIxSjZrVXIwbDZTV2xtZW00aDVsTHNZNEM1SU81c0NNOGduaWdDTUtlSmxwVHloSVo5eWpyWmFUbmVtRnZTK2hmV1o5Z0ZHQkVQRVJDNjlHNWpqTTVLQURXQUZ1bGdPcGNicTFMd1N2MTM4aUVCMHFIUmhqOVVhdm1iMFIxUytpUTZDS3VybzBzNnFvMGxpNDBnYXhQdTRUWVg2L3Jlc0wxR085MVB1OVdabGdXalM1QTlsTkhiVDkzWjFsV1ZiNjc1WHAxYkU5MGxKY1JEQ3o3K05iY0ZtVWZPY1RGQWZFZDdJd3ZuUEhFY3dobFhRdy94QXJVL1JwOENkTnRRL1YzSWg3dThxQkxBdEwxcVIySStzTnJRWFlIMEhZMGZleTBIL08rWE1SWjZmallEd0xuOG5yU0c3eWZPQVI3VGdodjF5R0VPSVFET0hkQ0JqM1FzcDBjV09CdlFzcSthVlNGVEozZDY3MTJFb2wvT21zMEI5SndBVGhndjFQREZTTGlldW9ZclpiMll5dStSbldXRmhMT1l2cXRXVSs2aGJXQmJkdVowbWlSR0prS0hiMllQdlZWSzVnMGE1SlIrTjRsVVQ1T1ZrVnhkcmw1ODRwY1puc3M1NHYxdHFWa0VXZXhiTFFBdzUyYjQ0bERZVGtZRGp5WFBETjU1OEJtQTh4TWtxOGRJK1BZZ01PNmxIQllySUE0eG02WHJkeWhjcnFuM0EvQnZ3ZksyWGNxWjE4cXA4RGNHaVZWQXdBUWZuQ0EyUmNBSGx5NDlEc0FXcmxEQVBwakFXREh0ZTRoMU9jUWl3bnpuZmEwZVYzQ2VaZGczNEhqRnJiYWpZYm90TlArak1DZTk1M3o2NXZMaS9HeDR4S1BrSUI3bEFRZUNSaWpubmNJVForZ2VSZ0U5UCtCWm8vUUZLeUFoZllBbkpFZ1lNRWhOSnowMXEyVnJHdkE5emdCZUJ3OHh3YzZKQWpwZHhFZ3NHa1BRZWlQQi9IM2RxREY4SG5vRXZ4WFk5QWZoSkhMU09kaUxyTUN0WGZsdG5lZXhXSW5zRWJSU3NzOExVM1dUT2NpV2ltbmttcW1tMHBteGxucENPNlVIVjJ6cVpvU2p2dmc1T3B1ZUg1SEtMOTdmVDRZM2wyOUhwQTdqcDJzZ1B0T0MvYnJ6OHZKaGJ0eGM4T09xMWdXZERBWjRRVTVHeTFuNy9sNmZobzNIK09qYXZZNy9iZExmaWNQUkhicTZaK3BmNFd2UHN5SzMyYVQwOUhaZlg1Vi96YXF5Q3YzV0wwZDk5NlY5Kzl1N3VrSFBrL2pkYXYrNFZxczVyS0NHT0k1VitPejB4NEpkcEhrY1NoMFhqRktlL3pMZmh0RjJpbUhJeEJicnNhWEp4ZjcycEo1c3gySnNzYkF3dllQa2VCMkJLaHdUK0YyRW5ka1VlaDExQy9LWi9MWW1RelBidzd4dWUwZkhQWkRvTHM4T2Y2YUpiQ05kYTZyYVZsb3BKY1F4Zzg0Z0Fna0NzSHplYTR6dlBpYStkejJmOFUraXUyQTl6U2phckk1M0xNUFNCQVN0YWtNWk4yaW5rb0VLYkl6WW1JWUNNYkZFUk00aEZBb1hDSkNDb1RFMEJlZUswWlkwSkZ3QjJMZ2lSUGZpaDI1SW9EbVFCd2ZpK0ZBOENNeFBCSHVpY0JVSElXQ2N4RlFFYmlDbllqUllBdXMxMDNMejdFSm1yaUZaN1ZhZGJjYnZGdWE5UFpXcnlHWkJxNUZVOS9lZ2psb0dodVlkWHNyb3hyWmtJMnNKYyswdVUvYUhyTzJieWhLWk4zY1JYRHNWMW5jVE84U3JlTUlEdHMvb0NTeWFkQ2QrNWc5MUVZaHlOSlNDSysyQnJFdk8vYVFMWi9wZEZ0cUpDd09Fc1VRZGFFdzgyek5FeVZTb2xEREhjMWRiak01VytmVVVKYTJpZHBicFJZR25KOCsxaDJGWHIxTkVwdDZ0eDJROVVGS2VLbzNOdC9icFdkdHE3TTZQWDRkM3I4NFMwZlQ4dzhmcjE3OGZEUCtWYWY5UHVpSDhnZHVESkRKenQvb1luUUI5UWs1OVdoMWRqS3YzbVR2UUFiVUdpQU9XWkpsTWRuV0xabHVDNVdzdnR3TkRmSzhYR2t3ckRFTC9Sbm1RTUpwZmROU0h4ZkxySG1zcWZkSGJJWnF5anh2NjRmL0t2OEdKYnNNbk1KUXNkelB2YUhaRzk2Ly9hRFBqOCtuTitnK2VQM0xOTU5YNlNhRnBOcjdTZmNERndJT1pSRC9JT3k3blBvVVhKSFY1NHU4eVNaUUU0TFRkajdPNmlOVHlsakI4ais1T2RiUkl0MVBydUUvQisyaUtyalhKWUVhbTdnSzZzY0lTdHJRandoeWlldEtqbDBKa2QrV1IvOUwyUW00cVNrWFZZdTdCdHkyYXZ3RDFKTlR5cmNRQUFBPSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVozcE9la0YzVDFSSk1VeERTblZaYlZscFQycEZNazlFVFROTlJFRTFUV3BWYzBsdFZqUmpRMGsyVFZSWk5FMTZZelJPZWxsNVRsTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJGRmFNMDUzVkVodmVXRjZTazVaVld0MldrUktUMXA2Vm1GTlJFSlpWbXRHUWxCVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNU5lRk5yV2pWVWJYZ3daVzFqTkdWc1pIWmFibWN5VDBWT05XRnFWazlpUkVwWFVtdEtZVk5WZEc5WGJrNDFUbXhKTTFwSFdtMWlSekY1VkVNd01WUnFaRE5oTWtwM1ZHcHNiRTlGY0VaYVJscHBWVVZvYWxkSE5XcFNSR2hwWWpCYVYxTnNTblJWU0VaTlYwaGthMXBHYUhOV1ZVWjRZbTVDVWxWWFRUQlJibkJoV1Zoa1IxbHVRazVOUkU0MlVWVjBiR1JzVlhsaU1qbGhWVVZTUTFaRVJuQmpWa0YzWkRKT2MxcEhXbWxXVkZKWVZYcHNlbUpIVWxCTVYwNU9aRmhPTWxWSVRtdGpia0pZVjBkTmVVeFlhRlJpVkZKSFYyNWFWMXByTVd4YWJUUTFWakZXVEdJeWNHNU9NVW93WkVWc1lXTXhPVmhYUlVaRVkxVkplRTlWV2s5VFZuQjJXVEZzUTFOSVFqRmxSMmhoWXpGc05VeFVSbGxXVjJSeVltMVNORm96YUhkU1J6VTBUWHBWTTFSWGNEWk9WRnA1VTBoa1RVOUZXa0pWUld3elZESjRVVlZYT1ZoU2EyODBWbFYwTTJSSGVIaGthelIzWkZVMWFFMHliR3BsV0ZKTFZtMTBiMXBYVWpKTlZrSTBWbTVrYTJGRmJFVlNSMmhPWVRGT1IxWnNTbTFrUnpVMVkydzVSazR5VVRSUmJFSTFXVzE0YkU5WFduTmtNM0JDVWpCS2VGSjZVVEZWYWtveVVUTkdWMVJyUmsxU2JVcDFXVEpPY1ZKSE5VbGtSVlp0VlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVwU1RteGFNazVGUmpGTVdGVjZZMFJrVUdSdWNIVlNhMmhOVXpFNVdWWXpVblpOU0VwUVdIcHNkbHByYkZwU2FscHBWa1ZXYTFSRVRscEpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTblJVYlRsWFlXcENhV041TVVaa1ZsbDZWMFpKTldKVVVqTmtSVVpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1a1FYRmZhRGt0TjFBMmVTMDNjMk4yV1VVeFdUWjBMVnA1VERKM1QySmthM1F0TW1oTlZrWm5NMDFpV1Mxd2JWbEROM2xJZFhkalVGTXRSbk41ZVdWdGRFOXhkbkpHZVVsbVV6VlZhMEpYWWxkbWNEUmhjRXREZERkSmVGUkhXSEZwZEd4MGRHVkZkRlpLTFZKbmNHMU9TVEl4T0hJM1NqWmFNMDlZU25SdmRsaGtUVWxaWmkxUFZEa3lZbFZEWVRGTFZrVnFkWEJEYjFaMk9XZ3lZbFZQTm05bFZWWTFUVmwwUWs5dmFraEJNRWRTUTFad2NGZDRUWE5tY1VkNVgxUjJaazlMTlcxMGNHUmxSRVp2VVhkUFlYSnFiMU51WTA0NE1XeFBXVEJ2YldJeGJWa3lNbFJVVm1WTk5GSmpOekZaTlhGbU9VVTJaVlZQZG1SNU5qSmhXRU5yVm5aM1NWVlVUMEk0VUVWd1owaHVhVkJmVjE5M2J6VklNbXN5VFVKbFQyMVJUbkpvTWxscldEVlFWVFJ2WTJ0aGVHdElXVjlGYVRoTmNHVk9aa2xQZWpBdFFsRjFXVFJ5ZW1ObmMwVmhSelJ4Tm5jaUxDSjBjeUk2TVRZNE16YzBNekk0TlN3aVlpSTZJbE5xWWxkWmR6WTVWamh6YVdVMlFWbEtNM1pEUjJoRWRtWlBabVJRVTJ4MFJYQnpSMjFUVjAxbU56QWlMQ0p1YjI1alpTSTZJbUkyTWpsaVl6RmtZMkprTlRSbE9XTTVOVGMzTkRFNE5XUmxNakk1TVdObUlpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUprUjBZeU5ucExNek14WjA5UGQxODBlVjlWVTJZMlpqWnpVVXRTYmpFM1VHbFJWWEoyYVZVeExWUnZJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pY3pGS1JubE9iSFI2WnpoNlYyOW1lRFk0UTNscU5VNXNNbFpHUWxwSlMyaGFjM2syVWpka1ptWnNiWEpNTFRWT04zZHJZbkJPT1dVNFNrVmtWbUpRU0dOWWJtTkVPR0p2UmxaS1VtMVFjVXhZZDJSa1dHeFZRWEZ1Y0ZGUll6UkNlbHBoZDBaaWNFMHdNM3BCUzJWMlZUSnZiMXBRUkVKVU1XbHhVREIzWTJ4a1ptSlZORmRUT1hOc1pFOHRZMDExYzNaUWMyUnljRmRZWXpJdGVGTnRORVphZGxabVRXVm1iamxYVlV0dmFtYzNVblIwU1ZwelgxZFlRVU54UWpFNVJrNUpXbTlqV1VKSWNIVjRhRnB6V1hrdE1WaFZaMnR1WkhobmVIQkVibmd6TlRkTmFubzFObkpJZDB3NFJrRlFTWGRQYkZCUmIxZEdTamhWUzNkMGJIRjJUakIxVG1FemFXTjVkRXBXYTJobFpIWXhVSGhXZDJSb1NVUkVhRTFyVTBaV1VtWjBibmx5WDBVM1pEaENVSGxpYkdVNVpteDNla0ZIUW5GSE5EVlNNblpEY1ZaT1FVeEdZbTVqWTJwRWJraDBSV1pSSW4xOWZRLkZLOG02S05yUXBtWkh0LVkzZF9zNlRhdDFEX0pGSkwybzdZWVFVY3NfVWdtYkZhdFQ5ZTZjNWhjNFIzUDdsOGFlZk5ha2QwWDlfNVgzUnF1Tm9CMWRHUUpSbDhrOFE0Qmxmc1lMeTdUNUp6NlpCcEQ3Z09kdkdXNzBqQlVQQXl4RHpmVGVpR0Qwck9qbThtQmJZWC1BQWFRRzJvaTRFbUNKS04xVm9iaENBOUJBN3NQMjV3NU1hc1oxbndkMVpyUGJRZkhJUDhHbW1BeHNMdndnZWhJNndXMm1IRm5JMFBMdGREdlN2a2htcU5zeXFPT3dOeUxvMTRIcnVfcDUwb0lOY3hPRktVLXNyZGVTR3FmQ2hOX2NZbm9PMGRrSi1ER0p1WVVzTndtVDkwcnlscC1YOWJ4NDJkOXBFVGtWRW5lcVE5OWExRkNJelBWUmtKamZWLXpsdyJ9.\u0022,\u0022correlationId\u0022:\u0022cadda1f9-13c6-4bcd-95b1-3133a803a141\u0022}", - "messageId": "e98a070e3cb8429cbd22ad8ce470bbe6", + "body": "{\u0022to\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022from\u0022:{\u0022kind\u0022:\u0022communicationUser\u0022,\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L2N5NzJtN3B2VDAtR0JqLTBIQWJaSGc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022callerDisplayName\u0022:\u0022\u0022,\u0022incomingCallContext\u0022:\u0022eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJjYyI6Ikg0c0lBQUFBQUFBQUNzMVlhMi9qdUJYOUs0SUw5RU4zYUpFVUtWRUVqTUp4a2gxdkVpZklZM2M2Q0JwUUZHVnJJa3RhU242a3MvUGZleWs3aVNkT2Q5SjJCMWdGa01YWE9lZGV2dTdONTU1V1JUR3AyanpMdFdyenF1ekp6NzNNVm5QM202YzkyUk5TNlVhU0pGV0tKakdLT1k0UTQ0eWlKQWtaVWxGQ3FjWllpWlRkNGU0aEFtVnhURkZLRTRyaVdJZUl4NEhDS2NhYWNOTjcxMHZ6cGk3VXcwVE5EZUJEaFNuVHVzckxkdXo0RWg0YXdTT09PSWxUeEVUR2tjQU1veWhraE9rNERCWEdNS1pRNVhTaHBzYU5LUmRGOGE1WEs5dm1PcS9WRmtpSExFNTBCSkpObUNDbXd4U3BWRE9Va01nRVNzVlVhdzVBc3p4TkRaaWRxYUl4ejFxdUgycW5yakYyYWV5d3JxRm5iYXZhMlBiaFFFMDNuRi9lOWRycWozQlVsdTA1S3Z1bW96WWdHS05YWG8vUG14d2xvb0NKV0RrMUFvT2pERWNxeVNJVWtEQWpxY2pTTU1QN2pyS21xUlpXZDdpOXQxajlIenhZNU9WOTQ1eW8ybGJwR1lETjJyWnVwTytyT3U5blJUNmR0VEJ1L2RCdjdtRk8rcnFhdXhaL1NYMWQrMnVrTlRLTHNrS1k5TFhlNmFPMXZ5UitWdGw3ay9wS1lNSkNxcEJSQ1VITWdENFZnSjFZTUJ3S0dqTXRzRThqUHlkK3dHSi9JK1h2K1lDQTZMbEpjelVzbTVXeGJsVnBVRFpYRzJPbTRJVG1UNkg0VWN4V3N6V2ZqRzcvRk1vMlVyYTZGbWw5YlZYWjFKVjE2cUFJMmtqUWoxaWZoRUdmNGtBR0xCSis3OHZXNzZPcWJFMEpmVC8zOU9aenV6RlZYUmZiSTh0dlVyYzlrNkpLb0dFNXdMZjJ0cXdHeUtNaDRSNzJ4aE52Zk1FOFFxTStoai9pbXB0QkE5NkN3YTZnQjQ5ZFF0RVBhWjhTMGlkeDRKcVN3ZWhha3UxdWNoWHRBSHZkeDN5Z0ZtbGVlU3dtSWZNdXJ5Lzg0YzhYSHNITWkrRWRlSVFRandpZ0YxNGNRUTJVWEtVQUhmZ2JwR3BnVzEwajIrVC9NanZsTEpGLzg5Wm9Ec0poUDN2Z0FhK0JFMEdtemN5elJpL2R4NmI3R2pYNXRGU3d0YWEvTitvWld6b3IrS2FjYTRNV21WVlR5YUw3eStlNmVwWEs4TU81bnJIVGoxcE1vcVBoNnY2bVZLYzNtUTUzVk00WDYwMUpxekxOVTlVYUNhWjdONGNYSGlVQmpuRElBdkxDNkswVDJ3ZlFack5pN1ZtVnBoYWNCaDBFVEJuM3JGc3htMjc3NkhRSG5jZk94ZnZvL0czby9DVTZCZTNPTEtWYllLQ3dGRUljdmNiQTZac1lPTjFub04rWkFkWmQ1eUZDT2V4UFRDTHVjZG9uQkRhZEVQMDQ5R0RQeFIyMk5YRGZQR0ovTFdCbkJyeXo2NXZMeWZqUUl6d1dFUlUwcEdGSVNjeERLdmFtSjloT1QwY3U0UDZtL3hjNWZ5Sm4wTWlFQUEyWUJoRVJYSWlYM0xDNU90ZldxbWxBQUJNRStISDRRZ0FQb1A2dENnSzJ0MFRZZGdLL0x3dmZXWWlPaElzNElQZ1BKNkhmaTZSUWlTbmtYT1VsNmc3T1RlMDhUeVY1UExTU2xWSEZ0TEo1TzV2TFpLVzlXdWw3MDlZcXQ5N0tKSEM4YlBYYWg3cXRZT01QajY3dVJtZDNoSXE3OTJmRDBkM1YreUc1RTlqTFN6ajZqTXlySTNQKzZicGQvSkJOVHZ5VGYveGdSNytjMFlQa3A2c1pQY2pHbjlvYlk4WSttLzlHL3htUTM4aWprQzA4L1JiOCtyamd4OWxpZmZtSkwwd3hPcWVqb3Y1SkxYOWVsbWVUVFA5NmNQUXhucCtlV056QlA1NlE5VnpWY0tFdzcycDhldUtUY0h1dFBEWEYzbzhScGI1NFdlK3VsRzdJZmd0Y05GZmp5NlBKTGxvMmJ6Y3RTZDVhbU5uQlBoT2NrMEFWN3dCdUJnbFBsYVZaSjRPeStxby85aTVHWnpmNy9NTFZEL2ZyNGRhN1BEcDh6UkpZeUtZdzlhd3FEVEpMdU5QM05FQVhqRWo0OWJqQUcwMWVNMSs0K2xmc285ZzFzT2NSZFp2UDRieDlaSUxiMGRqYVFqd3RtNWxDbEljZVk1SkVraC9LZzZFVUl6bWljaFRLNDBnZWhqTG1Nb2J2V0k1aVNZVThPblFmUXl6RGtTUUhjblFzK1lFTVJqSU9aRVRsa0VnV3lPTmpHWS9rRVpGMEtNbWh4TnRGWU5adHA4OXp3Wm04aFdlMVd2VTNDN3hmMmVudHJWbERtQXhheTdhNXZRVnowQ3kxTU9yMlZpVU5jcmMzY3BaOGhSWThvejNGYmI4RGxLbW12VXRnMzYveXRKM2RaY2FrQ1d5MnYwQ3k0NktpdStBcGtHaXNSaEN5VGVHaWRkbUZlN20yeDhENDFFeTdEQ0NLT01rSTVHbUNLMGdpRE9RQ0NSTVVaVG9ocVJGaGtobVgwcGdHRXM0dWFqdlhlbUhCK2RPbmpLSTBxL01zYzFGMlZ3RWhJTVNISitiQkJYL2JhSzByOVc1VzYvQ0VIZit5UGhaNGNqb2RuNFFmeWYxME1BQjhTR3pneElBK2grUk16eWRsck8wcCs2Q3kwL2JEV1pZTm9RL0FXaEFPQVpOVGNiSEpTSExUcFNCNWM3bHRHaFpGdFRKZ1dHc1g1Z3VNZ2VqVCthYVRQaTZYZWZ1VUxlKzJ1SERWVmtYUnBRci9aZXdOTU0vUk54UjI0MjhvK3ZvaG92T29YbDVqOU9QQko0VGZENU9QNzZjdXNQNnJHWVNCb0Rqa25JWVJqeUdHb0JFNEkyL09Ga1diWDBDK0IyN2Jlamx2RG13RmlUQXNnR2RIcHlaWlRIZGpiZml2d0daYTB5d2ljUFpBUnFnMFpPT3hRQW5tTU1zNFNnUkxVcHdKbHh2K1R5a2w4RTV0dGFnNzNqWHdkaG5odndIUHQ5NFBreEFBQUE9PSIsInNoclRva2VuIjoiZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNkluQnZjQ0o5LmV5SmhkQ0k2SW1WNVNqQmxXRUZwVDJsS1MxWXhVV2xNUTBwb1lrZGphVTlwU2xOVmVra3hUbWxKYzBsdVp6RmtRMGsyU1dreFRGTlVUbEpQVnpWUFZXcGthVlZ0T1cxbFJ6RnNWMjA1V1dOWFNrbFhhMlJzWkhsSmMwbHRkSEJhUTBrMlNXa3hURk5VVGxKUFZ6VlBWV3BrYVZWdE9XMWxSekZzVjIwNVdXTlhTa2xYYTJSc1pIbEtPUzVsZVVwb1pGZFJhVTlwU21sT1JGWnNUVVJyZDFsVE1XdFpWMHB0VEZSUmVFNUVWWFJaVkVFeVQwTXdkMDlIUlRSTmFteHBUWHBDYkU5SFVXbE1RMHB3WXpOTmFVOXBTbTlrU0ZKM1kzcHZka3d6VGpCamVUVXpZVmMxYTJJelpIcE1iVFZzWkVNNWFscEhUVEZaVjFac1dWTXdlRTVYVFRGTVZGSnJXV3BaZEZscVFUTlBVekZ0V1RKR2ExcEVTVEZOUkZacldYcEpka2xwZDJsaFYwWXdTV3B2ZUU1cVp6Rk5WRVV6VFZSQk1FeERTblZaYlZscFQycEZNazlFVlhoTlZHTjRUVVJSYzBsdFZqUmpRMGsyVFZSWk5FNVVTWGROZW1kM1RrTjNhVmxYYkhaSmFtOXBVbFJLWVZveGJFOWhhemxRWld4Q2RscHJhR2xUZW1oNVQwWndjbVJ1VWpGT01HUXdUVlZLYmxGVU1HbE1RMHBvWTBoQ2NGcERTVFpKYlVWNldWUk5lbGw2U21oTVZFazFUMGRWZEU1RVJtdE5VekExVFZSTk0weFhSVEZPUkZsNVRXMVZNazlFUm1wWmVVbHpTVzFHZDJOSGJHdFpWMDU1U1dwdmFVMXBTWE5KYlU1MVdtbEpObVY1U25Ga01uTnBUMjV6YVdFelVqVkphbTlwVld4T1FrbHBkMmxpYVVrMlNXNW5NR1Z1VG5KU1JGWnRXbFpTWms5VlJsRllNamt3WlZjNU0xUXdkRkZrUld3MlRtMDVOVlZzYUVka1ZqbHBWRE5rZDFwVlVraGxSVW95VFRKYWQxSlZVbGxaYTBsM1pGZGFRazlFYkRCYWJHdzJVV3BrZEZWWE5EQlphM0JyVkZSR1RsWlZjSEZPYmxaM1ZVVTFXRk5XUm5wWk1sWkZVMWRrV1ZOSFpFWlJWbXgxVXpGR1NXSnNRbFJrYTA1TFpVWndkRmt5Vmtaa1NHZzBVekJ3YzFKNlRqSlhhemg2WVZWd1RGUXdXa05SV0VWM1dtMXNlVlZJUWxGTlZqa3pWa1JzYzJReE9VSldWR00wVWtaR1IxUldRblpZTVd3MllrZEtOV0pzWkZSaVZtUkNZV3huZUZKWVVsZGpha1p1WVROT1VtSjZhM1JPTURsMlRUTm9iMkZWY0cxWmJGSlFVMGRHYTFwSFNscE9SbFUwVlZoR1ZGSnNaSE5pV0ZaMFlqRkdjMUpGU25aYU1rbDNZak5qTUZwVlpFZGFSR1JxWTNwWk5FMUdUWGRYYW1SRllVVkdlVmxZVG1sWFZ6ZzFWVEprUlV4VlJuTlBWMHBxVTFkT1RsRXdaRFZoUjBaNFlrVk5kMkV5V2tWVk0wNUVWa1pPVVZWV09XMVRWV3cyVDBSU01HVkhaRlJOVlU1SFVtMDVhVk5ITVVaV2JFcE9aRmRSTUZaSGFFbFZWbVEwVFZVMWQySXpiSFprU0ZvMFZGVldlVlpFV21aWFV6Rm9UVmhHUkU1R09WcE9SWFExVlZOSmMwbHRWV2xQYVVwQ1ZWVkdRMGxwZDJsWlYzaHVTV3B2YVZWc1RYbE9WRmxwVEVOS2NtRlhVV2xQYVVreFRGUk9jMlJxYkZOa1NFa3hWMVJTUWxwRlpFdGlSWFJVWW1reE1tSkdWWFJrVld4SlQxVmFORTFXWkcxWFJFNUlWRWhLVkZwSGJGSkpiakU1VEVOS2NGcElRV2xQYVVwdlpFaFNkMk42YjNaTU0wNHdZM2sxTTJGWE5XdGlNMlI2VEcwMWJHUkRPV3BhUjAweFdWZFdiRmxUTUhoT1YwMHhURlJTYTFscVdYUlpha0V6VDFNeGJWa3lSbXRhUkVreFRVUldhMWw2U1haSmFYZHBZakpzYTBscWIybE5iVTB6VDFkT2FVNTZaM1JOTWs1cVdWTXdNRTB5Vm1sTVYwcHNXV3BKZEZscVFUVk9iVlpwVDFSSk1FNXRSVFJKYVhkcFkyMW5hVTlwU1hkTWEwWlRVMVZGTW1OVVpFZGxiVTVXVm01U2NrMXVaR3hhYm13d1RVZDRRMXBJWkc1aU1IQlpZMnhPWmsxdGRGZFJiVGxJV2pCc2VGRXlNVFpTUnpoM1ZUQkdRbEZUTkdsTVEwcDZaRmRKYVU5cFNYbFplbU0xV1RKSk0wOURNSHBaTWs1b1RGUlJlbHBYU1hSWmJWWnBUV2t4YVUxRWF6SmFWMGsxVFdwUk1sbFVaMmxNUTBvd1lWZFJhVTlwU21wYVIwMHhXVmRXYkZsVE1IaE9WMDB4VEZSU2ExbHFXWFJaYWtFelQxTXhiVmt5Um10YVJFa3hUVVJXYTFsNlNXbE1RMG94WkVkcmFVOXBTbTFsV0ZaWlVsaGtXbFpYV1hkalZYaHdaRE5vUm1KVmFIUllNRVpDU1dsM2FXUnRWbmxKYW05cFRWTTBkMGx1TUM1d1JtUklMV05IVVhkRFExcE5OREJmVjBOQldFbG1aak0xYmtZM2RFbzBabUp1YVcweVZIaFdiVXBpTkRSQmVrMWhaMjV1ZGtoTmVGUlpXVU01TjNsRU0wazBRbTFWVldKc2JrMVdOVmRKYWtSeVRVSlRabFJ3TW1zM1kxSjRaR2s1Ym5SVVEwWXdhMlZoU2taU01VUlJOVE5JVFVab1ptbHBZekpETmw4dGJGOVpRVFpLV2sxWlMwNVFhREY0VDBWb1ozQnlhbWhyVG1sbVdqQlBYMlZtU2xkaU4ycHVjbFZVY0RCVFVGZzFSMHRtVm1Ga2JqQnpiVlZ5YWs5SUxVSk1NMlpaWjBrNFdqWktSMGxWTUU1RlZuRktkVlUyVUUxdmVIRnhWMXB0TTNSNFMyUm1SV3Q1YUhRMU1GZ3RNbTVVV25aMGFETkhVVFIxYkhwak9GQXdRelZtU2xaak1IWjFSRzQxV0RjNWRYaDBXRk5tU0d0VU4wMVNZelJpTWpVeFRsbE5WRWRGYTNab05uY3dSRmt6UzBReFNGZHZka1U0ZWxNMlEwSldjMFp3Y1VGbVVGRTBhRnBZWlVnM1UwMHhUV1pYYm1jaUxDSjBjeUk2TVRZNE5URXpNVGszTWl3aVlpSTZJa0YyY0hobk1ETjRNa2R3WVdGdFRGTlNNWGhXYVhoWVNqSmFlVkJvVm5aTFZERjZkRVZETlVSaFZ6Z2lMQ0p1YjI1alpTSTZJbU5pTkRBek1USm1PRGswWVRRMk5qWmhPRE0yWm1SaFpHRXlOelZoWWpVeUlpd2lZMjVtSWpwN0ltcDNheUk2ZXlKcmFXUWlPaUk0VnpONGIzTkhTR0oyZUZSQlEwdENkVVI0T1c1UVlrSmlOMWRtUWtkWGNWRlhRME55TVc1bExYa3dJaXdpWlNJNklrRlJRVUlpTENKcmRIa2lPaUpTVTBFaUxDSnVJam9pZURSNmMydEVOV1psVkY4NVFWQmZiM1I1YjNkUFMxQjBTWG8yYjNsU1dFWjFYMkpQZDNCbFJFZDRRbll6Wm5CRlJGaGlRakIxWmtFNE9YUm1XWHBDTjIxUmJqUmlTbVJOTVUxVlNtbzJkWEJRVGxkSlVYTmpaVVJKWjFoSVowVkJXVzVMVVVodVVGTjJRMHA0V20xalpVVjBlSGhMU214SE0zWmFUek5wU2t0UFJrSkJjVEJtYVhKUWNGQXhYM2RVT1d4M1gwRlZOemhFVVVaTlVHOWZXWHBzWW5sdVYxTnRWMEZxV0RGRmRGWnlNV2RyYzFGdk9TMDNUMjh6ZUdocFNtWmlWRTlJWVdSa1lsazBWVGhSY1ZOR1YyeHRkVzF2VVd4RVFtOW5ZakJ2ZHpSbFIwWmtOMk56Tmpnd1V6QmFOMFJvUVhKaGMySlpiemxUWjBRdFFXdzVZbU5KWTAxRFIzbG9ZWEZzUXpCclprUlRjME5VVTFCUlgyWkpTWG80TkhSNFoxTXhRMFpHYjJKSWJVVldVazExWkRSVWFFaFJWM2d4VG5CdmVXOTBkbmhOUlhKVU5sOVpMV0V4Y1VNMFgxazBTM2xSSW4xOWZRLkxxelVoVkMxek5nelNOMW9vZVQzazFCT1QtX3lYMVExM21xOXFHc3F2ZjlCNTlkMGplNlRBN0tXT1hocklwMUNOTkREZHVCSllqMXdYVmUyRWhxREN5VEZ4czZ3Q0d5RmNwQnNVMXpoYkVRSE1hdUZGZzI0bjI5WEUzRDh5Q1ZvX045MzJMcmVPRkZoQlpudk5vbi1kNWZuMUQ5SzJzQmMyYWFBNXFHbE5EaTFRN2VZSUxZXzdjZC1fVUxfMUVOdUR1eFJFVklMSHFEMi1fSExyTXN1c1NLUXE4VTkyOWdobGVyX2JuTlctQ1E3eFVlWS1zWjZtQlBjQkVBTkxwbVBqaUloUm5JQUlLZVQxRDhScWotcWN4TFhOWDJTeXllczR6QWszWVYxbF9TSjEzOUlyZ0pLRGZsRC1PQ051b2U2T1UwV1ZNSVV5SU1mS1piMTMwX3JLQSJ9.\u0022,\u0022correlationId\u0022:\u00227df71103-abac-4898-b050-807b84bd0f80\u0022}", + "messageId": "09d5820352144af79097c076ecfbd3f4", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -11,13 +11,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-ddf4454b4558740ace17c162c2dda77b-86196039aa1282ba-00" + "Diagnostic-Id": "00-8f6dfab978812c6f5f744fca6dd87244-98cd4a749d09905d-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9Dek9ZZU1ETWhVLXo2SFhoaTBTZ3lnP2k9NCZlPTYzODE5Mjc2NzYxNTIzODI1Mg==\u0022,\u0022correlationId\u0022:\u0022cadda1f9-13c6-4bcd-95b1-3133a803a141\u0022},\u0022time\u0022:\u00222023-05-10T18:28:08.1181865\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022}]", - "messageId": "e450a3a41b724c799b88a4ea654c2eb7", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L2N5NzJtN3B2VDAtR0JqLTBIQWJaSGc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022correlationId\u0022:\u00227df71103-abac-4898-b050-807b84bd0f80\u0022},\u0022time\u0022:\u00222023-05-26T20:12:57.7415219\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022}]", + "messageId": "7b071b1392e84948812eb10e63a265c9", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -26,13 +26,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-c106a6726aabb73428bf4dcc3ff714b7-f24dc5f1dba6a06a-00" + "Diagnostic-Id": "00-d2a0d737fa6cf2fe1c0ac60823255499-e10959c073733888-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022type\u0022:\u0022Microsoft.Communication.ParticipantsUpdated\u0022,\u0022data\u0022:{\u0022participants\u0022:[{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false},{\u0022identifier\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022kind\u0022:\u0022communicationUser\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022isMuted\u0022:false}],\u0022sequenceNumber\u0022:1,\u0022callConnectionId\u0022:\u0022401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9Dek9ZZU1ETWhVLXo2SFhoaTBTZ3lnP2k9NCZlPTYzODE5Mjc2NzYxNTIzODI1Mg==\u0022,\u0022correlationId\u0022:\u0022cadda1f9-13c6-4bcd-95b1-3133a803a141\u0022},\u0022time\u0022:\u00222023-05-10T18:28:08.1181865\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022}]", - "messageId": "261d242653154a639ee6e17e0cc6ffed", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallConnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L2N5NzJtN3B2VDAtR0JqLTBIQWJaSGc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022correlationId\u0022:\u00227df71103-abac-4898-b050-807b84bd0f80\u0022},\u0022time\u0022:\u00222023-05-26T20:12:57.835222\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022}]", + "messageId": "c112e2335db24d41a47b19e0518dcd27", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -41,13 +41,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-8e92e8e292c0857b44d54660ff057313-d6414606c8fa1a0a-00" + "Diagnostic-Id": "00-8a34c57360e7b449bad5843a1b4cd616-5654833ec15edcda-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022type\u0022:\u0022Microsoft.Communication.RemoveParticipantSucceeded\u0022,\u0022data\u0022:{\u0022operationContext\u0022:\u0022MyTestOperationcontext\u0022,\u0022participant\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022callConnectionId\u0022:\u0022401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9Dek9ZZU1ETWhVLXo2SFhoaTBTZ3lnP2k9NCZlPTYzODE5Mjc2NzYxNTIzODI1Mg==\u0022,\u0022correlationId\u0022:\u0022cadda1f9-13c6-4bcd-95b1-3133a803a141\u0022},\u0022time\u0022:\u00222023-05-10T18:28:09.0556259\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022}]", - "messageId": "711f7444c5c24c17b1e8a36dfc2f354c", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022type\u0022:\u0022Microsoft.Communication.RemoveParticipantSucceeded\u0022,\u0022data\u0022:{\u0022operationContext\u0022:\u0022MyTestOperationcontext\u0022,\u0022participant\u0022:{\u0022rawId\u0022:\u0022Sanitized\u0022,\u0022communicationUser\u0022:{\u0022id\u0022:\u0022Sanitized\u0022}},\u0022callConnectionId\u0022:\u0022441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L2N5NzJtN3B2VDAtR0JqLTBIQWJaSGc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022correlationId\u0022:\u00227df71103-abac-4898-b050-807b84bd0f80\u0022},\u0022time\u0022:\u00222023-05-26T20:12:59.6008579\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022}]", + "messageId": "cd59d3169ed04caca4929c662b9689b7", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -56,13 +56,13 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-17f6308df4056ebe2d7646b346ff218d-28eaa5d04e73aeeb-00" + "Diagnostic-Id": "00-3dff6bac80fe43b9eac06386e31470da-d41b6d457598e7b9-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }, { - "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallDisconnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzd2UtMDIuY29udi5za3lwZS5jb20vY29udi9Dek9ZZU1ETWhVLXo2SFhoaTBTZ3lnP2k9NCZlPTYzODE5Mjc2NzYxNTIzODI1Mg==\u0022,\u0022correlationId\u0022:\u0022cadda1f9-13c6-4bcd-95b1-3133a803a141\u0022},\u0022time\u0022:\u00222023-05-10T18:28:09.118133\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/401f3500-3e66-41b7-a9bb-2d7a775ac83b\u0022}]", - "messageId": "a698736bb7d14a9dbd48009e1139d607", + "body": "[{\u0022id\u0022:\u0022Sanitized\u0022,\u0022source\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022type\u0022:\u0022Microsoft.Communication.CallDisconnected\u0022,\u0022data\u0022:{\u0022callConnectionId\u0022:\u0022441f1200-99ea-4773-9879-89c9f13fef83\u0022,\u0022serverCallId\u0022:\u0022aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC94LWNvbnYtZXVuby0wMS5jb252LnNreXBlLmNvbS9jb252L2N5NzJtN3B2VDAtR0JqLTBIQWJaSGc/aT0xJmU9NjM4MjA2NTUyNjc1OTIxMDI3\u0022,\u0022correlationId\u0022:\u00227df71103-abac-4898-b050-807b84bd0f80\u0022},\u0022time\u0022:\u00222023-05-26T20:12:59.7571024\\u002B00:00\u0022,\u0022specversion\u0022:\u00221.0\u0022,\u0022datacontenttype\u0022:\u0022application/json\u0022,\u0022subject\u0022:\u0022calling/callConnections/441f1200-99ea-4773-9879-89c9f13fef83\u0022}]", + "messageId": "52aa804ed18b4f60bafce92c806d84fc", "partitionKey": null, "sessionId": null, "replyToSessionId": null, @@ -71,7 +71,7 @@ "contentType": null, "replyTo": null, "applicationProperties": { - "Diagnostic-Id": "00-f5c0c02350070be2ac49f3fe18f7a851-2ae865b446d1b046-00" + "Diagnostic-Id": "00-ae06dda9f3b8f32ba993338814e242e2-9adf1c870ee35473-00" }, "enqueuedTime": "0001-01-01T00:00:00+00:00" }