Example #1
0
        protected override void Execute(CodeActivityContext context)
        {
            Microsoft.Office.Interop.Outlook.Application outlookApplication = new Microsoft.Office.Interop.Outlook.Application();
            // Microsoft.Office.Interop.Outlook.MailItem email = (Microsoft.Office.Interop.Outlook.MailItem)outlookApplication.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
            var fromemail = Email.Get(context);


            var    to       = To.Get(context);
            var    cc       = CC.Get(context);
            var    bcc      = BCC.Get(context);
            var    subject  = Subject.Get(context);
            string body     = (Body != null ?Body.Get(context) : null);
            string htmlbody = (HTMLBody != null ? HTMLBody.Get(context) : null);

            if (!string.IsNullOrEmpty(htmlbody))
            {
                body = htmlbody;
            }
            var attachments = Attachments.Get(context);
            var uiaction    = UIAction.Get(context);
            var replyaction = ReplyAction.Get(context);

            Microsoft.Office.Interop.Outlook.MailItem email;
            if (replyaction == "forward")
            {
                email = fromemail.mailItem.Forward();
            }
            else if (replyaction == "reply")
            {
                email = fromemail.mailItem.Reply();
            }
            else
            {
                email = fromemail.mailItem.ReplyAll();
            }
            email.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText;
            if (!string.IsNullOrEmpty(to))
            {
                email.To = to;
            }
            if (!string.IsNullOrEmpty(subject))
            {
                email.Subject = subject;
            }
            email.HTMLBody = body + Environment.NewLine + email.HTMLBody;
            if (!string.IsNullOrEmpty(cc))
            {
                email.CC = cc;
            }
            if (!string.IsNullOrEmpty(bcc))
            {
                email.BCC = bcc;
            }

            if (attachments != null && attachments.Count() > 0)
            {
                foreach (var attachment in attachments)
                {
                    if (!string.IsNullOrEmpty(attachment))
                    {
                        email.Attachments.Add(attachment, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, 100000, Type.Missing);
                    }
                }
            }
            if (uiaction == "Show")
            {
                email.Display(true);
            }
            //else if(uiaction == "SendVisable")
            //{
            //    email.Display(true);
            //    email.Send();
            //}
            else
            {
                email.Send();
            }
            if (EMail != null)
            {
                EMail.Set(context, new email(email));
            }
        }
