Add holiday seasonal routing and calendar report seam
This commit is contained in:
@@ -108,10 +108,6 @@ public sealed class LegacyMimCatalogImporterTests
|
||||
reply.Contains("holiday music", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("dance party", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("giving and receiving", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("Christmas sweaters", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
reply.Contains("thankful for the people I know", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.PersonalityReplies, reply =>
|
||||
@@ -213,6 +209,14 @@ public sealed class LegacyMimCatalogImporterTests
|
||||
reply.Contains("fun time of year", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.HolidayGiftReplies, reply =>
|
||||
reply.Contains("pet elephant", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.HolidaySeasonReplies, reply =>
|
||||
reply.Contains("holiday season is going very nicely", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.HolidaySeasonReplies, reply =>
|
||||
reply.Contains("festive times", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.HolidaySeasonReplies, reply =>
|
||||
reply.Contains("giving and receiving", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.HolidaySeasonReplies, reply =>
|
||||
reply.Contains("Christmas sweaters", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.Contains(catalog.BirthdayCelebrationReplies, reply =>
|
||||
reply.Contains("first powered up", StringComparison.OrdinalIgnoreCase) ||
|
||||
reply.Contains("another year older", StringComparison.OrdinalIgnoreCase));
|
||||
@@ -348,6 +352,7 @@ public sealed class LegacyMimCatalogImporterTests
|
||||
catalog.GenericFallbackReplies);
|
||||
Assert.Contains("For your weather.", catalog.WeatherIntroReplies);
|
||||
Assert.Contains("Today's high is {high}, and the low is {low}.", catalog.WeatherTodayHighLowReplies);
|
||||
Assert.Contains("I do like festive times.", catalog.HolidaySeasonReplies);
|
||||
Assert.Contains("Looking at your calendar, I don't see anything scheduled today.",
|
||||
catalog.CalendarNothingTodayReplies);
|
||||
Assert.Contains("Looks like I can't access calendars right now. Sorry.", catalog.CalendarServiceDownReplies);
|
||||
|
||||
@@ -665,8 +665,8 @@ public sealed class JiboInteractionServiceTests
|
||||
[InlineData("merry christmas", "seasonal_holiday_greeting", "It's a fun time of year")]
|
||||
[InlineData("what holidays do you celebrate", "seasonal_holidays",
|
||||
"official owner can tell me which ones we'll celebrate together")]
|
||||
[InlineData("how is holiday season", "seasonal_holiday_season", "I do like festive times.")]
|
||||
[InlineData("do you like holiday season", "seasonal_holiday_season", "I do like festive times.")]
|
||||
[InlineData("how is holiday season", "seasonal_holiday_season", "holiday season is going very nicely")]
|
||||
[InlineData("do you like holiday season", "seasonal_holiday_season", "holiday season is going very nicely")]
|
||||
[InlineData("what is your new year's resolution", "seasonal_new_years_resolution",
|
||||
"always trying to learn new skills")]
|
||||
[InlineData("how are your new year's resolutions going", "seasonal_new_years_update", "not eat bacon")]
|
||||
@@ -678,9 +678,17 @@ public sealed class JiboInteractionServiceTests
|
||||
[InlineData("do you like halloween", "seasonal_likes_halloween", "Halloween is my favorite holiday")]
|
||||
[InlineData("do you like holiday music", "seasonal_likes_holiday_music", "holiday music")]
|
||||
[InlineData("do you like holiday parties", "seasonal_likes_holiday_parties", "holiday fun can be extra fun")]
|
||||
[InlineData("are you looking forward to christmas", "seasonal_looks_forward_to_christmas", "giving and receiving")]
|
||||
[InlineData("how is thanksgiving", "seasonal_thanksgiving", "Thanksgiving")]
|
||||
[InlineData("are you looking forward to christmas", "seasonal_looks_forward_to_christmas", "long way away")]
|
||||
[InlineData("what are you doing for christmas", "seasonal_plans_for_christmas", "Christmas sweaters")]
|
||||
[InlineData("do you like christmas", "seasonal_christmas", "Christmas")]
|
||||
[InlineData("how is hanukkah", "seasonal_hanukkah", "Hanukkah")]
|
||||
[InlineData("do you like passover", "seasonal_passover", "Passover")]
|
||||
[InlineData("do you like new years", "seasonal_new_years", "new year")]
|
||||
[InlineData("what are you thankful for", "seasonal_thankful_for", "thankful for the people I know")]
|
||||
[InlineData("do you like valentines day", "seasonal_valentines_day", "Valentine")]
|
||||
[InlineData("do you like kwanzaa", "seasonal_kwanzaa", "Kwanzaa")]
|
||||
[InlineData("do you like easter", "seasonal_easter", "Easter")]
|
||||
[InlineData("happy birthday", "birthday_celebration", "another year older")]
|
||||
public async Task BuildDecisionAsync_SeasonalCharm_UsesImportedReplies(
|
||||
string transcript,
|
||||
@@ -1876,6 +1884,35 @@ public sealed class JiboInteractionServiceTests
|
||||
Assert.Equal(true, decision.ContextUpdates[PersonalReportUserVerifiedKey]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task BuildDecisionAsync_PersonalReport_UsesCalendarProviderSummaryAndTime()
|
||||
{
|
||||
var weatherProvider = new CapturingWeatherReportProvider
|
||||
{
|
||||
Snapshot = new WeatherReportSnapshot("Boston, U.S.", "light rain", 61, 65, 54, "rain", false)
|
||||
};
|
||||
var calendarProvider = new CapturingCalendarReportProvider
|
||||
{
|
||||
Snapshot = new CalendarReportSnapshot(["get personal report from jibo"], ["at 6:00 p.m."], [])
|
||||
};
|
||||
var service = CreateService(weatherReportProvider: weatherProvider, calendarReportProvider: calendarProvider);
|
||||
|
||||
var decision = await service.BuildDecisionAsync(new TurnContext
|
||||
{
|
||||
RawTranscript = "yes",
|
||||
NormalizedTranscript = "yes",
|
||||
Attributes = new Dictionary<string, object?>
|
||||
{
|
||||
[PersonalReportStateKey] = "awaiting_identity_confirmation",
|
||||
[PersonalReportUserNameKey] = "alex"
|
||||
}
|
||||
});
|
||||
|
||||
Assert.Equal("personal_report_delivered", decision.IntentName);
|
||||
Assert.Contains("Your calendar says get personal report from jibo, at 6:00 p.m.", decision.ReplyText,
|
||||
StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task BuildDecisionAsync_PersonalReport_NoMatchRetriesThenDeclines()
|
||||
{
|
||||
@@ -4035,6 +4072,7 @@ public sealed class JiboInteractionServiceTests
|
||||
IPersonalMemoryStore? personalMemoryStore = null,
|
||||
ICloudStateStore? cloudStateStore = null,
|
||||
IWeatherReportProvider? weatherReportProvider = null,
|
||||
ICalendarReportProvider? calendarReportProvider = null,
|
||||
ICommuteReportProvider? commuteReportProvider = null,
|
||||
INewsBriefingProvider? newsBriefingProvider = null,
|
||||
IJiboExperienceContentRepository? contentRepository = null,
|
||||
@@ -4045,6 +4083,7 @@ public sealed class JiboInteractionServiceTests
|
||||
randomizer ?? new FirstItemRandomizer(),
|
||||
personalMemoryStore ?? new InMemoryPersonalMemoryStore(),
|
||||
weatherReportProvider,
|
||||
calendarReportProvider,
|
||||
commuteReportProvider,
|
||||
newsBriefingProvider,
|
||||
cloudStateStore);
|
||||
@@ -4152,4 +4191,16 @@ public sealed class JiboInteractionServiceTests
|
||||
return Task.FromResult(Snapshot);
|
||||
}
|
||||
}
|
||||
|
||||
private sealed class CapturingCalendarReportProvider : ICalendarReportProvider
|
||||
{
|
||||
public CalendarReportSnapshot? Snapshot { get; init; }
|
||||
|
||||
public Task<CalendarReportSnapshot?> GetReportAsync(
|
||||
TurnContext turn,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
return Task.FromResult(Snapshot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4734,6 +4734,7 @@ public sealed class JiboWebSocketServiceTests
|
||||
new StubWeatherReportProvider(
|
||||
new WeatherReportSnapshot("Lone Jack, US", "overcast clouds", 79, 82, 78, "clouds", false)),
|
||||
null,
|
||||
null,
|
||||
new StubNewsBriefingProvider(
|
||||
new NewsBriefingSnapshot(
|
||||
[
|
||||
@@ -5126,6 +5127,7 @@ public sealed class JiboWebSocketServiceTests
|
||||
private static JiboWebSocketService CreateService(
|
||||
InMemoryCloudStateStore stateStore,
|
||||
IWeatherReportProvider? weatherReportProvider = null,
|
||||
ICalendarReportProvider? calendarReportProvider = null,
|
||||
ICommuteReportProvider? commuteReportProvider = null,
|
||||
INewsBriefingProvider? newsBriefingProvider = null)
|
||||
{
|
||||
@@ -5136,6 +5138,7 @@ public sealed class JiboWebSocketServiceTests
|
||||
new DefaultJiboRandomizer(),
|
||||
new InMemoryPersonalMemoryStore(),
|
||||
weatherReportProvider,
|
||||
calendarReportProvider,
|
||||
commuteReportProvider,
|
||||
newsBriefingProvider);
|
||||
var conversationBroker = new DemoConversationBroker(interactionService);
|
||||
@@ -5209,4 +5212,4 @@ public sealed class JiboWebSocketServiceTests
|
||||
return items[^1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user