/// <summary>
        /// Initializes a new instance of the <see cref="LuisCommunicationManager"/> class.
        /// </summary>
        public LuisCommunicationManager(string appId, string appKey, LuisFlowConfiguration <FlowState> luisFlowConfiguration, Dictionary <string, object> context)
        {
            var initialState = luisFlowConfiguration.States.Single(x => x.IsInitialState);

            this.luisEngine = new LuisStateFlowEngine <FlowState>(appId, appKey, initialState, luisFlowConfiguration, new FlowStateBehaviorExecutor(), context);
            this.PerformStaticVerification(context.Keys);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="LuisStateFlowEngine" /> class.
 /// </summary>
 /// <param name="appId">The application identifier.</param>
 /// <param name="appKey">The application key.</param>
 /// <param name="initialState">The initial state.</param>
 /// <param name="luisConfiguration">The luis configuration.</param>
 /// <param name="behaviorExecutor">The behavior executor.</param>
 /// <param name="context">The context.</param>
 public LuisStateFlowEngine(string appId, string appKey, T initialState,
                            LuisFlowConfiguration <T> luisConfiguration,
                            IBehaviorExecutor <T> behaviorExecutor,
                            Dictionary <string, object> context)
 {
     this.appId         = appId;
     this.appKey        = appKey;
     this.StateMachine  = new FiniteStateMachine <T, string, LanguageUnderstandingResult>(initialState, luisConfiguration.Transitions);
     this.stateBehavior = behaviorExecutor;
     this.context       = context;
 }