Close memory recall turns so recognition does not keep mic open

This commit is contained in:
Jacob Dubin
2026-05-14 21:58:00 -05:00
parent 5718edecaf
commit 20b84632ec
8 changed files with 39534 additions and 0 deletions

View File

@@ -76,6 +76,16 @@ public sealed class DemoConversationBroker(JiboInteractionService interactionSer
return intentName switch
{
"cloud_version" => false,
"memory_set_name" => false,
"memory_get_name" => false,
"memory_set_birthday" => false,
"memory_get_birthday" => false,
"memory_set_important_date" => false,
"memory_get_important_date" => false,
"memory_set_preference" => false,
"memory_get_preference" => false,
"memory_set_affinity" => false,
"memory_get_affinity" => false,
"word_of_the_day" => false,
"word_of_the_day_guess" => false,
"radio" => false,

View File

@@ -3955,6 +3955,50 @@ public sealed class JiboWebSocketServiceTests
Assert.False(session.Metadata.ContainsKey("greetingsLastProactiveUtc"));
}
[Fact]
public async Task WhoAmI_DoesNotLeaveFollowUpOpen()
{
var token = _store.IssueRobotToken("identity-close-token");
await _service.HandleMessageAsync(new WebSocketMessageEnvelope
{
HostName = "neo-hub.jibo.com",
Path = "/listen",
Kind = "neo-hub-listen",
Token = token,
Text = """{"type":"LISTEN","transID":"trans-identity-close","data":{"rules":["launch"]}}"""
});
await _service.HandleMessageAsync(new WebSocketMessageEnvelope
{
HostName = "neo-hub.jibo.com",
Path = "/listen",
Kind = "neo-hub-listen",
Token = token,
Text = """{"type":"CONTEXT","transID":"trans-identity-close","data":{"runtime":{"perception":{"speaker":"person-1"},"loop":{"users":[{"id":"person-1","firstName":"erin"}]}}}}"""
});
var replies = await _service.HandleMessageAsync(new WebSocketMessageEnvelope
{
HostName = "neo-hub.jibo.com",
Path = "/listen",
Kind = "neo-hub-listen",
Token = token,
Text = """{"type":"CLIENT_ASR","transID":"trans-identity-close","data":{"text":"who am i"}}"""
});
Assert.Equal(3, replies.Count);
using (var listenPayload = JsonDocument.Parse(replies[0].Text!))
{
Assert.Equal("memory_get_name", listenPayload.RootElement.GetProperty("data").GetProperty("nlu").GetProperty("intent").GetString());
}
var session = _store.FindSessionByToken(token);
Assert.NotNull(session);
Assert.False(session.FollowUpOpen);
Assert.False(session.TurnState.AwaitingTurnCompletion);
}
[Fact]
public async Task ClientAsrPersonalReport_StateMachinePersistsAcrossTurns()
{