Beispiel #1
0
        /// <summary>
        /// Searches the CustomTag collection and processes the AIML if an appropriate tag handler is found
        /// </summary>
        /// <param name="user">the user who originated the request</param>
        /// <param name="query">the query that produced this node</param>
        /// <param name="request">the request from the user</param>
        /// <param name="result">the result to be sent to the user</param>
        /// <param name="node">the node to evaluate</param>
        /// <returns>the output string</returns>
        public AIMLTagHandler GetBespokeTags(User user, SubQuery query, Request request, Result result, XmlNode node)
        {
            if (_config.CustomTags.ContainsKey(node.Name.ToLower()))
            {
                TagHandler customTagHandler = _config.CustomTags[node.Name.ToLower()];

                AIMLTagHandler newCustomTag = customTagHandler.Instantiate(_config.LateBindingAssemblies);
                if (object.Equals(null, newCustomTag))
                {
                    return(null);
                }
                else
                {
                    //TODO: Need to figure out design pattern where only necessary objects are passed to object
                    //newCustomTag.user = user;
                    //newCustomTag.query = query;
                    //newCustomTag.request = request;
                    //newCustomTag.result = result;
                    //newCustomTag.templateNode = node;
                    //newCustomTag.bot = this;
                    return(newCustomTag);
                }
            }
            else
            {
                return(null);
            }
        }
Beispiel #2
0
        public AIMLTagHandler CreateTagHandler(string tagName, Bot bot, User user, SubQuery query, Request request, Result result, XmlNode node)
        {
            AIMLTagHandler tagHandler = GetBespokeTags(user, query, request, result, node);

            if (object.Equals(null, tagHandler))
            {
                tagHandler = tagName switch
                {
                    "bot" => new AIMLTagHandlers.bot(_logger, _config.GlobalSettings, node),
                    "condition" => new AIMLTagHandlers.condition(_logger, user, node),
                    "date" => new AIMLTagHandlers.date(_logger, _config.Locale, node),
                    "formal" => new AIMLTagHandlers.formal(_logger, node),
                    "gender" => new AIMLTagHandlers.Gender(_logger, _config, query, request, node),
                    "get" => new AIMLTagHandlers.Get(_logger, _config, user, node),
                    "gossip" => new AIMLTagHandlers.gossip(_logger, user, node),
                    "id" => new AIMLTagHandlers.id(_logger, user, node),
                    "input" => new AIMLTagHandlers.input(_logger, user, request, node),
                    "javascript" => new AIMLTagHandlers.javascript(_logger, node),
                    "learn" => new AIMLTagHandlers.learn(_logger, bot, node),
                    "lowercase" => new AIMLTagHandlers.lowercase(_logger, _config.Locale, node),
                    "person" => new AIMLTagHandlers.Person(_logger, _config, query, request, node),
                    "person2" => new AIMLTagHandlers.Person2(_logger, _config, query, request, node),
                    "random" => new AIMLTagHandlers.random(_logger, node),
                    "sentence" => new AIMLTagHandlers.Sentence(_logger, _config, query, request, node),
                    "set" => new AIMLTagHandlers.set(_logger, _config, user, node),
                    "size" => new AIMLTagHandlers.size(_logger, _config.Size, node),
                    "sr" => new AIMLTagHandlers.Sr(_logger, bot, user, query, request, node),
                    "srai" => new AIMLTagHandlers.Srai(_logger, bot, user, request, node),
                    "star" => new AIMLTagHandlers.Star(_logger, query, request, node),
                    "system" => new AIMLTagHandlers.system(_logger, node),
                    "that" => new AIMLTagHandlers.that(_logger, user, request, node),
                    "thatstar" => new AIMLTagHandlers.Thatstar(_logger, query, request, node),
                    "think" => new AIMLTagHandlers.Think(_logger, node),
                    "topicstar" => new AIMLTagHandlers.Topicstar(_logger, query, request, node),
                    "uppercase" => new AIMLTagHandlers.uppercase(_logger, _config.Locale, node),
                    "version" => new AIMLTagHandlers.version(_logger, _config, node),
                    _ => null,
                };
            }
            return(tagHandler);
        }