public override string Speak() { base.Speak(); Dialog phrase = CurrentDialog; int levelNum = Int32.Parse(phrase.GetPropertyValue("levelNum")); switch (_state) { case VolumeConversationState.Initial: if (levelNum == -1) { // If we are asking to do volume and we didn't indicate a repeat volume, we should use the interactive mode. ConversationIsOver = false; _state = VolumeConversationState.VolumeAdjustment; _source = phrase.GetPropertyValue("source"); AdjustVolume(phrase.GetPropertyValue("direction"), 0.05, _source); return("How is that?"); } else { Console.WriteLine("About to call adjust volume with " + phrase.GetPropertyValue("direction")); ConversationIsOver = true; Task.Run(() => AdjustVolume(phrase.GetPropertyValue("direction"), levelNum / 100.0, phrase.GetPropertyValue("source"))); return("OK"); } case VolumeConversationState.VolumeAdjustment: if (levelNum == -1) { ConversationIsOver = true; return("Good"); } else { ConversationIsOver = false; AdjustVolume(phrase.GetPropertyValue("direction"), levelNum / 100.0, _source); return("How is that?"); } default: break; } return(String.Empty); }
internal VolumeConversation(IConfigurationManager configManager, IEnumerable <IOInterfaceReference> references) : base(configManager, DateTime.Now.AddMinutes(1)) { _state = VolumeConversationState.Initial; _references = references; }