Example #2
0
        public static void CreateSampleBot()
        {
            //create sample data
            var botConfig = new Models.BotConfig();

            botConfig.BotName     = "Platform Test Bot";
            botConfig.BotGreeting = "Hi! Welcome to chattr.  chattr is an easy-to-use chatbot platform which easily lets you build and deploy chatbots.  The platform supports exact phrase matches and machine learning to classify a request.";

            //create greeting FAQ
            var helpFAQ = new Conversation();

            helpFAQ.Name = "helpSample";
            helpFAQ.AddUtterance("help");
            helpFAQ.AddUtterance("!help");
            helpFAQ.AddUtterance("what can I ask you");
            helpFAQ.AddUtterance("halp");
            helpFAQ.AddUtterance("what can you do");
            helpFAQ.AddUtterance("what can I ask");
            helpFAQ.AddResponse("This is a sample use case -- you can ask me what chattr is. I also understand various hello/goodbye phrases.");
            botConfig.Conversations.Add(helpFAQ);

            var gitFAQ = new Conversation();

            gitFAQ.Name = "gitSample";
            gitFAQ.AddUtterance("what is github");
            gitFAQ.AddUtterance("whats github");
            gitFAQ.AddUtterance("define github");
            gitFAQ.AddUtterance("github");
            gitFAQ.AddUtterance("tell me about github");
            gitFAQ.AddResponse("GitHub brings together the world's largest community of developers to discover, share, and build better software.");
            botConfig.Conversations.Add(gitFAQ);

            var stackFAQ = new Conversation();

            stackFAQ.Name = "stackFAQ";
            stackFAQ.AddUtterance("tell me about the stack");
            stackFAQ.AddUtterance("what software stack is this");
            stackFAQ.AddUtterance("what is running this");
            stackFAQ.AddUtterance("what powers this application");
            stackFAQ.AddUtterance("what is powering this app");
            stackFAQ.AddResponse("This application is powered by C# -- ML.NET and Blazor!");
            botConfig.Conversations.Add(stackFAQ);

            //create greeting FAQ
            var greetingFAQ = new Conversation();

            greetingFAQ.Name = "greetingSample";
            greetingFAQ.AddUtterance("hello");
            greetingFAQ.AddUtterance("hi");
            greetingFAQ.AddUtterance("hi!");
            greetingFAQ.AddUtterance("hey");
            greetingFAQ.AddUtterance("good morning");
            greetingFAQ.AddUtterance("whats up");
            greetingFAQ.AddUtterance("how are you?");
            greetingFAQ.AddUtterance("Hi! How can I help you today?");
            greetingFAQ.AddResponse("Hi! How can I help you today?");
            greetingFAQ.AddResponse("Hey!");
            greetingFAQ.AddResponse("Hello. What can I do for you?");
            botConfig.Conversations.Add(greetingFAQ);

            //create farewell FAQ
            var farewellFAQ = new Conversation();

            farewellFAQ.Name = "farewellSample";
            farewellFAQ.AddUtterance("goodbye");
            farewellFAQ.AddUtterance("bye");
            farewellFAQ.AddUtterance("later");
            farewellFAQ.AddUtterance("see ya");
            farewellFAQ.AddUtterance("c ya");
            farewellFAQ.AddUtterance("lates");
            farewellFAQ.AddUtterance("Bye!");
            farewellFAQ.AddUtterance("ttyl");
            farewellFAQ.AddResponse("Take Care!");
            botConfig.Conversations.Add(farewellFAQ);

            //create csharp FAQ
            var csharpFAQ = new Conversation();

            csharpFAQ.Name = "chatterFAQ";
            csharpFAQ.AddUtterance("What is chattr");
            csharpFAQ.AddUtterance("Whats chattr");
            csharpFAQ.AddUtterance("tell me about chattr");
            csharpFAQ.AddResponse("chattr is a free and open source platform to build chatbots!");
            csharpFAQ.AddSynonym("chattr", "this platform");
            botConfig.Conversations.Add(csharpFAQ);

            //create custom conversation with two responses
            var weatherRequest = new Conversation();

            weatherRequest.Name           = "weatherRequest";
            weatherRequest.StartNode.Name = "weatherStart";

            //add utterances to trigger this intent
            weatherRequest.AddUtterance("Check the weather");
            weatherRequest.AddUtterance("Weather check");
            weatherRequest.AddUtterance("weather");
            weatherRequest.AddUtterance("Check Weather");

            //create reply action
            var firstReply = new ReplyAction();

            firstReply.AddResponse("The weather is 85 degrees in Florida");
            weatherRequest.Actions.Add(firstReply);
            weatherRequest.StartNode.LinkTo(firstReply);

            //create another reply
            var secondReply = new ReplyAction();

            secondReply.AddResponse("The weather is 70 degrees in New York");
            weatherRequest.Actions.Add(secondReply);
            firstReply.LinkTo(secondReply);

            botConfig.Conversations.Add(weatherRequest);



            //Showcase ability to conditionally check data, and ask/store what the user's color preference is.
            //On the second time, the bot will tell the stored data instead of asking for it
            var favColorConvo = new Conversation();

            favColorConvo.SetConversationName("favoriteColorPref");
            favColorConvo.SetStartActionName("favoriteColorPrefStart");
            favColorConvo.AddUtterances(new[] { "What color do I prefer?", "Ask me my favorite color", "Ask what my favorite color is", "Ask me my color preference" });

            //create input action when color is unknown
            var askForColorPreference = new InputAction();

            askForColorPreference.SetActionName("favoriteColor");
            askForColorPreference.AddResponse("Ok, tell me your color preference and I will store it between conversations.  What is your favorite color?  You can say 'red', 'blue', or 'green'.  I will not allow any other values.");
            askForColorPreference.EnableContextStorage(true, "colorpref");
            askForColorPreference.RequireValidation(true, new[] { "red", "blue", "green" });
            favColorConvo.AddAction(askForColorPreference);

            //create confirmation when color is unknown
            var confirmColorPreference = new ReplyAction();

            confirmColorPreference.SetActionName("replyPrefSet");
            confirmColorPreference.AddResponse("Ok, I now know your favorite color which is {colorpref}.  You can ask me this same question again and I will reply it back to you!");
            favColorConvo.AddAction(confirmColorPreference);

            //create confirmation reply when color is known
            var knownReply = new ReplyAction();

            knownReply.SetActionName("replyPrefKnown");
            knownReply.AddResponse("Ha! I remember you told my that your favorite color is {colorpref}.");
            favColorConvo.AddAction(knownReply);

            //create conditional check
            var performColorCheck = new IfAction();

            performColorCheck.SetActionName("colorCheck");
            favColorConvo.AddAction(performColorCheck);

            //Link all of the actions above together

            //Link Start > Conditional Check
            favColorConvo.LinkStartNodeTo(performColorCheck);

            //Conditional Check:
            // > Default to Input Action to get data
            // > If colorpref variable exists (this question was asked already) then skip to 'Known' Reply Node amd
            performColorCheck.DefaultTo(askForColorPreference);
            performColorCheck.Unless(IfTestType.ContextVariableExists, "", "colorpref", knownReply);

            //Link Input Action > 'Confirmation' Reply Node
            askForColorPreference.LinkTo(confirmColorPreference);

            //add this conversation to the collection
            botConfig.AddConversation(favColorConvo);


            //train a model based on the created configuration
            var modelName = Platform.AIService.Train(botConfig);

            botConfig.ModelFile = modelName;

            //save bot
            botConfig.Save();
        }
Example #3
0
 public BackwardReply(ReplyAction a)
 {
     Action = a;
 }
Example #4
0
 public static bool Is(BackwardReply reply, ReplyAction action)
 {
     return(reply != null && reply.Action == action);
 }
Example #5
0
 public BackwardReply()
 {
     Action = ReplyAction.None;
 }