Ejemplo n.º 1
0
        /// <summary>
        /// Returns the only instance of skill factory.
        /// </summary>
        /// <returns></returns>
        public static SkillFactory GetInstance(ITurnContext context,
                                               IConversationStateProvider conversationStateProvider)
        {
            if (_factory == null)
            {
                lock (padlock)
                {
                    //
                    _conversationStateProvider = conversationStateProvider;
                    //
                    _factory = _factory ?? new SkillFactory();
                    // Check, if skill set is empty
                    if (_skills.Count == 0)
                    {
                        var knownSkills      = new[] { "greetings", "retorts" }; //, "questions" };
                        var greetingInstance = Greetings.Instance(context, conversationStateProvider);
                        var retortsInstance  = Retorts.Instance(context, conversationStateProvider);
                        //var questionsInstance = Questions.Instance(context, conversationStateProvider);
                        //
                        _skills.Add("greetings", greetingInstance);
                        _skills.Add("retorts", retortsInstance);
                        //_skills.Add("questions", questionsInstance);
                    }
                }
            }

            return(_factory);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Obtains instance of this class with passing context and state.
 /// </summary>
 /// <param name="context">current context</param>
 /// <param name="conversationStateProvider">passed state provider</param>
 /// <returns>instance of skill</returns>
 public ISkill GetInstance(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     if (_instance == null)
     {
         _instance = new Images();
     }
     return(_instance);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Creates new instance of greetings skill to process given phrase.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 private Greetings(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     _state = conversationStateProvider.GetConversationState <BrainState>(context);
     // Create new DialogUtils to hide logic in sub-methods
     if (_dialogUtils == null)
     {
         _dialogUtils = new DialogUtils(context, conversationStateProvider);
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Creates new instance of skill.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 /// <returns>instance of unknowns</returns>
 public static Unknowns Instance(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     if (_instance == null)
     {
         lock (padlock)
             if (_instance == null)
             {
                 _instance = new Unknowns(context, conversationStateProvider);
             }
     }
     return(_instance);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Creates new instance of skill.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 /// <returns>instance of retorts</returns>
 public static Retorts Instance(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     if (_instance != null)
     {
         return(_instance);
     }
     // Start initializing an instance
     lock (padlock)
         if (_instance == null)
         {
             _instance = new Retorts(context, conversationStateProvider);
         }
     return(_instance);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Creates new instance of Utils for Dialogs.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 public DialogUtils(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     if (context == null)
     {
         throw new ArgumentNullException("context", "context is null.");
     }
     if (conversationStateProvider == null)
     {
         throw new ArgumentNullException("conversationStateProvider", "conversationStateProvider is null.");
     }
     if (_state == null)
     {
         _state = conversationStateProvider.GetConversationState <BrainState>(context);
     }
     //
     initLocalizedAnswers();
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Returns wanted skill, if there exist one with such a name.
        /// </summary>
        /// <param name="key">skill's name</param>
        /// <param name="context">used context</param>
        /// <param name="conversationStateProvider">given conversation provider to access BrainState</param>
        /// <returns>wanted skill, if found, null otherwise</returns>
        public ISkill GetSkill(string key, ITurnContext context, IConversationStateProvider conversationStateProvider)
        {
            // if it does exist, read it and return it
            if (_skills.TryGetValue(key, out ISkill instance))
            {
                instance = _skills[key];
            }
            else
            {
                // First time - call to init an instance
                switch (key)
                {
                // TODO if would be nice, if this would be classfiles processor on directory - not to type every single skill in factory
                case "greetings":
                    instance = Greetings.Instance(context, conversationStateProvider);
                    break;

                case "retorts":
                    instance = Retorts.Instance(context, conversationStateProvider);
                    break;

                /*case "questions":
                 *  instance = Questions.Instance(context, conversationStateProvider);
                 *  break;*/
                case "unknowns":
                    instance = Unknowns.Instance(context, conversationStateProvider);
                    break;
                }
                // If obtained instance, add it to known skills
                if (instance != null)
                {
                    _skills.Add(key, instance);
                }
            }
            return(instance);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Creates new instance of skill.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 /// <returns>instance of retorts</returns>
 public ISkill GetInstance(ITurnContext context, IConversationStateProvider conversationStateProvider)
 => Instance(context, conversationStateProvider);
Ejemplo n.º 9
0
 /// <summary>
 /// Creates new instance of retorts skill to process given phrase.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 private Retorts(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     _state = conversationStateProvider.GetConversationState <BrainState>(context);
     // Create new DialogUtils to hide logic in sub-methods
     InitItems();
 }
Ejemplo n.º 10
0
 public EchoBot(IConversationStateProvider conversationStateProvider) => _conversationStateProvider = conversationStateProvider;
Ejemplo n.º 11
0
 /// <summary>
 /// Creates new instance of retorts skill to process given phrase.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 private Unknowns(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     _state = conversationStateProvider.GetConversationState <BrainState>(context);
     // Assures, that list of items is not null
     InitItems();
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Creates new instance of Utils for calling system.
 /// </summary>
 /// <param name="context">current dialog context</param>
 /// <param name="conversationStateProvider">provider for passing the state from context</param>>
 public SystemUtils(ITurnContext context, IConversationStateProvider conversationStateProvider)
 {
     _state = conversationStateProvider.GetConversationState <BrainState>(context);
 }