コード例 #1
0
        /// <summary>
        /// Runs interactive command line chat between user and bot. Runs indefinately until EOF is entered to the prompt.
        /// </summary>
        /// <param name="context">Chat context</param>
        /// <param name="maxSteps">Max number of steps. Set to { } if omitted</param>
        public void Interactive(WitContext context = null, int maxSteps = 5)
        {
            if (actions == null)
            {
                ThrowMustHaveActions();
            }

            if (maxSteps <= 0)
            {
                throw new WitException("max iterations reached");
            }

            if (context == null)
            {
                context = new WitContext();
            }

            string message;

            while (true)
            {
                try
                {
                    message = Console.ReadLine();
                }
                catch (Exception)
                {
                    return;
                }

                var response = RunActions("session-id-01", message, context, maxSteps);
                context = response.Context;
                response.Messages.ForEach(msg => Console.WriteLine(msg));
            }
        }
コード例 #2
0
        public void Is_Case_Insensitive()
        {
            //Arrange
            var witContext = new WitContext();

            witContext["teSt"] = "testData";

            //Action
            //Assert
            if (witContext.TryGetValue("TEsT", out object val))
            {
                Assert.AreEqual(val, "testData");
            }
            else
            {
                Assert.Fail("WitContext should not be case sensitive");
            }
        }
コード例 #3
0
ファイル: Wit.cs プロジェクト: ajsmithsw/Project-HENRY
        /// <summary>
        /// Returns what your bot should do next. The next step can be either answering to the user, performing an action, or waiting for further requests.
        /// </summary>
        /// <param name="sessionId">A specific ID of your choosing representing the session your query belongs to</param>
        /// <param name="message">A message from the user</param>
        /// <param name="context">Chat context</param>
        /// <param name="verbose">Calls the API in verbose mode</param>
        /// <returns <see cref="ConverseResponse"/>>Converse response</returns>
        public ConverseResponse Converse(string sessionId, string message, WitContext context, bool verbose = true)
        {
            if (context == null)
            {
                context = new WitContext();
            }

            var request = new RestRequest("converse", Method.POST);

            request.AddJsonBody(context);
            if (message != null)
            {
                request.AddQueryParameter("q", message);
            }
            request.AddQueryParameter("session_id", sessionId);

            IRestResponse    responseObject = client.Execute(request);
            ConverseResponse response       = JsonConvert.DeserializeObject <ConverseResponse>(responseObject.Content);

            return(response);
        }
コード例 #4
0
        /// <summary>
        /// A higher-level method to the Wit converse API
        /// </summary>
        /// <param name="sessionId">A specific ID of your choosing representing the session your query belongs to</param>
        /// <param name="message">A message from the user.</param>
        /// <param name="context">Chat context</param>
        /// <param name="maxSteps">Max number of steps</param>
        /// <param name="verbose">Calls the API in verbose mode</param>
        /// <returns <see cref="BotResponse"/>>The bot response</returns>
        public BotResponse RunActions(string sessionId, string message, WitContext context,
                                      int maxSteps = 5, bool verbose = true)
        {
            var botResponse = new BotResponse(context);

            if (actions == null)
            {
                ThrowMustHaveActions();
            }

            if (context == null)
            {
                context             = new WitContext();
                botResponse.Context = context;
            }

            /** Figuring out whether we need to reset the last turn.
            *   Each new call increments an index for the session.
            *   We only care about the last call to run_actions.
            *   All the previous ones are discarded (preemptive exit).*/
            var currentRequest = 1;

            if (sessions.ContainsKey(sessionId))
            {
                currentRequest = sessions[sessionId] + 1;
            }

            sessions[sessionId] = currentRequest;

            botResponse = _RunActions(sessionId, currentRequest, message, botResponse, maxSteps, verbose);

            // Cleaning up once the last call to RunActions finishes.
            if (currentRequest == sessions[sessionId])
            {
                sessions.Remove(sessionId);
            }

            return(botResponse);
        }
コード例 #5
0
ファイル: Wit.cs プロジェクト: ajsmithsw/Project-HENRY
        /// <summary>
        /// Runs interactive command line chat between user and bot. Runs indefinately until EOF is entered to the prompt.
        /// </summary>
        /// <param name="context">Chat context</param>
        /// <param name="maxSteps">Max number of steps. Set to { } if omitted</param>
        public void Interactive(WitContext context = null, int maxSteps = 5)
        {
            if (this.actions == null)
            {
                ThrowMustHaveActions();
            }

            if (maxSteps <= 0)
            {
                throw new WitException("max iterations reached");
            }

            if (context == null)
            {
                context = new WitContext();
            }

            string message;

            while (true)
            {
                string session;
                try
                {
                    session = SessionId.Generate();
                    Console.Write("{0} YOU   > ", session);
                    message = Console.ReadLine();
                }
                catch (Exception)
                {
                    return;
                }

                var response = this.RunActions(session, message, context, maxSteps);
                context = response.Context;
                response.Messages.ForEach(msg => Console.WriteLine("{0} HENRY > {1}\n", session, msg));
            }
        }
コード例 #6
0
ファイル: BotResponse.cs プロジェクト: sreedevi1986/wit.net
 public BotResponse(WitContext context)
 {
     this.Context  = context;
     this.Messages = new List <string>();
 }
コード例 #7
0
 public ConverseRequest(string sessionId, string message, WitContext context)
 {
     this.SessionId = sessionId;
     this.Message   = message;
     this.Context   = context;
 }
コード例 #8
0
 public ConverseRequest(string sessionId, string message, WitContext context)
 {
     SessionId = sessionId;
     Message   = message;
     Context   = context;
 }