From abd2df98eebb162594ba9d792becbb9dbe65edde Mon Sep 17 00:00:00 2001 From: Vinothini Dharmaraj Date: Wed, 3 Dec 2025 09:01:23 -0800 Subject: [PATCH 1/3] updating latest changes for postdial tones and the stream url --- ...ure.Communication.CallAutomation.net8.0.cs | 25 ++++++- ...unication.CallAutomation.netstandard2.0.cs | 25 ++++++- .../src/CallAutomationClient.cs | 13 ++-- .../src/CallConnection.cs | 1 + ...articipantRequestInternal.Serialization.cs | 5 ++ .../Models/AddParticipantRequestInternal.cs | 6 +- ...CreateCallRequestInternal.Serialization.cs | 5 ++ .../Models/CreateCallRequestInternal.cs | 6 +- ...aStreamingOptionsInternal.Serialization.cs | 7 +- .../Models/MediaStreamingOptionsInternal.cs | 11 +-- ...amingSubscriptionInternal.Serialization.cs | 8 ++- .../MediaStreamingSubscriptionInternal.cs | 6 +- ...ostDialDtmfTonesCompleted.Serialization.cs | 68 +++++++++++++++++++ .../Models/PostDialDtmfTonesCompleted.cs | 18 +++++ .../PostDialDtmfTonesFailed.Serialization.cs | 68 +++++++++++++++++++ .../Models/PostDialDtmfTonesFailed.cs | 18 +++++ .../src/Models/AddParticipantOptions.cs | 3 + .../src/Models/CallConnectionProperties.cs | 3 +- .../src/Models/CreateCallOptions.cs | 3 + .../src/Models/CreateGroupCallOptions.cs | 3 + .../Events/CallAutomationEventParser.cs | 5 ++ .../Events/PostDialDtmfTonesCompleted.cs | 46 +++++++++++++ .../Models/Events/PostDialDtmfTonesFailed.cs | 46 +++++++++++++ .../src/Models/MediaStreamingSubscription.cs | 6 +- .../src/autorest.md | 2 +- 25 files changed, 382 insertions(+), 25 deletions(-) create mode 100644 sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.Serialization.cs create mode 100644 sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.cs create mode 100644 sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.Serialization.cs create mode 100644 sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.cs create mode 100644 sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesCompleted.cs create mode 100644 sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesFailed.cs diff --git a/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.net8.0.cs b/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.net8.0.cs index 769744d39229..4685d584a968 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.net8.0.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.net8.0.cs @@ -21,6 +21,7 @@ public AddParticipantOptions(Azure.Communication.CallAutomation.CallInvite parti public System.Uri OperationCallbackUri { get { throw null; } set { } } public string OperationContext { get { throw null; } set { } } public Azure.Communication.CallAutomation.CallInvite ParticipantToAdd { get { throw null; } } + public string PostDialTones { get { throw null; } set { } } } public partial class AddParticipantResult { @@ -199,6 +200,8 @@ public static partial class CallAutomationModelFactory public static Azure.Communication.CallAutomation.AddParticipantSucceeded AddParticipantSucceeded(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CommunicationIdentifier participant = null) { throw null; } public static Azure.Communication.CallAutomation.AnswerCallResult AnswerCallResult(Azure.Communication.CallAutomation.CallConnection callConnection = null, Azure.Communication.CallAutomation.CallConnectionProperties callConnectionProperties = null) { throw null; } public static Azure.Communication.CallAutomation.AnswerFailed AnswerFailed(string callConnectionId = null, string serverCallId = null, string correlationId = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, string operationContext = null) { throw null; } + public static Azure.Communication.CallAutomation.AudioData AudioData(string data, System.DateTime timestamp, string participantId, bool silent) { throw null; } + public static Azure.Communication.CallAutomation.AudioMetadata AudioMetadata(string mediaSubscriptionId, string encoding, int sampleRate, int channels, int length) { throw null; } public static Azure.Communication.CallAutomation.CallConnected CallConnected(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } public static Azure.Communication.CallAutomation.CallConnectionProperties CallConnectionProperties(string callConnectionId = null, string serverCallId = null, System.Collections.Generic.IEnumerable targets = null, Azure.Communication.CallAutomation.CallConnectionState callConnectionState = default(Azure.Communication.CallAutomation.CallConnectionState), System.Uri callbackUri = null, Azure.Communication.CommunicationIdentifier sourceIdentity = null, Azure.Communication.PhoneNumberIdentifier sourceCallerIdNumber = null, string sourceDisplayName = null, Azure.Communication.CommunicationUserIdentifier answeredBy = null, string dataSubscriptionId = null, Azure.Communication.CallAutomation.MediaStreamingSubscription mediaStreamingSubscription = null, Azure.Communication.CallAutomation.DtmfConfigurationOptions dtmfConfigurationOptions = null) { throw null; } public static Azure.Communication.CallAutomation.CallDisconnected CallDisconnected(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } @@ -228,6 +231,7 @@ public static partial class CallAutomationModelFactory public static Azure.Communication.CallAutomation.MediaStreamingStopped MediaStreamingStopped(Azure.Communication.CallAutomation.MediaStreamingUpdate mediaStreamingUpdate = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } public static Azure.Communication.CallAutomation.MediaStreamingUpdate MediaStreamingUpdate(string contentType = null, Azure.Communication.CallAutomation.MediaStreamingStatus mediaStreamingStatus = default(Azure.Communication.CallAutomation.MediaStreamingStatus), Azure.Communication.CallAutomation.MediaStreamingStatusDetails mediaStreamingStatusDetails = default(Azure.Communication.CallAutomation.MediaStreamingStatusDetails)) { throw null; } public static Azure.Communication.CallAutomation.MuteParticipantResult MuteParticipantResult(string operationContext = null) { throw null; } + public static Azure.Communication.CallAutomation.OutStreamingData OutStreamingData(Azure.Communication.CallAutomation.MediaKind kind) { throw null; } public static Azure.Communication.CallAutomation.ParticipantsUpdated ParticipantsUpdated(string callConnectionId = null, string serverCallId = null, string correlationId = null, System.Collections.Generic.IEnumerable participants = null, int sequenceNumber = 0, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } public static Azure.Communication.CallAutomation.PlayCanceled PlayCanceled(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } public static Azure.Communication.CallAutomation.PlayCompleted PlayCompleted(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } @@ -250,6 +254,7 @@ public static partial class CallAutomationModelFactory public static Azure.Communication.CallAutomation.SipDiagnosticInfo SipDiagnosticInfo(int? code = default(int?), string message = null) { throw null; } public static Azure.Communication.CallAutomation.SpeechResult SpeechResult(string speech = null) { throw null; } public static Azure.Communication.CallAutomation.StartRecordingFailed StartRecordingFailed(string recordingId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } + public static Azure.Communication.CallAutomation.TranscriptionData TranscriptionData(string text, string format, double confidence, ulong offset, ulong duration, System.Collections.Generic.IEnumerable words, string participantRawID, string resultState) { throw null; } public static Azure.Communication.CallAutomation.TranscriptionFailed TranscriptionFailed(string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CallAutomation.TranscriptionUpdate transcriptionUpdateResult = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } public static Azure.Communication.CallAutomation.TranscriptionStarted TranscriptionStarted(string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CallAutomation.TranscriptionUpdate transcriptionUpdateResult = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } public static Azure.Communication.CallAutomation.TranscriptionStopped TranscriptionStopped(string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CallAutomation.TranscriptionUpdate transcriptionUpdateResult = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } @@ -700,6 +705,7 @@ public CreateCallOptions(Azure.Communication.CallAutomation.CallInvite callInvit public bool? EnableLoopbackAudio { get { throw null; } set { } } public Azure.Communication.CallAutomation.MediaStreamingOptions MediaStreamingOptions { get { throw null; } set { } } public string OperationContext { get { throw null; } set { } } + public string PostDialTones { get { throw null; } set { } } public Azure.Communication.MicrosoftTeamsAppIdentifier TeamsAppSource { get { throw null; } set { } } public Azure.Communication.CallAutomation.TranscriptionOptions TranscriptionOptions { get { throw null; } set { } } } @@ -720,6 +726,7 @@ public CreateGroupCallOptions(System.Collections.Generic.IEnumerable Targets { get { throw null; } } @@ -1140,9 +1147,10 @@ internal MediaStreamingStopped() { } } public partial class MediaStreamingSubscription { - public MediaStreamingSubscription(string id, Azure.Communication.CallAutomation.MediaStreamingSubscriptionState? state, System.Collections.Generic.IReadOnlyList subscribedContentTypes) { } + public MediaStreamingSubscription(string id, Azure.Communication.CallAutomation.MediaStreamingSubscriptionState? state, System.Collections.Generic.IReadOnlyList subscribedContentTypes, string streamUrl) { } public string Id { get { throw null; } } public Azure.Communication.CallAutomation.MediaStreamingSubscriptionState? State { get { throw null; } } + public string StreamUrl { get { throw null; } } public System.Collections.Generic.IReadOnlyList SubscribedContentTypes { get { throw null; } } } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] @@ -1947,3 +1955,18 @@ public WordData() { } public string Text { get { throw null; } set { } } } } +namespace Azure.Communication.CallAutomation.Models.Events +{ + public partial class PostDialDtmfTonesCompleted : Azure.Communication.CallAutomation.CallAutomationEventBase + { + public PostDialDtmfTonesCompleted(string callConnectionId, string serverCallId, string correlationId, string operationContext, Azure.Communication.CallAutomation.ResultInformation resultInformation) { } + public Azure.Communication.CallAutomation.MediaEventReasonCode ReasonCode { get { throw null; } } + public static Azure.Communication.CallAutomation.Models.Events.PostDialDtmfTonesCompleted Deserialize(string content) { throw null; } + } + public partial class PostDialDtmfTonesFailed : Azure.Communication.CallAutomation.CallAutomationEventBase + { + public PostDialDtmfTonesFailed(string callConnectionId, string serverCallId, string correlationId, string operationContext, Azure.Communication.CallAutomation.ResultInformation resultInformation) { } + public Azure.Communication.CallAutomation.MediaEventReasonCode ReasonCode { get { throw null; } } + public static Azure.Communication.CallAutomation.Models.Events.PostDialDtmfTonesFailed Deserialize(string content) { throw null; } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.netstandard2.0.cs b/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.netstandard2.0.cs index 960c187dc527..e34d17432cb7 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.netstandard2.0.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.netstandard2.0.cs @@ -21,6 +21,7 @@ public AddParticipantOptions(Azure.Communication.CallAutomation.CallInvite parti public System.Uri OperationCallbackUri { get { throw null; } set { } } public string OperationContext { get { throw null; } set { } } public Azure.Communication.CallAutomation.CallInvite ParticipantToAdd { get { throw null; } } + public string PostDialTones { get { throw null; } set { } } } public partial class AddParticipantResult { @@ -199,6 +200,8 @@ public static partial class CallAutomationModelFactory public static Azure.Communication.CallAutomation.AddParticipantSucceeded AddParticipantSucceeded(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CommunicationIdentifier participant = null) { throw null; } public static Azure.Communication.CallAutomation.AnswerCallResult AnswerCallResult(Azure.Communication.CallAutomation.CallConnection callConnection = null, Azure.Communication.CallAutomation.CallConnectionProperties callConnectionProperties = null) { throw null; } public static Azure.Communication.CallAutomation.AnswerFailed AnswerFailed(string callConnectionId = null, string serverCallId = null, string correlationId = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, string operationContext = null) { throw null; } + public static Azure.Communication.CallAutomation.AudioData AudioData(string data, System.DateTime timestamp, string participantId, bool silent) { throw null; } + public static Azure.Communication.CallAutomation.AudioMetadata AudioMetadata(string mediaSubscriptionId, string encoding, int sampleRate, int channels, int length) { throw null; } public static Azure.Communication.CallAutomation.CallConnected CallConnected(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } public static Azure.Communication.CallAutomation.CallConnectionProperties CallConnectionProperties(string callConnectionId = null, string serverCallId = null, System.Collections.Generic.IEnumerable targets = null, Azure.Communication.CallAutomation.CallConnectionState callConnectionState = default(Azure.Communication.CallAutomation.CallConnectionState), System.Uri callbackUri = null, Azure.Communication.CommunicationIdentifier sourceIdentity = null, Azure.Communication.PhoneNumberIdentifier sourceCallerIdNumber = null, string sourceDisplayName = null, Azure.Communication.CommunicationUserIdentifier answeredBy = null, string dataSubscriptionId = null, Azure.Communication.CallAutomation.MediaStreamingSubscription mediaStreamingSubscription = null, Azure.Communication.CallAutomation.DtmfConfigurationOptions dtmfConfigurationOptions = null) { throw null; } public static Azure.Communication.CallAutomation.CallDisconnected CallDisconnected(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } @@ -228,6 +231,7 @@ public static partial class CallAutomationModelFactory public static Azure.Communication.CallAutomation.MediaStreamingStopped MediaStreamingStopped(Azure.Communication.CallAutomation.MediaStreamingUpdate mediaStreamingUpdate = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } public static Azure.Communication.CallAutomation.MediaStreamingUpdate MediaStreamingUpdate(string contentType = null, Azure.Communication.CallAutomation.MediaStreamingStatus mediaStreamingStatus = default(Azure.Communication.CallAutomation.MediaStreamingStatus), Azure.Communication.CallAutomation.MediaStreamingStatusDetails mediaStreamingStatusDetails = default(Azure.Communication.CallAutomation.MediaStreamingStatusDetails)) { throw null; } public static Azure.Communication.CallAutomation.MuteParticipantResult MuteParticipantResult(string operationContext = null) { throw null; } + public static Azure.Communication.CallAutomation.OutStreamingData OutStreamingData(Azure.Communication.CallAutomation.MediaKind kind) { throw null; } public static Azure.Communication.CallAutomation.ParticipantsUpdated ParticipantsUpdated(string callConnectionId = null, string serverCallId = null, string correlationId = null, System.Collections.Generic.IEnumerable participants = null, int sequenceNumber = 0, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } public static Azure.Communication.CallAutomation.PlayCanceled PlayCanceled(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } public static Azure.Communication.CallAutomation.PlayCompleted PlayCompleted(string callConnectionId = null, string serverCallId = null, string correlationId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null) { throw null; } @@ -250,6 +254,7 @@ public static partial class CallAutomationModelFactory public static Azure.Communication.CallAutomation.SipDiagnosticInfo SipDiagnosticInfo(int? code = default(int?), string message = null) { throw null; } public static Azure.Communication.CallAutomation.SpeechResult SpeechResult(string speech = null) { throw null; } public static Azure.Communication.CallAutomation.StartRecordingFailed StartRecordingFailed(string recordingId = null, string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } + public static Azure.Communication.CallAutomation.TranscriptionData TranscriptionData(string text, string format, double confidence, ulong offset, ulong duration, System.Collections.Generic.IEnumerable words, string participantRawID, string resultState) { throw null; } public static Azure.Communication.CallAutomation.TranscriptionFailed TranscriptionFailed(string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CallAutomation.TranscriptionUpdate transcriptionUpdateResult = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } public static Azure.Communication.CallAutomation.TranscriptionStarted TranscriptionStarted(string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CallAutomation.TranscriptionUpdate transcriptionUpdateResult = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } public static Azure.Communication.CallAutomation.TranscriptionStopped TranscriptionStopped(string operationContext = null, Azure.Communication.CallAutomation.ResultInformation resultInformation = null, Azure.Communication.CallAutomation.TranscriptionUpdate transcriptionUpdateResult = null, string callConnectionId = null, string serverCallId = null, string correlationId = null) { throw null; } @@ -699,6 +704,7 @@ public CreateCallOptions(Azure.Communication.CallAutomation.CallInvite callInvit public bool? EnableLoopbackAudio { get { throw null; } set { } } public Azure.Communication.CallAutomation.MediaStreamingOptions MediaStreamingOptions { get { throw null; } set { } } public string OperationContext { get { throw null; } set { } } + public string PostDialTones { get { throw null; } set { } } public Azure.Communication.MicrosoftTeamsAppIdentifier TeamsAppSource { get { throw null; } set { } } public Azure.Communication.CallAutomation.TranscriptionOptions TranscriptionOptions { get { throw null; } set { } } } @@ -719,6 +725,7 @@ public CreateGroupCallOptions(System.Collections.Generic.IEnumerable Targets { get { throw null; } } @@ -1139,9 +1146,10 @@ internal MediaStreamingStopped() { } } public partial class MediaStreamingSubscription { - public MediaStreamingSubscription(string id, Azure.Communication.CallAutomation.MediaStreamingSubscriptionState? state, System.Collections.Generic.IReadOnlyList subscribedContentTypes) { } + public MediaStreamingSubscription(string id, Azure.Communication.CallAutomation.MediaStreamingSubscriptionState? state, System.Collections.Generic.IReadOnlyList subscribedContentTypes, string streamUrl) { } public string Id { get { throw null; } } public Azure.Communication.CallAutomation.MediaStreamingSubscriptionState? State { get { throw null; } } + public string StreamUrl { get { throw null; } } public System.Collections.Generic.IReadOnlyList SubscribedContentTypes { get { throw null; } } } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] @@ -1946,3 +1954,18 @@ public WordData() { } public string Text { get { throw null; } set { } } } } +namespace Azure.Communication.CallAutomation.Models.Events +{ + public partial class PostDialDtmfTonesCompleted : Azure.Communication.CallAutomation.CallAutomationEventBase + { + public PostDialDtmfTonesCompleted(string callConnectionId, string serverCallId, string correlationId, string operationContext, Azure.Communication.CallAutomation.ResultInformation resultInformation) { } + public Azure.Communication.CallAutomation.MediaEventReasonCode ReasonCode { get { throw null; } } + public static Azure.Communication.CallAutomation.Models.Events.PostDialDtmfTonesCompleted Deserialize(string content) { throw null; } + } + public partial class PostDialDtmfTonesFailed : Azure.Communication.CallAutomation.CallAutomationEventBase + { + public PostDialDtmfTonesFailed(string callConnectionId, string serverCallId, string correlationId, string operationContext, Azure.Communication.CallAutomation.ResultInformation resultInformation) { } + public Azure.Communication.CallAutomation.MediaEventReasonCode ReasonCode { get { throw null; } } + public static Azure.Communication.CallAutomation.Models.Events.PostDialDtmfTonesFailed Deserialize(string content) { throw null; } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs index 2c36fc304083..c568b6d11548 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs @@ -737,6 +737,7 @@ private CreateCallRequestInternal CreateCallRequest(CreateCallOptions options) } request.OperationContext = options.OperationContext; + request.PostDialTones = options.PostDialTones; request.EnableLoopbackAudio = options.EnableLoopbackAudio; request.TranscriptionConfiguration = CreateTranscriptionOptionsInternal(options.TranscriptionOptions); request.MediaStreamingConfiguration = CreateMediaStreamingOptionsInternal(options.MediaStreamingOptions); @@ -773,6 +774,7 @@ private CreateCallRequestInternal CreateCallRequest(CreateGroupCallOptions optio } request.OperationContext = options.OperationContext; + request.PostDialTones = options.PostDialTones; request.EnableLoopbackAudio = options.EnableLoopbackAudio; request.TranscriptionConfiguration = CreateTranscriptionOptionsInternal(options.TranscriptionOptions); request.MediaStreamingConfiguration = CreateMediaStreamingOptionsInternal(options.MediaStreamingOptions); @@ -829,13 +831,14 @@ private static MediaStreamingOptionsInternal CreateMediaStreamingOptionsInternal { return configuration == default ? default - : new MediaStreamingOptionsInternal(configuration.TransportUri.AbsoluteUri, configuration.MediaStreamingTransport, + : new MediaStreamingOptionsInternal(configuration.MediaStreamingTransport, configuration.MediaStreamingContent, configuration.MediaStreamingAudioChannel) { - StartMediaStreaming = configuration.StartMediaStreaming, - EnableBidirectional = configuration.EnableBidirectional, - AudioFormat = configuration.AudioFormat, - EnableDtmfTones = configuration.EnableDtmfTones + StartMediaStreaming = configuration.StartMediaStreaming, + EnableBidirectional = configuration.EnableBidirectional, + AudioFormat = configuration.AudioFormat, + TransportUrl = configuration.TransportUri.AbsoluteUri, + EnableDtmfTones = configuration.EnableDtmfTones }; } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs index 86a76fc7584c..df4fd4756fa1 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallConnection.cs @@ -390,6 +390,7 @@ private static AddParticipantRequestInternal CreateAddParticipantRequest(AddPart : new PhoneNumberIdentifierModel(options.ParticipantToAdd.SourceCallerIdNumber.PhoneNumber), SourceDisplayName = options.ParticipantToAdd.SourceDisplayName, OperationContext = options.OperationContext == default ? Guid.NewGuid().ToString() : options.OperationContext, + PostDialTones = options.PostDialTones, InvitationTimeoutInSeconds = options.InvitationTimeoutInSeconds, OperationCallbackUri = options.OperationCallbackUri?.AbsoluteUri }; 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 a7fda1b5a72a..881860253ebb 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 @@ -47,6 +47,11 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WritePropertyName("customCallingContext"u8); writer.WriteObjectValue(CustomCallingContext); } + if (Optional.IsDefined(PostDialTones)) + { + writer.WritePropertyName("postDialTones"u8); + writer.WriteStringValue(PostDialTones); + } 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 5e8533df419b..1f77f9c0cf63 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/AddParticipantRequestInternal.cs @@ -42,7 +42,8 @@ public AddParticipantRequestInternal(CommunicationIdentifierModel participantToA /// This setup is per-action. If this is not set, the default callback URI set by CreateCall/AnswerCall will be used. /// /// Used by customer to send custom calling context to targets. - internal AddParticipantRequestInternal(PhoneNumberIdentifierModel sourceCallerIdNumber, string sourceDisplayName, CommunicationIdentifierModel participantToAdd, int? invitationTimeoutInSeconds, string operationContext, string operationCallbackUri, CustomCallingContextInternal customCallingContext) + /// DTMF tones to send as part of the call for a participant. + internal AddParticipantRequestInternal(PhoneNumberIdentifierModel sourceCallerIdNumber, string sourceDisplayName, CommunicationIdentifierModel participantToAdd, int? invitationTimeoutInSeconds, string operationContext, string operationCallbackUri, CustomCallingContextInternal customCallingContext, string postDialTones) { SourceCallerIdNumber = sourceCallerIdNumber; SourceDisplayName = sourceDisplayName; @@ -51,6 +52,7 @@ internal AddParticipantRequestInternal(PhoneNumberIdentifierModel sourceCallerId OperationContext = operationContext; OperationCallbackUri = operationCallbackUri; CustomCallingContext = customCallingContext; + PostDialTones = postDialTones; } /// @@ -79,5 +81,7 @@ internal AddParticipantRequestInternal(PhoneNumberIdentifierModel sourceCallerId public string OperationCallbackUri { get; set; } /// Used by customer to send custom calling context to targets. public CustomCallingContextInternal CustomCallingContext { get; set; } + /// DTMF tones to send as part of the call for a participant. + public string PostDialTones { get; set; } } } 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 02153591e9f8..e4aabd896ef9 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 @@ -74,6 +74,11 @@ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) writer.WritePropertyName("dtmfOptions"u8); writer.WriteObjectValue(DtmfOptions); } + if (Optional.IsDefined(PostDialTones)) + { + writer.WritePropertyName("postDialTones"u8); + writer.WriteStringValue(PostDialTones); + } 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 932b6819df55..df4b413b6af3 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/CreateCallRequestInternal.cs @@ -43,7 +43,8 @@ public CreateCallRequestInternal(IEnumerable targe /// The identifier of the source for creating call with Teams resource account ID. /// Enables loopback audio functionality for the call. /// DTMF (Dual-Tone Multi-Frequency) configuration for the call. - internal CreateCallRequestInternal(IList targets, PhoneNumberIdentifierModel sourceCallerIdNumber, string sourceDisplayName, CommunicationUserIdentifierModel source, string operationContext, string callbackUri, CallIntelligenceOptionsInternal callIntelligenceOptions, TranscriptionOptionsInternal transcriptionConfiguration, MediaStreamingOptionsInternal mediaStreamingConfiguration, MicrosoftTeamsAppIdentifierModel teamsAppSource, bool? enableLoopbackAudio, DtmfConfigurationOptionsInternal dtmfOptions) + /// DTMF tones to send as part of the call for a participant. + internal CreateCallRequestInternal(IList targets, PhoneNumberIdentifierModel sourceCallerIdNumber, string sourceDisplayName, CommunicationUserIdentifierModel source, string operationContext, string callbackUri, CallIntelligenceOptionsInternal callIntelligenceOptions, TranscriptionOptionsInternal transcriptionConfiguration, MediaStreamingOptionsInternal mediaStreamingConfiguration, MicrosoftTeamsAppIdentifierModel teamsAppSource, bool? enableLoopbackAudio, DtmfConfigurationOptionsInternal dtmfOptions, string postDialTones) { Targets = targets; SourceCallerIdNumber = sourceCallerIdNumber; @@ -57,6 +58,7 @@ internal CreateCallRequestInternal(IList targets, TeamsAppSource = teamsAppSource; EnableLoopbackAudio = enableLoopbackAudio; DtmfOptions = dtmfOptions; + PostDialTones = postDialTones; } /// The targets of the call. @@ -86,5 +88,7 @@ internal CreateCallRequestInternal(IList targets, public bool? EnableLoopbackAudio { get; set; } /// DTMF (Dual-Tone Multi-Frequency) configuration for the call. public DtmfConfigurationOptionsInternal DtmfOptions { get; set; } + /// DTMF tones to send as part of the call for a participant. + public string PostDialTones { get; set; } } } 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 index c7b51c7c69e2..9d7697c33109 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.Serialization.cs @@ -15,8 +15,11 @@ internal partial class MediaStreamingOptionsInternal : IUtf8JsonSerializable void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) { writer.WriteStartObject(); - writer.WritePropertyName("transportUrl"u8); - writer.WriteStringValue(TransportUrl); + if (Optional.IsDefined(TransportUrl)) + { + writer.WritePropertyName("transportUrl"u8); + writer.WriteStringValue(TransportUrl); + } writer.WritePropertyName("transportType"u8); writer.WriteStringValue(TransportType.ToString()); writer.WritePropertyName("contentType"u8); diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.cs index af47806a1b85..53147d2fd3ab 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingOptionsInternal.cs @@ -5,24 +5,17 @@ #nullable disable -using System; - namespace Azure.Communication.CallAutomation { /// Configuration of Media streaming. internal partial class MediaStreamingOptionsInternal { /// Initializes a new instance of . - /// Transport URL for media streaming. /// The type of transport to be used for media streaming, eg. Websocket. /// Content type to stream, eg. audio. /// Audio channel type to stream, eg. unmixed audio, mixed audio. - /// is null. - public MediaStreamingOptionsInternal(string transportUrl, MediaStreamingTransport transportType, MediaStreamingContent contentType, MediaStreamingAudioChannel audioChannelType) + public MediaStreamingOptionsInternal(MediaStreamingTransport transportType, MediaStreamingContent contentType, MediaStreamingAudioChannel audioChannelType) { - Argument.AssertNotNull(transportUrl, nameof(transportUrl)); - - TransportUrl = transportUrl; TransportType = transportType; ContentType = contentType; AudioChannelType = audioChannelType; @@ -50,7 +43,7 @@ internal MediaStreamingOptionsInternal(string transportUrl, MediaStreamingTransp } /// Transport URL for media streaming. - public string TransportUrl { get; } + public string TransportUrl { get; set; } /// The type of transport to be used for media streaming, eg. Websocket. public MediaStreamingTransport TransportType { get; } /// Content type to stream, eg. audio. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.Serialization.cs index 86abc4ce2258..a8833f70b340 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.Serialization.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.Serialization.cs @@ -21,6 +21,7 @@ internal static MediaStreamingSubscriptionInternal DeserializeMediaStreamingSubs string id = default; MediaStreamingSubscriptionState? state = default; IReadOnlyList subscribedContentTypes = default; + string streamUrl = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("id"u8)) @@ -51,8 +52,13 @@ internal static MediaStreamingSubscriptionInternal DeserializeMediaStreamingSubs subscribedContentTypes = array; continue; } + if (property.NameEquals("streamUrl"u8)) + { + streamUrl = property.Value.GetString(); + continue; + } } - return new MediaStreamingSubscriptionInternal(id, state, subscribedContentTypes ?? new ChangeTrackingList()); + return new MediaStreamingSubscriptionInternal(id, state, subscribedContentTypes ?? new ChangeTrackingList(), streamUrl); } /// Deserializes the model from a raw response. diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.cs index 4f11845a0918..63e3d2141bf8 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/MediaStreamingSubscriptionInternal.cs @@ -22,11 +22,13 @@ internal MediaStreamingSubscriptionInternal() /// Subscription Id. /// Media streaming subscription state. /// Subscribed media streaming content types. - internal MediaStreamingSubscriptionInternal(string id, MediaStreamingSubscriptionState? state, IReadOnlyList subscribedContentTypes) + /// Media streaming subscription stream URL. + internal MediaStreamingSubscriptionInternal(string id, MediaStreamingSubscriptionState? state, IReadOnlyList subscribedContentTypes, string streamUrl) { Id = id; State = state; SubscribedContentTypes = subscribedContentTypes; + StreamUrl = streamUrl; } /// Subscription Id. @@ -35,5 +37,7 @@ internal MediaStreamingSubscriptionInternal(string id, MediaStreamingSubscriptio public MediaStreamingSubscriptionState? State { get; } /// Subscribed media streaming content types. public IReadOnlyList SubscribedContentTypes { get; } + /// Media streaming subscription stream URL. + public string StreamUrl { get; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.Serialization.cs new file mode 100644 index 000000000000..9c5de03b4759 --- /dev/null +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.Serialization.cs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; + +namespace Azure.Communication.CallAutomation.Models.Events +{ + public partial class PostDialDtmfTonesCompleted + { + internal static PostDialDtmfTonesCompleted DeserializePostDialDtmfTonesCompleted(JsonElement element) + { + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string callConnectionId = default; + string serverCallId = default; + string correlationId = default; + string operationContext = default; + ResultInformation 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 PostDialDtmfTonesCompleted(callConnectionId, serverCallId, correlationId, operationContext, resultInformation); + } + + /// Deserializes the model from a raw response. + /// The response to deserialize the model from. + internal static PostDialDtmfTonesCompleted FromResponse(Response response) + { + using var document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializePostDialDtmfTonesCompleted(document.RootElement); + } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.cs new file mode 100644 index 000000000000..8e025c7aa557 --- /dev/null +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesCompleted.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +namespace Azure.Communication.CallAutomation.Models.Events +{ + /// The PostDialDtmfTonesCompleted. + public partial class PostDialDtmfTonesCompleted + { + /// Initializes a new instance of . + internal PostDialDtmfTonesCompleted() + { + } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.Serialization.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.Serialization.cs new file mode 100644 index 000000000000..ab0dac205301 --- /dev/null +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.Serialization.cs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.Text.Json; + +namespace Azure.Communication.CallAutomation.Models.Events +{ + public partial class PostDialDtmfTonesFailed + { + internal static PostDialDtmfTonesFailed DeserializePostDialDtmfTonesFailed(JsonElement element) + { + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string callConnectionId = default; + string serverCallId = default; + string correlationId = default; + string operationContext = default; + ResultInformation 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 PostDialDtmfTonesFailed(callConnectionId, serverCallId, correlationId, operationContext, resultInformation); + } + + /// Deserializes the model from a raw response. + /// The response to deserialize the model from. + internal static PostDialDtmfTonesFailed FromResponse(Response response) + { + using var document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializePostDialDtmfTonesFailed(document.RootElement); + } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.cs new file mode 100644 index 000000000000..8ec66818bb6e --- /dev/null +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PostDialDtmfTonesFailed.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +namespace Azure.Communication.CallAutomation.Models.Events +{ + /// The PostDialDtmfTonesFailed. + public partial class PostDialDtmfTonesFailed + { + /// Initializes a new instance of . + internal PostDialDtmfTonesFailed() + { + } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/AddParticipantOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/AddParticipantOptions.cs index 0b360ccfe9fa..a92661dfe9f8 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/AddParticipantOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/AddParticipantOptions.cs @@ -42,5 +42,8 @@ public AddParticipantOptions(CallInvite participantToAdd) /// This setup is per-action. If this is not set, the default callback URI set by CreateCall/AnswerCall will be used. /// public Uri OperationCallbackUri { get; set; } + + /// DTMF tones to send as part of the call for a participant. + public string PostDialTones { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs index c855f2b39f43..786a32376ed1 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CallConnectionProperties.cs @@ -69,7 +69,8 @@ internal CallConnectionProperties(CallConnectionPropertiesInternal callConnectio new MediaStreamingSubscription( callConnectionPropertiesDtoInternal.MediaStreamingSubscription.Id, callConnectionPropertiesDtoInternal.MediaStreamingSubscription.State, - callConnectionPropertiesDtoInternal.MediaStreamingSubscription.SubscribedContentTypes) + callConnectionPropertiesDtoInternal.MediaStreamingSubscription.SubscribedContentTypes, + callConnectionPropertiesDtoInternal.MediaStreamingSubscription.StreamUrl) : null; DtmfConfigurationOptions = callConnectionPropertiesDtoInternal.DtmfConfigurationOptions == null ? null diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs index 816f1fa896dc..c6ec2f0a621a 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateCallOptions.cs @@ -62,5 +62,8 @@ public CreateCallOptions(CallInvite callInvite, Uri callbackUri) /// DTMF (Dual-Tone Multi-Frequency) configuration for the call. public DtmfConfigurationOptions DtmfOptions { get; set; } + + /// DTMF tones to send as part of the call for a participant. + public string PostDialTones { get; set; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs index 7ede5e1c695c..d6b50afed189 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/CreateGroupCallOptions.cs @@ -73,5 +73,8 @@ public CreateGroupCallOptions(IEnumerable targets, Uri /// DTMF (Dual-Tone Multi-Frequency) configuration for the call. public DtmfConfigurationOptions DtmfOptions { get; set; } + + /// DTMF tones to send as part of the call for a participant. + public string PostDialTones { get; set; } } } 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 5e258b80a4d8..cd7179ffba94 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CallAutomationEventParser.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CallAutomationEventParser.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using Azure.Communication.CallAutomation.Models.Events; using Azure.Messaging; namespace Azure.Communication.CallAutomation @@ -180,6 +181,10 @@ private static CallAutomationEventBase Deserialize(string eventData, string type return MoveParticipantFailed.Deserialize(eventData); case nameof(MoveParticipantSucceeded): return MoveParticipantSucceeded.Deserialize(eventData); + case nameof(PostDialDtmfTonesCompleted): + return PostDialDtmfTonesCompleted.Deserialize(eventData); + case nameof(PostDialDtmfTonesFailed): + return PostDialDtmfTonesFailed.Deserialize(eventData); #region Dialog case nameof(DialogCompleted): return DialogCompleted.Deserialize(eventData); diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesCompleted.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesCompleted.cs new file mode 100644 index 000000000000..0182674f481f --- /dev/null +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesCompleted.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Communication.CallAutomation.Models.Events +{ + /// The PostDialDtmfTonesCompleted. + [CodeGenModel("PostDialDtmfTonesCompleted", Usage = new string[] { "output" }, Formats = new string[] { "json" })] + public partial class PostDialDtmfTonesCompleted : CallAutomationEventBase + { + /// + /// Reason code. + /// + public MediaEventReasonCode ReasonCode { get; internal set; } + + /// Initializes a new instance of . + /// 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. + /// + public PostDialDtmfTonesCompleted(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation) + { + CallConnectionId = callConnectionId; + ServerCallId = serverCallId; + CorrelationId = correlationId; + OperationContext = operationContext; + ResultInformation = resultInformation; + } + + /// + /// Deserialize event. + /// + /// The json content. + /// The new object. + public static PostDialDtmfTonesCompleted Deserialize(string content) + { + using var document = JsonDocument.Parse(content); + JsonElement element = document.RootElement; + + return DeserializePostDialDtmfTonesCompleted(element); + } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesFailed.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesFailed.cs new file mode 100644 index 000000000000..79fb6147b83a --- /dev/null +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/PostDialDtmfTonesFailed.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Text.Json; +using Azure.Core; + +namespace Azure.Communication.CallAutomation.Models.Events +{ + /// The PostDialDtmfTonesFailed. + [CodeGenModel("PostDialDtmfTonesFailed", Usage = new string[] { "output" }, Formats = new string[] { "json" })] + public partial class PostDialDtmfTonesFailed : CallAutomationEventBase + { + /// + /// Reason code. + /// + public MediaEventReasonCode ReasonCode { get; internal set; } + + /// Initializes a new instance of . + /// 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. + /// + public PostDialDtmfTonesFailed(string callConnectionId, string serverCallId, string correlationId, string operationContext, ResultInformation resultInformation) + { + CallConnectionId = callConnectionId; + ServerCallId = serverCallId; + CorrelationId = correlationId; + OperationContext = operationContext; + ResultInformation = resultInformation; + } + + /// + /// Deserialize event. + /// + /// The json content. + /// The new object. + public static PostDialDtmfTonesFailed Deserialize(string content) + { + using var document = JsonDocument.Parse(content); + JsonElement element = document.RootElement; + + return DeserializePostDialDtmfTonesFailed(element); + } + } +} diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingSubscription.cs b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingSubscription.cs index f63bcce32a56..dea631239dfb 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingSubscription.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/Models/MediaStreamingSubscription.cs @@ -12,11 +12,13 @@ public class MediaStreamingSubscription /// Gets or Sets subscription Id. /// Gets or Sets media streaming subscription state. /// Gets or Sets the subscribed media streaming content types. - public MediaStreamingSubscription(string id, MediaStreamingSubscriptionState? state, IReadOnlyList subscribedContentTypes) + /// Media streaming subscription stream URL. + public MediaStreamingSubscription(string id, MediaStreamingSubscriptionState? state, IReadOnlyList subscribedContentTypes, string streamUrl) { Id = id; State = state; SubscribedContentTypes = subscribedContentTypes; + StreamUrl = streamUrl; } /// Gets or Sets subscription Id. @@ -25,5 +27,7 @@ public MediaStreamingSubscription(string id, MediaStreamingSubscriptionState? st public MediaStreamingSubscriptionState? State { get; } /// Gets or Sets the subscribed media streaming content types. public IReadOnlyList SubscribedContentTypes { get; } + /// Media streaming subscription stream URL. + public string StreamUrl { get; } } } diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md b/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md index 05def19837a6..2173c5a4aad1 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md +++ b/sdk/communication/Azure.Communication.CallAutomation/src/autorest.md @@ -10,7 +10,7 @@ model-namespace: false tag: package-2024-01-22-preview require: - - https://github.com/Azure/azure-rest-api-specs/blob/23a976b958c1c21cc654348796d46587967b81df/specification/communication/data-plane/CallAutomation/readme.md + - https://github.com/Azure/azure-rest-api-specs/blob/ed9c65a0f0f1cc20e35409594418f2af44e05389/specification/communication/data-plane/CallAutomation/readme.md title: Azure Communication Services From b273eabb98c77b2272ca819cede8b483d03ff9df Mon Sep 17 00:00:00 2001 From: Vinothini Dharmaraj Date: Wed, 3 Dec 2025 09:43:42 -0800 Subject: [PATCH 2/3] updating null check --- .../src/CallAutomationClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs index c568b6d11548..496197d7f4d2 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/src/CallAutomationClient.cs @@ -837,7 +837,7 @@ private static MediaStreamingOptionsInternal CreateMediaStreamingOptionsInternal StartMediaStreaming = configuration.StartMediaStreaming, EnableBidirectional = configuration.EnableBidirectional, AudioFormat = configuration.AudioFormat, - TransportUrl = configuration.TransportUri.AbsoluteUri, + TransportUrl = configuration.TransportUri?.AbsoluteUri, EnableDtmfTones = configuration.EnableDtmfTones }; } From 0d2e9c64286ed4b2bac2c4ebb66de07651947f2a Mon Sep 17 00:00:00 2001 From: Vinothini Dharmaraj Date: Wed, 3 Dec 2025 13:30:15 -0800 Subject: [PATCH 3/3] fixing the test --- .../tests/Models/CallAutomationModelFactoryTests.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/communication/Azure.Communication.CallAutomation/tests/Models/CallAutomationModelFactoryTests.cs b/sdk/communication/Azure.Communication.CallAutomation/tests/Models/CallAutomationModelFactoryTests.cs index 0a8e448cf54d..eca7bebffed8 100644 --- a/sdk/communication/Azure.Communication.CallAutomation/tests/Models/CallAutomationModelFactoryTests.cs +++ b/sdk/communication/Azure.Communication.CallAutomation/tests/Models/CallAutomationModelFactoryTests.cs @@ -56,23 +56,23 @@ public void CallAutomationModelFactoryCanInstantiateAudioMetadata() public void CallAutomationModelFactoryCanInstantiateTranscriptionData() { var text = "Hello World"; - var format = "display"; + var format = "Display"; var confidence = 0.95; ulong offset = 1000; ulong duration = 2000; var words = new List { new WordData { Text = "Hello", Offset = 1000, Duration = 500 } }; var participantRawID = "participant123"; - var resultState = "final"; + var resultState = "Final"; var transcriptionData = CallAutomationModelFactory.TranscriptionData(text, format, confidence, offset, duration, words, participantRawID, resultState); Assert.AreEqual(text, transcriptionData.Text); - Assert.AreEqual(format, transcriptionData.Format); + Assert.AreEqual(format, transcriptionData.Format.ToString()); Assert.AreEqual(confidence, transcriptionData.Confidence); Assert.AreEqual(offset, transcriptionData.Offset); Assert.AreEqual(duration, transcriptionData.Duration); Assert.AreEqual(CommunicationIdentifier.FromRawId(participantRawID), transcriptionData.Participant); - Assert.AreEqual(resultState, transcriptionData.ResultStatus); + Assert.AreEqual(resultState, transcriptionData.ResultStatus.ToString()); Assert.IsNotNull(transcriptionData.Words); Assert.AreEqual(1, transcriptionData.Words.Count()); }