public Task DoStep(ISettings settings, ICall call) { var stepSettings = settings as PlayValueStepSettings; if (stepSettings == null) { throw new ArgumentException("PlayValueStepProcessor called with invalid Step settings"); } var numbersToPromptsConverter = new MoneyValueToPrompts(); var valueToPlay = (decimal?)call.CallState.GetType().GetProperty(stepSettings.Value)?.GetValue(call.CallState); if (valueToPlay == null) { throw new ArgumentException("Value specified does not exist on CallState: " + stepSettings.Value); } var prompts = numbersToPromptsConverter.GetPromptsForValue(valueToPlay.Value); var promptSettings = new PlayerPromptSettings() { IsInterruptible = stepSettings.IsInterruptible, NextStep = stepSettings.NextStep, Prompts = prompts }; call.PromptPlayer.DoStep(promptSettings); call.AddStepToProcessQueue(stepSettings.NextStep); return(Task.CompletedTask); }
private static Task PlayMoneyValue(Step step, ICall call, PlayValueStepSettings stepSettings) { var numbersToPromptsConverter = new MoneyValueToPrompts(call.Logger); var valueToPlay = (decimal?)DynamicState.GetProperty(call.CallState, stepSettings.Value); if (valueToPlay == null) { throw new ArgumentException("Value specified does not exist on CallState: " + stepSettings.Value); } var prompts = numbersToPromptsConverter.GetPromptsForValue(valueToPlay.Value); var promptSettings = new PlayerPromptSettings() { IsInterruptible = stepSettings.IsInterruptible, NextStep = step.GetStepFromConnector(NextStep), Prompts = prompts, Direction = stepSettings.Direction }; call.PromptPlayer.DoStepAsync(promptSettings); if (stepSettings.Direction != Direction.Outgoing) { call.CallState.AddStepToIncomingQueue(step.GetStepFromConnector(NextStep)); } else { call.CallState.AddStepToOutgoingQueue(step.GetStepFromConnector(NextStep)); } return(Task.CompletedTask); }