예제 #1
0
 public async Task UpdateTimeline(moodTrialDB timeline)
 {
     await this.timelineTable.UpdateAsync(timeline);
 }
예제 #2
0
        /// <summary>
        /// POST: api/Messages
        /// Receive a message from a user and reply to it
        /// </summary>
        public async Task <HttpResponseMessage> Post([FromBody] Activity activity)
        {
            if (activity.Type == ActivityTypes.Message)
            {
                ConnectorClient connector   = new ConnectorClient(new Uri(activity.ServiceUrl));
                StateClient     stateClient = activity.GetStateClient();
                BotData         userData    = await stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id);


                string     StockRateString;
                RootObject StLUIS = await GetEntityFromLUIS(activity.Text);

                if (StLUIS.intents.Count() > 0)
                {
                    switch (StLUIS.intents[0].intent)
                    {
                    case "aud conversion":
                        convertFound    = true;
                        StockRateString = await GetConversion(StLUIS.entities[0].entity);

                        break;

                    case "gbp convert":
                        convertFound    = true;
                        StockRateString = await GetConversion(StLUIS.entities[0].entity);

                        break;

                    default:
                        StockRateString = "Sorry, I am not getting you...";
                        break;
                    }
                }
                else
                {
                    StockRateString = "Sorry, I am not getting you...";
                }

                if (convertFound == true)
                {
                    Activity replyToConversation = activity.CreateReply("The current exchange rate for this country compared to $1 NZD is:");
                    replyToConversation.Recipient   = activity.From;
                    replyToConversation.Type        = "message";
                    replyToConversation.Attachments = new List <Attachment>();
                    List <CardImage> cardImages = new List <CardImage>();
                    cardImages.Add(new CardImage(url: "http://arkansascivpro.com/wp-content/uploads/2012/02/Fotolia_429688_XS-dollar-symbol-gold-300x300.jpg"));

                    List <CardAction> cardButtons = new List <CardAction>();
                    CardAction        plButton    = new CardAction()
                    {
                        Value = "http://www.xe.com/currencyconverter/",
                        Type  = "openUrl",
                        Title = "Click here for a converter."
                    };
                    cardButtons.Add(plButton);
                    ThumbnailCard plCard = new ThumbnailCard()
                    {
                        Title    = result,
                        Subtitle = "",
                        Images   = cardImages,
                        Buttons  = cardButtons
                    };
                    Attachment plAttachment = plCard.ToAttachment();
                    replyToConversation.Attachments.Add(plAttachment);
                    await connector.Conversations.SendToConversationAsync(replyToConversation);

                    return(Request.CreateResponse(HttpStatusCode.OK));
                }

                string endOutput = "Hello, welcome to Easy Bank. Please tell us which country's exchange rate you would like to know.";

                if (userData.GetProperty <bool>("SentGreeting"))
                {
                    endOutput = "Hello again";
                }

                else
                {
                    userData.SetProperty <bool>("SentGreeting", true);
                    await stateClient.BotState.SetUserDataAsync(activity.ChannelId, activity.From.Id, userData);
                }



                bool isBankRequest = true;
                var  userMessage   = activity.Text;

                if (userMessage.ToLower().Contains("clear"))
                {
                    endOutput = "User data cleared";
                    await stateClient.BotState.DeleteStateForUserAsync(activity.ChannelId, activity.From.Id);

                    isBankRequest = false;
                }

                if (userMessage.ToLower().Contains("quit"))
                {
                    endOutput = "Thank You for visiting Easy Contoso Bank. Have a great day";
                    await stateClient.BotState.DeleteStateForUserAsync(activity.ChannelId, activity.From.Id);

                    isBankRequest = false;
                }
                //Activity reply = activity.CreateReply(endOutput);
                //await connector.Conversations.ReplyToActivityAsync(reply);


                //if (userMessage.ToLower().Substring(0, 8).Equals("set name"))
                //{
                //    string myName = "Hi " + userMessage.Substring(9) + " .";
                //    userData.SetProperty<string>("HomeCity", myName);
                //    await stateClient.BotState.SetUserDataAsync(activity.ChannelId, activity.From.Id, userData);
                //    endOutput = myName;
                //    isBankRequest = false;
                //}


                //if (userMessage.ToLower().Equals("name"))
                //{
                //    string myName = userData.GetProperty<string>("HomeCity");
                //    if (myName == null)
                //    {
                //        endOutput = "Home City not assigned";
                //        isBankRequest = false;
                //    }
                //    else
                //    {
                //        activity.Text = myName;
                //    }
                //}

                if (userMessage.ToLower().Equals("easy bank"))
                {
                    Activity replyToConversation = activity.CreateReply("Bank Details");
                    replyToConversation.Recipient   = activity.From;
                    replyToConversation.Type        = "message";
                    replyToConversation.Attachments = new List <Attachment>();
                    List <CardImage> cardImages = new List <CardImage>();
                    cardImages.Add(new CardImage(url: "http://arkansascivpro.com/wp-content/uploads/2012/02/Fotolia_429688_XS-dollar-symbol-gold-300x300.jpg"));
                    List <CardAction> cardButtons = new List <CardAction>();
                    CardAction        plButton    = new CardAction()
                    {
                        Value = "http://asb.co.nz",
                        Type  = "openUrl",
                        Title = "Easy Bank Website"
                    };
                    cardButtons.Add(plButton);
                    ThumbnailCard plCard = new ThumbnailCard()
                    {
                        Title   = "Visit Easy Bank",
                        Images  = cardImages,
                        Buttons = cardButtons
                    };
                    Attachment plAttachment = plCard.ToAttachment();
                    replyToConversation.Attachments.Add(plAttachment);
                    await connector.Conversations.SendToConversationAsync(replyToConversation);

                    return(Request.CreateResponse(HttpStatusCode.OK));
                }

                if (userMessage.ToLower().Contains("get"))
                {
                    List <moodTrialDB> timelines = await AzureManager.AzureManagerInstance.GetTimelines();

                    foreach (moodTrialDB t in timelines)
                    {
                        if (userMessage.ToLower().Substring(4) == t.Name.ToLower())
                        {
                            endOutput     = " Name [" + t.Name + "]" + ", Cheque = " + t.Cheque;
                            isBankRequest = false;
                        }
                    }
                }



                if (userMessage.ToLower().Equals("new timeline"))
                {
                    moodTrialDB timeline = new moodTrialDB()
                    {
                        Name    = "Jack",
                        Cheque  = "500",
                        Savings = "1000",
                        Date    = DateTime.Now
                    };

                    await AzureManager.AzureManagerInstance.AddTimeline(timeline);

                    isBankRequest = false;

                    endOutput = "New timeline added [" + timeline.Date + "]";
                }


                //isBankRequest = false; endOutput = "We have deleted " + t.Name + "'s account";

                if (userMessage.ToLower().Contains("del"))
                {
                    List <moodTrialDB> timelines = await AzureManager.AzureManagerInstance.GetTimelines();

                    foreach (moodTrialDB timeline in timelines)
                    {
                        if (userMessage.ToLower().Substring(4) == timeline.Name.ToLower())
                        {
                            await AzureManager.AzureManagerInstance.DeleteTimeline(timeline);

                            endOutput     = " timeline deleted [" + timeline.Date + "]";
                            isBankRequest = false;
                        }
                    }
                }

                if (userMessage.ToLower().Contains("update"))
                {
                    string[]           amount1   = userMessage.Split(' ');
                    var                amount    = amount1[3];
                    var                name      = amount1[1] + " " + amount1[2];
                    List <moodTrialDB> timelines = await AzureManager.AzureManagerInstance.GetTimelines();

                    foreach (moodTrialDB timeline in timelines)
                    {
                        if (name.ToLower() == timeline.Name.ToLower())
                        {
                            timeline.Cheque = amount;
                            await AzureManager.AzureManagerInstance.UpdateTimeline(timeline);

                            endOutput     = " timeline update [" + timeline.Date + "]";
                            isBankRequest = false;
                        }
                    }
                }



                //if (userMessage.ToLower().Contains("currency rate"))
                //{


                //    Activity replyToConversation = activity.CreateReply("The current exchange rate for this country compared to $1 NZD is:");
                //    replyToConversation.Recipient = activity.From;
                //    replyToConversation.Type = "message";
                //    replyToConversation.Attachments = new List<Attachment>();
                //    List<CardImage> cardImages = new List<CardImage>();
                //    cardImages.Add(new CardImage(url: "https://<ImageUrl1>"));
                //    cardImages.Add(new CardImage(url: "https://<ImageUrl2>"));
                //    List<CardAction> cardButtons = new List<CardAction>();
                //    CardAction plButton = new CardAction()
                //    {
                //        Value = "http://www.xe.com/currencyconverter/",
                //        Type = "openUrl",
                //        Title = "Click here for a converter."
                //    };
                //    cardButtons.Add(plButton);
                //    HeroCard plCard = new HeroCard()
                //    {
                //        Title = result,
                //        Subtitle = "",
                //        Images = cardImages,
                //        Buttons = cardButtons
                //    };
                //    Attachment plAttachment = plCard.ToAttachment();
                //    replyToConversation.Attachments.Add(plAttachment);
                //    var reply1 = await connector.Conversations.SendToConversationAsync(replyToConversation);
                //}



                Activity reply = activity.CreateReply(endOutput);
                await connector.Conversations.ReplyToActivityAsync(reply);

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            else
            {
                HandleSystemMessage(activity);
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);

            return(response);
        }
예제 #3
0
 public async Task AddTimeline(moodTrialDB timeline)
 {
     await this.timelineTable.InsertAsync(timeline);
 }