public StoryStep(IStoryFrame <T> storyFrame, bool isDialogResultCheckupStep) { this.StoryFrame = storyFrame; this.Message = storyFrame.Text; this.Actor = storyFrame.Actor; this.IsDialogResultCheckupStep = isDialogResultCheckupStep; }
private static void AssertSuggestions(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message) { var botStoryFrame = storyFrame as BotStoryFrame <IMessageActivity>; Assert.NotNull(botStoryFrame); Assert.Equal(botStoryFrame.Suggestions, message.SuggestedActions.Actions.Select(s => new KeyValuePair <string, object>(s.Title, s.Value))); }
private static void AssertUserFrameOption(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message, IReadOnlyList <string> options) { Assert.NotEmpty(options); var optionValue = options[storyFrame.OptionIndex]; Assert.Equal(optionValue, message.Text); }
private async Task ProcessUserFrameTextExact(IStoryFrame storyStoryFrame, CancellationToken cancellationToken = default(CancellationToken)) { // When user frame is being processed there should be no newly received messages from bot Assert.Empty(this.receivedMessages); await this.userBotMessengerService.GetOrCreateMessengerForUser(this.UserId) .SendUserToBotMessageAsync(storyStoryFrame.Text, cancellationToken); }
private void ProcessBotFrameTextMatchRegex(IStoryFrame storyFrame) { var message = this.receivedMessages.FirstOrDefault(); Assert.NotNull(message); Assert.Equal("message", message.Type); Assert.Matches(storyFrame.Text, message.Text); this.receivedMessages.Remove(message); }
private string GetUserStepMessage(IStoryFrame <IMessageActivity> frame) { switch (frame.ComparisonType) { case ComparisonType.Option: return(this.GetUserOptionMessage(frame)); default: return(frame.Text); } }
private static void ProcessBotFrameListPresent(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message) { Assert.NotNull(message); Assert.Equal(1, message.Attachments.Count); Assert.NotNull(message.Attachments[0].Content); var listJson = JObject.Parse(JsonConvert.SerializeObject(message.Attachments[0].Content)); if (storyFrame.ListPredicate != null) { Assert.True(storyFrame.ListPredicate(listJson), "List contains expected item"); } }
private static void ProcessBotFrameListPresent(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message) { Assert.NotNull(message); Assert.Equal(1, message.Attachments.Count); Assert.IsType <JObject>(message.Attachments[0].Content); var listJson = (JObject)message.Attachments[0].Content; if (storyFrame.ListPredicate != null) { Assert.True(storyFrame.ListPredicate(listJson), "List contains expected item"); } }
private string GetUserOptionMessage(IStoryFrame <IMessageActivity> frame) { if (this.conversationService.LatestOptions == null) { throw new MissingOptionsException(); } var index = frame.OptionIndex; if (index < 0 || this.conversationService.LatestOptions.Length <= index) { throw new OptionsIndexOutOfRangeException(index, this.conversationService.LatestOptions.Length); } return(this.conversationService.LatestOptions[index]); }
private void ProcessBotFrameTextExact(IStoryFrame storyFrame) { if (storyFrame == null) { throw new ArgumentNullException(nameof(storyFrame)); } this.RemoveTypingMessages(); var message = this.receivedMessages.FirstOrDefault(); Assert.NotNull(message); Assert.Equal("message", message.Type); Assert.Equal(storyFrame.Text, message.Text); this.receivedMessages.Remove(message); }
private async Task ProcessUserFrameOption(IStoryFrame storyFrame, CancellationToken cancellationToken = default(CancellationToken)) { // When user frame is being processed there should be no newly received messages from bot Assert.Empty(this.receivedMessages); Assert.NotEmpty(this.latestOptions); var optionValue = this.latestOptions[storyFrame.OptionIndex]; if (!string.IsNullOrEmpty(storyFrame.OptionOutputPlaceholder)) { this.outputValues.Add(storyFrame.OptionOutputPlaceholder, optionValue); } await this.userBotMessengerService.GetOrCreateMessengerForUser(this.UserId) .SendUserToBotMessageAsync(optionValue, cancellationToken); }
private void ProcessBotFrameListPresent(IStoryFrame storyFrame) { this.RemoveTypingMessages(); var message = this.receivedMessages.FirstOrDefault(); Assert.NotNull(message); Assert.Equal("list", message.AttachmentLayout); Assert.Equal(1, message.Attachments.Count); var listJson = (JObject)message.Attachments[0].Content; if (storyFrame.ListPredicate != null) { Assert.True(storyFrame.ListPredicate(listJson), "List contains expected item"); } this.latestOptions = listJson.SelectToken("buttons").Select(item => item["value"].ToString()).ToArray(); this.receivedMessages.Remove(message); }
public IMessageActivity Build(IStoryFrame <IMessageActivity> frame) { var text = this.GetUserStepMessage(frame); return(new Activity { Id = Guid.NewGuid().ToString(), Type = ActivityTypes.Message, From = new ChannelAccount { Id = ChannelId.User }, Text = text, Conversation = this.conversationService.Account, Recipient = new ChannelAccount { Id = ChannelId.Bot }, ServiceUrl = "InvalidServiceUrl", ChannelId = this.configuration.ChannelId, Attachments = Array.Empty <Attachment>(), Entities = Array.Empty <Entity>(), }); }
public IMessageActivity Build(IStoryFrame <IMessageActivity> frame) { return(new Activity { Id = Guid.NewGuid().ToString(), Type = ActivityTypes.ConversationUpdate, From = new ChannelAccount { Id = ChannelId.User }, Conversation = new ConversationAccount { Id = Guid.NewGuid().ToString() }, Recipient = new ChannelAccount { Id = ChannelId.Bot }, ServiceUrl = "InvalidServiceUrl", ChannelId = this.configuration.ChannelId, Attachments = Array.Empty <Attachment>(), Entities = Array.Empty <Entity>(), MembersAdded = this.configuration.ConversationUpdateAddedMembers .Select(x => new ChannelAccount(x)) .ToList(), }); }
public void AddStoryFrame(IStoryFrame storyFrame) { this.StoryFrames.Add(storyFrame); }
public StoryStep(IStoryFrame storyFrame) { this.StoryFrame = storyFrame; this.Message = storyFrame.Text; this.Actor = storyFrame.Actor; }
private static void ProcessBotFrameTextWithSuggestions(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message) { ProcessFrameTextExact(storyFrame, message.Type, message.Text); AssertSuggestions(storyFrame, message); }
private static void ProcessBotFrameTextMatchRegexWithSuggestions(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message) { ProcessBotFrameTextMatchRegex(storyFrame, message); AssertSuggestions(storyFrame, message); }
private static void ProcessBotFramePredicate(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message) { Assert.True(storyFrame.MessageActivityPredicate(message)); }
private static void ProcessBotFrameTextMatchRegex(IStoryFrame <IMessageActivity> storyFrame, IMessageActivity message) { Assert.NotNull(message); Assert.Equal(MessageType, message.Type); Assert.Matches(storyFrame.Text, message.Text); }
public async Task <IMessageActivity> GetStepMessageActivity(IStoryFrame frame) { var message = this.GetUserStepMessage(frame); return(this.conversationService.GetToBotActivity(message)); }
public IMessageActivity GetStepMessageActivity(IStoryFrame <IMessageActivity> frame) { var activityBuilder = frame.ActivityBuilder ?? new MessageActivityBuilder(this.conversationService, this.configuration); return(activityBuilder.Build(frame)); }
private static void ProcessFrameTextExact(IStoryFrame <IMessageActivity> storyFrame, string messageType, string message) { Assert.NotNull(message); Assert.Equal(MessageType, messageType); Assert.Equal(storyFrame.Text, message); }
public T Build(IStoryFrame <T> frame) { return(this.activity); }