version 18 fixes from testing and some documentation around leaks and untested paths, future prep
This commit is contained in:
@@ -57,6 +57,8 @@ public sealed class JiboInteractionService(
|
||||
"alarm_menu" => BuildClockLaunchDecision("alarm", "Opening the alarm."),
|
||||
"timer_delete" => BuildClockLaunchDecision("timer_delete", "timer", "delete", "Canceling the timer."),
|
||||
"alarm_delete" => BuildClockLaunchDecision("alarm_delete", "alarm", "delete", "Canceling the alarm."),
|
||||
"timer_cancel" => BuildClockLaunchDecision("timer_cancel", "timer", "cancel", "Canceling the timer."),
|
||||
"alarm_cancel" => BuildClockLaunchDecision("alarm_cancel", "alarm", "cancel", "Canceling the alarm."),
|
||||
"timer_value" => BuildTimerValueDecision(lowered, isTimerValueTurn, clientEntities),
|
||||
"alarm_value" => BuildAlarmValueDecision(lowered, isAlarmValueTurn, referenceLocalTime, clientEntities),
|
||||
"timer_clarify" => BuildClockClarifyDecision("timer_clarify", "timer", "How long should I set the timer for?"),
|
||||
@@ -218,6 +220,19 @@ public sealed class JiboInteractionService(
|
||||
return "alarm_value";
|
||||
}
|
||||
|
||||
if (IsCancelRequest(clientIntent, loweredTranscript))
|
||||
{
|
||||
if (isAlarmValueTurn)
|
||||
{
|
||||
return "alarm_cancel";
|
||||
}
|
||||
|
||||
if (isTimerValueTurn)
|
||||
{
|
||||
return "timer_cancel";
|
||||
}
|
||||
}
|
||||
|
||||
if ((string.Equals(clientIntent, "start", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(clientIntent, "set", StringComparison.OrdinalIgnoreCase)) &&
|
||||
clientEntities.TryGetValue("domain", out var startDomain))
|
||||
@@ -1098,6 +1113,13 @@ public sealed class JiboInteractionService(
|
||||
"alarm for");
|
||||
}
|
||||
|
||||
private static bool IsCancelRequest(string? clientIntent, string loweredTranscript)
|
||||
{
|
||||
return string.Equals(clientIntent, "cancel", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(clientIntent, "stop", StringComparison.OrdinalIgnoreCase) ||
|
||||
loweredTranscript is "cancel" or "stop" or "never mind" or "nevermind";
|
||||
}
|
||||
|
||||
private static bool IsClockTimerValueTurn(
|
||||
IReadOnlyList<string> clientRules,
|
||||
IReadOnlyList<string> listenRules)
|
||||
|
||||
@@ -511,6 +511,8 @@ public sealed class WebSocketTurnFinalizationService(
|
||||
!string.Equals(plan.IntentName, "clock_menu", StringComparison.OrdinalIgnoreCase) &&
|
||||
!string.Equals(plan.IntentName, "timer_menu", StringComparison.OrdinalIgnoreCase) &&
|
||||
!string.Equals(plan.IntentName, "alarm_menu", StringComparison.OrdinalIgnoreCase) &&
|
||||
!string.Equals(plan.IntentName, "timer_cancel", StringComparison.OrdinalIgnoreCase) &&
|
||||
!string.Equals(plan.IntentName, "alarm_cancel", StringComparison.OrdinalIgnoreCase) &&
|
||||
!string.Equals(plan.IntentName, "timer_clarify", StringComparison.OrdinalIgnoreCase) &&
|
||||
!string.Equals(plan.IntentName, "alarm_clarify", StringComparison.OrdinalIgnoreCase) &&
|
||||
!string.Equals(plan.IntentName, "timer_value", StringComparison.OrdinalIgnoreCase) &&
|
||||
@@ -794,6 +796,8 @@ public sealed class WebSocketTurnFinalizationService(
|
||||
private static bool IsLocalNoInputRule(string rule)
|
||||
{
|
||||
return string.Equals(rule, "clock/alarm_timer_okay", StringComparison.OrdinalIgnoreCase) ||
|
||||
IsClockValueRule(rule) ||
|
||||
IsGalleryPreviewRule(rule) ||
|
||||
IsConstrainedYesNoRule(rule);
|
||||
}
|
||||
|
||||
@@ -803,6 +807,11 @@ public sealed class WebSocketTurnFinalizationService(
|
||||
string.Equals(rule, "clock/timer_set_value", StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
private static bool IsGalleryPreviewRule(string rule)
|
||||
{
|
||||
return string.Equals(rule, "gallery/gallery_preview", StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
private static bool IsConstrainedYesNoRule(string rule)
|
||||
{
|
||||
return string.Equals(rule, "clock/alarm_timer_change", StringComparison.OrdinalIgnoreCase) ||
|
||||
|
||||
Reference in New Issue
Block a user