Skip to content

Commit a0c7d4f

Browse files
Adding new incoming call event for call automation. Related work item… (Azure#47379)
* Adding new incoming call event for call automation. Related work item: 3954169
1 parent 38f149a commit a0c7d4f

10 files changed

+321
-2
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,17 @@ public HoldOptions(Azure.Communication.CommunicationIdentifier targetParticipant
871871
public Azure.Communication.CallAutomation.PlaySource PlaySourceInfo { get { throw null; } set { } }
872872
public Azure.Communication.CommunicationIdentifier TargetParticipant { get { throw null; } }
873873
}
874+
public partial class IncomingCall : Azure.Communication.CallAutomation.CallAutomationEventBase
875+
{
876+
internal IncomingCall() { }
877+
public string CallerDisplayName { get { throw null; } }
878+
public Azure.Communication.CallAutomation.CustomCallingContext CustomContext { get { throw null; } }
879+
public Azure.Communication.CommunicationIdentifier From { get { throw null; } }
880+
public string IncomingCallContext { get { throw null; } }
881+
public Azure.Communication.CommunicationIdentifier OnBehalfOfCallee { get { throw null; } }
882+
public Azure.Communication.CommunicationIdentifier To { get { throw null; } }
883+
public static Azure.Communication.CallAutomation.IncomingCall Deserialize(string content) { throw null; }
884+
}
874885
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
875886
public readonly partial struct MediaEventReasonCode : System.IEquatable<Azure.Communication.CallAutomation.MediaEventReasonCode>
876887
{

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -870,6 +870,17 @@ public HoldOptions(Azure.Communication.CommunicationIdentifier targetParticipant
870870
public Azure.Communication.CallAutomation.PlaySource PlaySourceInfo { get { throw null; } set { } }
871871
public Azure.Communication.CommunicationIdentifier TargetParticipant { get { throw null; } }
872872
}
873+
public partial class IncomingCall : Azure.Communication.CallAutomation.CallAutomationEventBase
874+
{
875+
internal IncomingCall() { }
876+
public string CallerDisplayName { get { throw null; } }
877+
public Azure.Communication.CallAutomation.CustomCallingContext CustomContext { get { throw null; } }
878+
public Azure.Communication.CommunicationIdentifier From { get { throw null; } }
879+
public string IncomingCallContext { get { throw null; } }
880+
public Azure.Communication.CommunicationIdentifier OnBehalfOfCallee { get { throw null; } }
881+
public Azure.Communication.CommunicationIdentifier To { get { throw null; } }
882+
public static Azure.Communication.CallAutomation.IncomingCall Deserialize(string content) { throw null; }
883+
}
873884
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
874885
public readonly partial struct MediaEventReasonCode : System.IEquatable<Azure.Communication.CallAutomation.MediaEventReasonCode>
875886
{

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

Lines changed: 51 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/IncomingCallInternal.Serialization.cs

Lines changed: 106 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/IncomingCallInternal.cs

Lines changed: 56 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/Models/CustomCallingContextInternal.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace Azure.Communication.CallAutomation
99
{
10-
[CodeGenModel("CustomCallingContext")]
10+
[CodeGenModel("CustomCallingContext", Usage = new string[] { "output" }, Formats = new string[] { "json" })]
1111
internal partial class CustomCallingContextInternal
1212
{
1313
public CustomCallingContextInternal(IDictionary<string, string> sipHeaders, IDictionary<string, string> voipHeaders)

sdk/communication/Azure.Communication.CallAutomation/src/Models/Events/CallAutomationEventParser.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ private static CallAutomationEventBase Deserialize(string eventData, string type
178178
case nameof(DialogUpdated):
179179
return DialogUpdated.Deserialize(eventData);
180180
#endregion
181+
#region Incoming Call
182+
case nameof(IncomingCall):
183+
return IncomingCall.Deserialize(eventData);
184+
#endregion
181185
default:
182186
return null;
183187
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using System.Text.Json;
5+
6+
namespace Azure.Communication.CallAutomation
7+
{
8+
/// <summary>
9+
/// The add participant failed event.
10+
/// </summary>
11+
public class IncomingCall : CallAutomationEventBase
12+
{
13+
/// <summary> Initializes a new instance of <see cref="IncomingCall"/>. </summary>
14+
internal IncomingCall()
15+
{
16+
}
17+
18+
/// <summary> Initializes a new instance of <see cref="IncomingCall"/>. </summary>
19+
/// <param name="internalEvent">Internal Representation of the IncomingCall. </param>
20+
internal IncomingCall(IncomingCallInternal internalEvent)
21+
{
22+
To = CommunicationIdentifierSerializer.Deserialize(internalEvent.To);
23+
From = CommunicationIdentifierSerializer.Deserialize(internalEvent.From);
24+
ServerCallId = internalEvent.ServerCallId;
25+
CallerDisplayName = internalEvent.CallerDisplayName;
26+
CustomContext = new CustomCallingContext(internalEvent.CustomContext.SipHeaders, internalEvent.CustomContext.VoipHeaders);
27+
IncomingCallContext = internalEvent.IncomingCallContext;
28+
29+
if (internalEvent.OnBehalfOfCallee != null)
30+
{
31+
OnBehalfOfCallee = CommunicationIdentifierSerializer.Deserialize(internalEvent.OnBehalfOfCallee);
32+
}
33+
34+
CorrelationId = internalEvent.CorrelationId;
35+
}
36+
37+
/// <summary> The communication identifier of the target user. </summary>
38+
public CommunicationIdentifier To { get; }
39+
/// <summary> The communication identifier of the user who initiated the call. </summary>
40+
public CommunicationIdentifier From { get; }
41+
/// <summary> Display name of caller. </summary>
42+
public string CallerDisplayName { get; }
43+
/// <summary> Custom Context of Incoming Call. </summary>
44+
public CustomCallingContext CustomContext { get; }
45+
/// <summary> Incoming call context. </summary>
46+
public string IncomingCallContext { get; }
47+
/// <summary> The communication identifier of the user on behalf of whom the call is made. </summary>
48+
public CommunicationIdentifier OnBehalfOfCallee { get; }
49+
50+
/// <summary>
51+
/// Deserialize <see cref="IncomingCall"/> event.
52+
/// </summary>
53+
/// <param name="content">The json content.</param>
54+
/// <returns>The new <see cref="IncomingCall"/> object.</returns>
55+
public static IncomingCall Deserialize(string content)
56+
{
57+
using var document = JsonDocument.Parse(content);
58+
JsonElement element = document.RootElement;
59+
60+
var internalEvent = IncomingCallInternal.DeserializeIncomingCallInternal(element);
61+
return new IncomingCall(internalEvent);
62+
}
63+
}
64+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using System.Text.Json;
5+
using Azure.Core;
6+
7+
namespace Azure.Communication.CallAutomation
8+
{
9+
/// <summary>
10+
/// The incoming call event internal.
11+
/// </summary>
12+
[CodeGenModel("IncomingCall", Usage = new string[] { "output" }, Formats = new string[] { "json" })]
13+
internal partial class IncomingCallInternal
14+
{
15+
}
16+
}

sdk/communication/Azure.Communication.CallAutomation/src/autorest.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ model-namespace: false
1010
tag: package-2023-10-03-preview
1111

1212
require:
13-
- https://github.com/Azure/azure-rest-api-specs/blob/be2a0fa68829fcb15c4e6b47aa6bc4bdd566c1cf/specification/communication/data-plane/CallAutomation/readme.md
13+
- https://github.com/Azure/azure-rest-api-specs/blob/caabf7f24ee18b923a01bd51461c188e861a044e/specification/communication/data-plane/CallAutomation/readme.md
1414

1515

1616
title: Azure Communication Services

0 commit comments

Comments
 (0)