diff --git a/src/activities/Elsa.Activities.Telnyx/Activities/CallRingGroup.cs b/src/activities/Elsa.Activities.Telnyx/Activities/CallRingGroup.cs index 077c49a28..fce65cc51 100644 --- a/src/activities/Elsa.Activities.Telnyx/Activities/CallRingGroup.cs +++ b/src/activities/Elsa.Activities.Telnyx/Activities/CallRingGroup.cs @@ -44,7 +44,14 @@ namespace Elsa.Activities.Telnyx.Activities } [ActivityProperty(Label = "Call Control ID", Hint = "Unique identifier and token for controlling the call.")] - public string? CallControlId + public string CallControlId + { + get => GetState(); + set => SetState(value); + } + + [ActivityProperty(Label = "Call Control App ID", Hint = "The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.", Category = PropertyCategories.Advanced)] + public string? CallControlAppId { get => GetState(); set => SetState(value); @@ -113,12 +120,9 @@ namespace Elsa.Activities.Telnyx.Activities protected override async ValueTask OnExitAsync(ActivityExecutionContext context, object? output) { - string? answeredCallControlId = null; - - if (output is CallAnsweredPayload callAnsweredPayload) - answeredCallControlId = callAnsweredPayload.CallControlId; - // Hang up any pending calls. + + var answeredCallControlId = CallAnsweredPayload?.CallControlId; var outgoingCalls = CollectedDialResponses.Where(x => x.CallControlId != answeredCallControlId).ToList(); var client = context.GetService(); @@ -140,7 +144,7 @@ namespace Elsa.Activities.Telnyx.Activities .ForEach(() => Extensions, iterate => iterate .Then(a => a.WithExtension(context => context.GetInput())) .Then(a => a - .WithCallControlId(() => CallControlId) + .WithConnectionId(() => CallControlAppId) .WithTo(context => context.GetInput()) .WithTimeoutSecs(() => (int) RingTime.TotalSeconds) .WithFrom(() => From) @@ -155,8 +159,10 @@ namespace Elsa.Activities.Telnyx.Activities .ThenTypeNamed(CallAnsweredPayload.ActivityTypeName) .Then(context => CallAnsweredPayload = (CallAnsweredPayload) context.GetInput()!.Data.Payload) .Then(bridge => bridge - .WithCallControlIdA(() => DialedControlId) - .WithCallControlIdB(() => CallAnsweredPayload!.CallControlId)) + .WithCallControlIdA(() => CallControlId) + .WithCallControlIdB(() => DialedControlId)) + .ThenTypeNamed(CallBridgedPayload.ActivityTypeName) + .ThenTypeNamed(CallBridgedPayload.ActivityTypeName) .Then(finish => finish.WithOutcome("Connected").WithOutput(() => CallAnsweredPayload)); fork @@ -175,13 +181,10 @@ namespace Elsa.Activities.Telnyx.Activities .ThenTypeNamed(CallAnsweredPayload.ActivityTypeName) .Then(context => CallAnsweredPayload = (CallAnsweredPayload) context.GetInput()!.Data.Payload) .Then(bridge => bridge - .WithCallControlIdA(() => - { - var answeredPayload = CallAnsweredPayload!; - var dialedResponse = CollectedDialResponses.First(x => x.CallLegId == answeredPayload.CallLegId); - return dialedResponse.CallControlId; - }) + .WithCallControlIdA(() => CallControlId) .WithCallControlIdB(() => CallAnsweredPayload!.CallControlId)) + .ThenTypeNamed(CallBridgedPayload.ActivityTypeName) + .ThenTypeNamed(CallBridgedPayload.ActivityTypeName) .Then(finish => finish.WithOutcome("Connected").WithOutput(() => CallAnsweredPayload)); fork @@ -194,7 +197,7 @@ namespace Elsa.Activities.Telnyx.Activities .ParallelForEach(() => Extensions, iterate => iterate .Then(a => a.WithExtension(context => context.GetInput())) .Then(a => a - .WithCallControlId(() => CallControlId) + .WithConnectionId(() => CallControlAppId) .WithTo(context => context.GetInput()) .WithTimeoutSecs(() => (int) RingTime.TotalSeconds) .WithFrom(() => From)