Improve Telnyx CallRingGroup

This commit is contained in:
Sipke Schoorstra 2021-05-31 19:48:48 +02:00
parent 967fbddf8b
commit f8b3958f1c

View file

@ -6,9 +6,11 @@ using Elsa.Activities.ControlFlow;
using Elsa.Activities.Telnyx.Client.Models;
using Elsa.Activities.Telnyx.Client.Services;
using Elsa.Activities.Telnyx.Models;
using Elsa.Activities.Telnyx.Services;
using Elsa.Activities.Telnyx.Webhooks.Models;
using Elsa.Activities.Telnyx.Webhooks.Payloads.Call;
using Elsa.Activities.Temporal;
using Elsa.ActivityResults;
using Elsa.Attributes;
using Elsa.Builders;
using Elsa.Design;
@ -153,10 +155,9 @@ namespace Elsa.Activities.Telnyx.Activities
private void BuildPrioritizedHuntFlow(IOutcomeBuilder builder) =>
builder
.ForEach(() => Extensions, iterate => iterate
.Then<ResolveExtension>(a => a.WithExtension(context => context.GetInput<string>()))
.Then<Dial>(a => a
.WithConnectionId(() => CallControlAppId)
.WithTo(context => context.GetInput<string>())
.WithTo(async context => await ResolveExtensionAsync(context, context.GetInput<string>()!))
.WithTimeoutSecs(() => (int) RingTime.TotalSeconds)
.WithFrom(() => From)
.WithFromDisplayName(() => FromDisplayName)
@ -195,7 +196,6 @@ namespace Elsa.Activities.Telnyx.Activities
.WithCallControlIdA(() => CallControlId)
.WithCallControlIdB(() => CallAnsweredPayload!.CallControlId))
.ThenTypeNamed(CallBridgedPayload.ActivityTypeName)
.ThenTypeNamed(CallBridgedPayload.ActivityTypeName)
.Then<Finish>(finish => finish.WithOutcome("Connected").WithOutput(() => CallAnsweredPayload));
fork
@ -206,10 +206,9 @@ namespace Elsa.Activities.Telnyx.Activities
fork
.When("Dial Everyone")
.ParallelForEach(() => Extensions, iterate => iterate
.Then<ResolveExtension>(a => a.WithExtension(context => context.GetInput<string>()))
.Then<Dial>(a => a
.WithConnectionId(() => CallControlAppId)
.WithTo(context => context.GetInput<string>())
.WithTo(async context => await ResolveExtensionAsync(context, context.GetInput<string>()!))
.WithTimeoutSecs(() => (int) RingTime.TotalSeconds)
.WithFrom(() => From)
.WithFromDisplayName(() => FromDisplayName)
@ -225,6 +224,13 @@ namespace Elsa.Activities.Telnyx.Activities
collection.Add(dialResponse);
CollectedDialResponses = collection;
}
private static async Task<string> ResolveExtensionAsync(ActivityExecutionContext context, string extension)
{
var extensionProvider = context.GetService<IExtensionProvider>();
var resolvedExtension = await extensionProvider.GetAsync(extension, context.CancellationToken);
return resolvedExtension?.Number ?? extension;
}
object IActivityPropertyDefaultValueProvider.GetDefaultValue(PropertyInfo property) => Duration.FromSeconds(20);
}