Skip to content

Commit fd2be9b

Browse files
Juntuchen/callback uri media (Azure#38227)
* name update * fixed a bug * added media api support * updated Media API with callbackUri * updated .net SDK for media * fixed typo
1 parent f9ae761 commit fd2be9b

14 files changed

+76
-12
lines changed

sdk/communication/Azure.Communication.CallAutomation/api/Azure.Communication.CallAutomation.netstandard2.0.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,14 +258,14 @@ protected CallMedia() { }
258258
public virtual Azure.Response<Azure.Communication.CallAutomation.PlayResult> PlayToAll(Azure.Communication.CallAutomation.PlayToAllOptions options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
259259
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.CallAutomation.PlayResult>> PlayToAllAsync(Azure.Communication.CallAutomation.PlaySource playSource, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
260260
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.CallAutomation.PlayResult>> PlayToAllAsync(Azure.Communication.CallAutomation.PlayToAllOptions options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
261-
public virtual Azure.Response<Azure.Communication.CallAutomation.SendDtmfResult> SendDtmf(System.Collections.Generic.IEnumerable<Azure.Communication.CallAutomation.DtmfTone> tones, Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
262-
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.CallAutomation.SendDtmfResult>> SendDtmfAsync(System.Collections.Generic.IEnumerable<Azure.Communication.CallAutomation.DtmfTone> tones, Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
261+
public virtual Azure.Response<Azure.Communication.CallAutomation.SendDtmfResult> SendDtmf(System.Collections.Generic.IEnumerable<Azure.Communication.CallAutomation.DtmfTone> tones, Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Uri callbackUri = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
262+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.CallAutomation.SendDtmfResult>> SendDtmfAsync(System.Collections.Generic.IEnumerable<Azure.Communication.CallAutomation.DtmfTone> tones, Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Uri callbackUri = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
263263
public virtual Azure.Response StartContinuousDtmfRecognition(Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
264264
public virtual System.Threading.Tasks.Task<Azure.Response> StartContinuousDtmfRecognitionAsync(Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
265265
public virtual Azure.Response<Azure.Communication.CallAutomation.StartRecognizingCallMediaResult> StartRecognizing(Azure.Communication.CallAutomation.CallMediaRecognizeOptions options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
266266
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.CallAutomation.StartRecognizingCallMediaResult>> StartRecognizingAsync(Azure.Communication.CallAutomation.CallMediaRecognizeOptions options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
267-
public virtual Azure.Response StopContinuousDtmfRecognition(Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
268-
public virtual System.Threading.Tasks.Task<Azure.Response> StopContinuousDtmfRecognitionAsync(Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
267+
public virtual Azure.Response StopContinuousDtmfRecognition(Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Uri callbackUri = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
268+
public virtual System.Threading.Tasks.Task<Azure.Response> StopContinuousDtmfRecognitionAsync(Azure.Communication.CommunicationIdentifier targetParticipant, string operationContext = null, System.Uri callbackUri = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
269269
}
270270
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
271271
public readonly partial struct CallMediaRecognitionType : System.IEquatable<Azure.Communication.CallAutomation.CallMediaRecognitionType>
@@ -301,6 +301,7 @@ public partial class CallMediaRecognizeDtmfOptions : Azure.Communication.CallAut
301301
public abstract partial class CallMediaRecognizeOptions
302302
{
303303
protected CallMediaRecognizeOptions(Azure.Communication.CallAutomation.RecognizeInputType inputType, Azure.Communication.CommunicationIdentifier targetParticipant) { }
304+
public System.Uri CallbackUri { get { throw null; } set { } }
304305
public System.TimeSpan InitialSilenceTimeout { get { throw null; } set { } }
305306
public Azure.Communication.CallAutomation.RecognizeInputType InputType { get { throw null; } }
306307
public bool InterruptCallMediaOperation { get { throw null; } set { } }
@@ -891,6 +892,7 @@ internal PlayFailed() { }
891892
public partial class PlayOptions
892893
{
893894
public PlayOptions(Azure.Communication.CallAutomation.PlaySource playSource, System.Collections.Generic.IEnumerable<Azure.Communication.CommunicationIdentifier> playTo) { }
895+
public System.Uri CallbackUri { get { throw null; } set { } }
894896
public bool Loop { get { throw null; } set { } }
895897
public string OperationContext { get { throw null; } set { } }
896898
public Azure.Communication.CallAutomation.PlaySource PlaySource { get { throw null; } }
@@ -910,6 +912,7 @@ protected PlaySource() { }
910912
public partial class PlayToAllOptions
911913
{
912914
public PlayToAllOptions(Azure.Communication.CallAutomation.PlaySource playSource) { }
915+
public System.Uri CallbackUri { get { throw null; } set { } }
913916
public bool Loop { get { throw null; } set { } }
914917
public string OperationContext { get { throw null; } set { } }
915918
public Azure.Communication.CallAutomation.PlaySource PlaySource { get { throw null; } }

sdk/communication/Azure.Communication.CallAutomation/src/CallMedia.cs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Linq;
77
using System.Threading;
88
using System.Threading.Tasks;
9+
using Azure.Core;
910
using Azure.Core.Pipeline;
1011

1112
namespace Azure.Communication.CallAutomation
@@ -186,6 +187,8 @@ private static PlayRequestInternal CreatePlayRequest(PlayOptions options)
186187
request.OperationContext = Guid.NewGuid().ToString();
187188
}
188189

190+
request.CallbackUri = options.CallbackUri?.AbsoluteUri;
191+
189192
return request;
190193
}
191194

@@ -207,6 +210,7 @@ public virtual async Task<Response<PlayResult>> PlayToAllAsync(PlayToAllOptions
207210
PlayOptions playOptions = new PlayOptions(options.PlaySource, Enumerable.Empty<CommunicationIdentifier>());
208211
playOptions.OperationContext = options.OperationContext;
209212
playOptions.Loop = options.Loop;
213+
playOptions.CallbackUri = options.CallbackUri;
210214
return await PlayAsync(playOptions, cancellationToken).ConfigureAwait(false);
211215
}
212216
catch (Exception ex)
@@ -252,6 +256,7 @@ public virtual Response<PlayResult> PlayToAll(PlayToAllOptions options, Cancella
252256
PlayOptions playOptions = new PlayOptions(options.PlaySource, Enumerable.Empty<CommunicationIdentifier>());
253257
playOptions.OperationContext = options.OperationContext;
254258
playOptions.Loop = options.Loop;
259+
playOptions.CallbackUri = options.CallbackUri;
255260
return Play(playOptions, cancellationToken);
256261
}
257262
catch (Exception ex)
@@ -414,6 +419,7 @@ private static RecognizeRequestInternal CreateRecognizeRequest(CallMediaRecogniz
414419
request.PlayPrompt = TranslatePlaySourceToInternal(recognizeDtmfOptions.Prompt);
415420
request.InterruptCallMediaOperation = recognizeOptions.InterruptCallMediaOperation;
416421
request.OperationContext = recognizeOptions.OperationContext == default ? Guid.NewGuid().ToString() : recognizeOptions.OperationContext;
422+
request.CallbackUri = recognizeOptions.CallbackUri?.AbsoluteUri;
417423

418424
return request;
419425
}
@@ -443,6 +449,7 @@ private static RecognizeRequestInternal CreateRecognizeRequest(CallMediaRecogniz
443449
request.PlayPrompt = TranslatePlaySourceToInternal(recognizeChoiceOptions.Prompt);
444450
request.InterruptCallMediaOperation = recognizeOptions.InterruptCallMediaOperation;
445451
request.OperationContext = recognizeOptions.OperationContext == default ? Guid.NewGuid().ToString() : recognizeOptions.OperationContext;
452+
request.CallbackUri = recognizeOptions.CallbackUri?.AbsoluteUri;
446453

447454
return request;
448455
}
@@ -475,6 +482,7 @@ private static RecognizeRequestInternal CreateRecognizeRequest(CallMediaRecogniz
475482
request.PlayPrompt = TranslatePlaySourceToInternal(recognizeSpeechOptions.Prompt);
476483
request.InterruptCallMediaOperation = recognizeOptions.InterruptCallMediaOperation;
477484
request.OperationContext = recognizeOptions.OperationContext == default ? Guid.NewGuid().ToString() : recognizeOptions.OperationContext;
485+
request.CallbackUri = recognizeOptions.CallbackUri?.AbsoluteUri;
478486

479487
return request;
480488
}
@@ -515,6 +523,7 @@ private static RecognizeRequestInternal CreateRecognizeRequest(CallMediaRecogniz
515523
request.PlayPrompt = TranslatePlaySourceToInternal(recognizeSpeechOrDtmfOptions.Prompt);
516524
request.InterruptCallMediaOperation = recognizeOptions.InterruptCallMediaOperation;
517525
request.OperationContext = recognizeOptions.OperationContext == default ? Guid.NewGuid().ToString() : recognizeOptions.OperationContext;
526+
request.CallbackUri = recognizeOptions.CallbackUri?.AbsoluteUri;
518527

519528
return request;
520529
}
@@ -606,7 +615,6 @@ public virtual async Task<Response> StartContinuousDtmfRecognitionAsync(Communic
606615
};
607616

608617
return await CallMediaRestClient.StartContinuousDtmfRecognitionAsync(CallConnectionId, request, cancellationToken).ConfigureAwait(false);
609-
;
610618
}
611619
catch (Exception ex)
612620
{
@@ -620,9 +628,10 @@ public virtual async Task<Response> StartContinuousDtmfRecognitionAsync(Communic
620628
/// </summary>
621629
/// <param name="targetParticipant">A target participant identifier for stopping continuous Dtmf recognition.</param>
622630
/// <param name="operationContext">An optional context object containing information about the operation, such as a unique identifier or custom metadata.</param>
631+
/// <param name="callbackUri">The callback URI override for this transfer call request.</param>
623632
/// <param name="cancellationToken">An optional CancellationToken to cancel the request.</param>
624633
/// <returns>Returns an HTTP response with a 200 status code for success, or an HTTP failure error code in case of an error.</returns>
625-
public virtual Response StopContinuousDtmfRecognition(CommunicationIdentifier targetParticipant, string operationContext = default,
634+
public virtual Response StopContinuousDtmfRecognition(CommunicationIdentifier targetParticipant, string operationContext = default, Uri callbackUri = default,
626635
CancellationToken cancellationToken = default)
627636
{
628637
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallMedia)}.{nameof(StopContinuousDtmfRecognition)}");
@@ -631,7 +640,8 @@ public virtual Response StopContinuousDtmfRecognition(CommunicationIdentifier ta
631640
{
632641
ContinuousDtmfRecognitionRequestInternal request = new(CommunicationIdentifierSerializer.Serialize(targetParticipant))
633642
{
634-
OperationContext = operationContext
643+
OperationContext = operationContext,
644+
CallbackUri = callbackUri?.AbsoluteUri
635645
};
636646

637647
return CallMediaRestClient.StopContinuousDtmfRecognition(CallConnectionId, request, cancellationToken);
@@ -648,9 +658,10 @@ public virtual Response StopContinuousDtmfRecognition(CommunicationIdentifier ta
648658
/// </summary>
649659
/// <param name="targetParticipant">A target participant identifier for stopping continuous Dtmf recognition.</param>
650660
/// <param name="operationContext">An optional context object containing information about the operation, such as a unique identifier or custom metadata.</param>
661+
/// <param name="callbackUri">The callback URI override for this transfer call request.</param>
651662
/// <param name="cancellationToken">An optional CancellationToken to cancel the request.</param>
652663
/// <returns>Returns an HTTP response with a 200 status code for success, or an HTTP failure error code in case of an error.</returns>
653-
public virtual async Task<Response> StopContinuousDtmfRecognitionAsync(CommunicationIdentifier targetParticipant, string operationContext = default,
664+
public virtual async Task<Response> StopContinuousDtmfRecognitionAsync(CommunicationIdentifier targetParticipant, string operationContext = default, Uri callbackUri = default,
654665
CancellationToken cancellationToken = default)
655666
{
656667
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallMedia)}.{nameof(StopContinuousDtmfRecognition)}");
@@ -659,7 +670,8 @@ public virtual async Task<Response> StopContinuousDtmfRecognitionAsync(Communica
659670
{
660671
ContinuousDtmfRecognitionRequestInternal request = new(CommunicationIdentifierSerializer.Serialize(targetParticipant))
661672
{
662-
OperationContext = operationContext
673+
OperationContext = operationContext,
674+
CallbackUri = callbackUri?.AbsoluteUri
663675
};
664676

665677
return await CallMediaRestClient.StopContinuousDtmfRecognitionAsync(CallConnectionId, request, cancellationToken).ConfigureAwait(false);
@@ -677,10 +689,11 @@ public virtual async Task<Response> StopContinuousDtmfRecognitionAsync(Communica
677689
/// <param name="tones">A list of Tones to be sent.</param>
678690
/// <param name="targetParticipant">A target participant identifier for starting continuous Dtmf recognition.</param>
679691
/// <param name="operationContext">An optional context object containing information about the operation, such as a unique identifier or custom metadata.</param>
692+
/// <param name="callbackUri">The callback URI override for this transfer call request.</param>
680693
/// <param name="cancellationToken">An optional CancellationToken to cancel the request.</param>
681694
/// <returns>Returns a Response containing a SendDtmfResult object indicating the result of the send operation.</returns>
682695
public virtual async Task<Response<SendDtmfResult>> SendDtmfAsync(IEnumerable<DtmfTone> tones, CommunicationIdentifier targetParticipant,
683-
string operationContext = default, CancellationToken cancellationToken = default)
696+
string operationContext = default, Uri callbackUri = default, CancellationToken cancellationToken = default)
684697
{
685698
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallMedia)}.{nameof(SendDtmf)}");
686699
scope.Start();
@@ -689,6 +702,7 @@ public virtual async Task<Response<SendDtmfResult>> SendDtmfAsync(IEnumerable<Dt
689702
SendDtmfRequestInternal request = request = new(tones, CommunicationIdentifierSerializer.Serialize(targetParticipant));
690703

691704
request.OperationContext = operationContext;
705+
request.CallbackUri = callbackUri?.AbsoluteUri;
692706

693707
var response = await CallMediaRestClient.SendDtmfAsync(CallConnectionId, request, cancellationToken).ConfigureAwait(false);
694708

@@ -710,10 +724,11 @@ public virtual async Task<Response<SendDtmfResult>> SendDtmfAsync(IEnumerable<Dt
710724
/// <param name="tones">A list of Tones to be sent.</param>
711725
/// <param name="targetParticipant">A target participant identifier for starting continuous Dtmf recognition.</param>
712726
/// <param name="operationContext">An optional context object containing information about the operation, such as a unique identifier or custom metadata.</param>
727+
/// <param name="callbackUri">The callback URI override for this transfer call request.</param>
713728
/// <param name="cancellationToken">An optional CancellationToken to cancel the request.</param>
714729
/// <returns>Returns a Response containing a SendDtmfResult object indicating the result of the send operation.</returns>
715730
public virtual Response<SendDtmfResult> SendDtmf(IEnumerable<DtmfTone> tones, CommunicationIdentifier targetParticipant,
716-
string operationContext = default, CancellationToken cancellationToken = default)
731+
string operationContext = default, Uri callbackUri = default, CancellationToken cancellationToken = default)
717732
{
718733
using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallMedia)}.{nameof(SendDtmf)}");
719734
scope.Start();
@@ -722,6 +737,7 @@ public virtual Response<SendDtmfResult> SendDtmf(IEnumerable<DtmfTone> tones, Co
722737
SendDtmfRequestInternal request = new(tones, CommunicationIdentifierSerializer.Serialize(targetParticipant));
723738

724739
request.OperationContext = operationContext;
740+
request.CallbackUri = callbackUri?.AbsoluteUri;
725741

726742
var response = CallMediaRestClient.SendDtmf(CallConnectionId, request, cancellationToken);
727743

sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.Serialization.cs

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/ContinuousDtmfRecognitionRequestInternal.cs

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/communication/Azure.Communication.CallAutomation/src/Generated/Models/PlayRequestInternal.Serialization.cs

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)