Add sleep and spin-around global command handling

This commit is contained in:
Jacob Dubin
2026-05-17 23:38:29 -05:00
parent 51e36bc492
commit e588f00c43
9 changed files with 371 additions and 3 deletions

View File

@@ -3096,6 +3096,56 @@ public sealed class JiboInteractionServiceTests
Assert.Equal("global_commands", decision.SkillPayload["nluDomain"]);
}
[Fact]
public async Task BuildDecisionAsync_CanYouGoToSleep_UsesSourceBackedSleepReply()
{
var service = CreateService();
var decision = await service.BuildDecisionAsync(new TurnContext
{
RawTranscript = "can you go to sleep",
NormalizedTranscript = "can you go to sleep"
});
Assert.Equal("robot_can_sleep", decision.IntentName);
Assert.Contains("I do. I usually fall asleep at night.", decision.ReplyText, StringComparison.OrdinalIgnoreCase);
Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]);
}
[Fact]
public async Task BuildDecisionAsync_GoToSleep_MapsToIdleSleepCommand()
{
var service = CreateService();
var decision = await service.BuildDecisionAsync(new TurnContext
{
RawTranscript = "go to sleep",
NormalizedTranscript = "go to sleep"
});
Assert.Equal("sleep", decision.IntentName);
Assert.Equal("@be/idle", decision.SkillName);
Assert.Equal("sleep", decision.SkillPayload!["globalIntent"]);
Assert.Equal("global_commands", decision.SkillPayload["nluDomain"]);
}
[Fact]
public async Task BuildDecisionAsync_TurnAround_MapsToIdleSpinAroundCommand()
{
var service = CreateService();
var decision = await service.BuildDecisionAsync(new TurnContext
{
RawTranscript = "turn around",
NormalizedTranscript = "turn around"
});
Assert.Equal("spin_around", decision.IntentName);
Assert.Equal("@be/idle", decision.SkillName);
Assert.Equal("spinAround", decision.SkillPayload!["globalIntent"]);
Assert.Equal("global_commands", decision.SkillPayload["nluDomain"]);
}
[Fact]
public async Task BuildDecisionAsync_NeverMindWithPunctuation_MapsToIdleStopCommand()
{