public override IEnumerable <CooperativeTaskStatus> DoWork() { IConversationPartner partner = ConversationRequest.GetPartner(Context.LocalKnowledge); if (partner != null && DialogMachine != null) { DialogMachine.Name = Context.Name; ConversationRequest.SetPartner(DialogMachine.LocalKnowledge, partner); partner.Begin(); DialogMachine.Restart(); DialogMachine.IsEnabled = true; while (!DialogMachine.IsInEndState) { yield return(Wait()); } DialogMachine.IsEnabled = false; ConversationRequest.UnsetPartner(Context.LocalKnowledge); ConversationRequest.UnsetPartner(DialogMachine.LocalKnowledge); partner.End(); yield return(Finished(true)); } yield return(Finished(false)); }
public override IEnumerable <CooperativeTaskStatus> DoWork() { IConversationPartner partner = ConversationRequest.GetPartner(Context.LocalKnowledge); if (partner != null) { IEnumerable <string> responses = ((StateMachine)Context).CurrentState.Transitions.OfType <ConversationTransition>().Select(t => t.Response); partner.Say(Context.Name, Text, responses); yield return(Finished(true)); } else { yield return(Finished(false)); } }