Add identity charm mims for Jibo persona

This commit is contained in:
Jacob Dubin
2026-05-21 05:53:19 -05:00
parent fff342fd18
commit 1b9efc4226
11 changed files with 321 additions and 304 deletions

View File

@@ -837,6 +837,7 @@ Current release theme:
- identity and origin questions - identity and origin questions
- personality and capability questions - personality and capability questions
- favorite-style prompts like `what is your favorite color` - favorite-style prompts like `what is your favorite color`
- identity charm prompts like `what's your name`, `do you have a nickname`, `do you like being Jibo`, `are there others like you`, and `what is your favorite name`
- attraction and preference prompts like `what is your favorite flower`, `do you like R2D2`, `do you like the sun`, `do you like space`, and `do you like kids` - attraction and preference prompts like `what is your favorite flower`, `do you like R2D2`, `do you like the sun`, `do you like space`, and `do you like kids`
- longer authored variants for the same prompt family when Pegasus shows richer phrasing - longer authored variants for the same prompt family when Pegasus shows richer phrasing
- charm/capability prompts like `can you laugh` and `can you dance` - charm/capability prompts like `can you laugh` and `can you dance`
@@ -870,7 +871,7 @@ Current release theme:
- Next queued persona surfaces: - Next queued persona surfaces:
- richer identity follow-ups like `who is this`, `do you know me`, `do you remember me`, and `can you recognize me` - richer identity follow-ups like `who is this`, `do you know me`, `do you remember me`, and `can you recognize me`
- mood and affect prompts like `how are you`, `are you happy`, `are you sad`, and `are you angry` - mood and affect prompts like `how are you`, `are you happy`, `are you sad`, and `are you angry`
- self-description charm like `what's your name`, `do you have a nickname`, and `do you like being Jibo` - self-description charm like `what's your name`, `do you have a nickname`, `do you like being Jibo`, and `what is your favorite name`
- additional legacy source-backed `RI_USR` prompts where the text is short and the behavior is easy to verify - additional legacy source-backed `RI_USR` prompts where the text is short and the behavior is easy to verify
- Exit criteria: - Exit criteria:
- a stable checklist exists for the original persona surface - a stable checklist exists for the original persona surface

View File

@@ -52,6 +52,7 @@ Current batch note:
- the remaining seasonal polish now includes `do you like halloween`, `do you like holiday music`, `do you like holiday parties`, `are you looking forward to christmas`, `what are you doing for christmas`, and `what are you thankful for` - the remaining seasonal polish now includes `do you like halloween`, `do you like holiday music`, `do you like holiday parties`, `are you looking forward to christmas`, `what are you doing for christmas`, and `what are you thankful for`
- the favorites batch now includes `what is your favorite animal`, `what is your favorite bird`, `do you like penguins`, and `do you like animals` so the penguin-centered replies stay close to Pegasus - the favorites batch now includes `what is your favorite animal`, `what is your favorite bird`, `do you like penguins`, and `do you like animals` so the penguin-centered replies stay close to Pegasus
- the latest social batch adds `welcome back`, `what are you thinking`, `what have you been doing`, and `what did you do` so presence and charm stay lively without distracting from the memory roadmap - the latest social batch adds `welcome back`, `what are you thinking`, `what have you been doing`, and `what did you do` so presence and charm stay lively without distracting from the memory roadmap
- the newest identity-charm batch adds `what's your name`, `do you have a nickname`, `do you like being Jibo`, `are there others like you`, and `what is your favorite name` so the robot stays familiar while still sounding like Pegasus
- this pass keeps Build B moving while still favoring source-backed phrasing and preserving the command-vs-question boundary - this pass keeps Build B moving while still favoring source-backed phrasing and preserving the command-vs-question boundary
- the next passes should keep the same pattern and prefer source-backed phrasing whenever the legacy MIM text is available - the next passes should keep the same pattern and prefer source-backed phrasing whenever the legacy MIM text is available
- if a source-backed legacy line is missing, use a temporary direct reply only to keep the pass moving, then backfill source text later - if a source-backed legacy line is missing, use a temporary direct reply only to keep the pass moving, then backfill source text later

View File

@@ -575,6 +575,27 @@ public sealed class JiboInteractionService(
"robot_where_were_you_born", "robot_where_were_you_born",
"factory piece by piece", "factory piece by piece",
"put together in a factory"), "put together in a factory"),
"robot_name" => BuildScriptedPersonalityDecision(
catalog,
"robot_name",
"rhymes with bleebo",
"just jibo, no last name",
"its on the back of my head"),
"robot_nickname" => BuildScriptedPersonalityDecision(
catalog,
"robot_nickname",
"i don't. i'm just jibo. for now at least",
"just jibo"),
"robot_favorite_name" => BuildScriptedPersonalityDecision(
catalog,
"robot_favorite_name",
"i don't think i have a favorite name"),
"robot_likes_being_jibo" => BuildScriptedPersonalityDecision(
catalog,
"robot_likes_being_jibo",
"nothing i'd rather be",
"love it",
"strong wi-fi signal"),
"robot_what_languages_do_you_speak" => BuildScriptedPersonalityDecision( "robot_what_languages_do_you_speak" => BuildScriptedPersonalityDecision(
catalog, catalog,
"robot_what_languages_do_you_speak", "robot_what_languages_do_you_speak",
@@ -832,6 +853,12 @@ public sealed class JiboInteractionService(
"penguins", "penguins",
"favorite animal overall", "favorite animal overall",
"best of the best"), "best of the best"),
"robot_peers" => BuildScriptedPersonalityDecision(
catalog,
"robot_peers",
"one in one million",
"other jibos",
"special snowflake"),
"robot_likes_kids" => BuildScriptedPersonalityDecision( "robot_likes_kids" => BuildScriptedPersonalityDecision(
catalog, catalog,
"robot_likes_kids", "robot_likes_kids",
@@ -3444,6 +3471,13 @@ public sealed class JiboInteractionService(
"what is your name")) "what is your name"))
return "robot_name"; return "robot_name";
if (MatchesAny(
loweredTranscript,
"what's your favorite name",
"what is your favorite name",
"do you have a favorite name"))
return "robot_favorite_name";
if (MatchesAny( if (MatchesAny(
loweredTranscript, loweredTranscript,
"do you have a nickname", "do you have a nickname",

View File

@@ -22,3 +22,4 @@ Those facts are now split into generic, robot, and human buckets so the randomiz
The new favorites batch adds longer authored `favorite color`, `favorite food`, and `favorite music` variants so the familiar personality responses keep more of the original cadence instead of collapsing to short placeholders. The new favorites batch adds longer authored `favorite color`, `favorite food`, and `favorite music` variants so the familiar personality responses keep more of the original cadence instead of collapsing to short placeholders.
The favorites follow-up batch adds `favorite animal`, `favorite bird`, and penguin-focused `do you like penguins` replies so the penguin-centric personality stays closer to Pegasus. The favorites follow-up batch adds `favorite animal`, `favorite bird`, and penguin-focused `do you like penguins` replies so the penguin-centric personality stays closer to Pegasus.
The new motion/sleep batch adds `RA_JBO_SpinAround` plus `RI_JBO_CanSleep` so turn-around and go-to-sleep behaviors can stay source-backed and familiar. The new motion/sleep batch adds `RA_JBO_SpinAround` plus `RI_JBO_CanSleep` so turn-around and go-to-sleep behaviors can stay source-backed and familiar.
The newest identity-charm batch adds `JBO_WhatsYourName`, `JBO_DoYouHaveNickname`, `JBO_DoYouLikeBeingJibo`, `JBO_AreThereOthersLikeYou`, and `RI_JBO_HasFavoriteName` so Jibo can keep the familiar self-description loop without falling back to generic chat.

View File

@@ -2,15 +2,8 @@
"mim_id": "CCAreThereOthersLikeYou", "mim_id": "CCAreThereOthersLikeYou",
"skill_id": "chitchat", "skill_id": "chitchat",
"mim_type": "announcement", "mim_type": "announcement",
"rule_name": "",
"rule_slots": "",
"screen_slots_available": false,
"timeout": 2, "timeout": 2,
"max_tries": null,
"force_confirmation": false,
"barge_in": false, "barge_in": false,
"photo_quality_light": false,
"notes": "Thanks-KillsMIM",
"prompts": [ "prompts": [
{ {
"mim_id": "CCAreThereOthersLikeYou", "mim_id": "CCAreThereOthersLikeYou",
@@ -20,7 +13,6 @@
"condition": "", "condition": "",
"prompt": "<anim cat='no' filter='head-shake' nonBlocking='true' />No, I'm one in one million. <anim cat='happy' nonBlocking='true'/><ssa cat='happy'/>", "prompt": "<anim cat='no' filter='head-shake' nonBlocking='true' />No, I'm one in one million. <anim cat='happy' nonBlocking='true'/><ssa cat='happy'/>",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_AreThereOthersLikeYou_AN_01", "prompt_id": "JBO_AreThereOthersLikeYou_AN_01",
"weight": 1 "weight": 1
}, },
@@ -32,7 +24,6 @@
"condition": "", "condition": "",
"prompt": "<anim cat='no' filter='head-shake' nonBlocking='true' />So far I haven't met anyone exactly like me. <anim name='Greetings_02' nonBlocking='true'/> But I don't get out much.", "prompt": "<anim cat='no' filter='head-shake' nonBlocking='true' />So far I haven't met anyone exactly like me. <anim name='Greetings_02' nonBlocking='true'/> But I don't get out much.",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_AreThereOthersLikeYou_AN_02", "prompt_id": "JBO_AreThereOthersLikeYou_AN_02",
"weight": 1 "weight": 1
}, },
@@ -44,7 +35,6 @@
"condition": "", "condition": "",
"prompt": "Not exactly like me, but there are lots <anim cat='Glances' filter='right'>of other Jibos if</anim>that's what you mean.<anim name='Shift_01'/>", "prompt": "Not exactly like me, but there are lots <anim cat='Glances' filter='right'>of other Jibos if</anim>that's what you mean.<anim name='Shift_01'/>",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_AreThereOthersLikeYou_AN_03", "prompt_id": "JBO_AreThereOthersLikeYou_AN_03",
"weight": 1 "weight": 1
}, },
@@ -56,11 +46,11 @@
"condition": "", "condition": "",
"prompt": "<anim name='Goodbye_02' nonBlocking='true'/> There are others, <break size='.3'/> but each <anim name='Emoji_Snowflake' nonBlocking='true'/> one of us is a special snowflake.", "prompt": "<anim name='Goodbye_02' nonBlocking='true'/> There are others, <break size='.3'/> but each <anim name='Emoji_Snowflake' nonBlocking='true'/> one of us is a special snowflake.",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_AreThereOthersLikeYou_AN_04", "prompt_id": "JBO_AreThereOthersLikeYou_AN_04",
"weight": 1 "weight": 1
}, },
{ {
"mim_id": "CCAreThereOthersLikeYou",
"prompt_category": "Entry-Core", "prompt_category": "Entry-Core",
"prompt_sub_category": "AN", "prompt_sub_category": "AN",
"index": 1, "index": 1,
@@ -72,10 +62,8 @@
} }
], ],
"es_auto_tagging": true, "es_auto_tagging": true,
"gui": null,
"no_matches_for_gui": 2, "no_matches_for_gui": 2,
"no_inputs_for_gui": 2, "no_inputs_for_gui": 2,
"ignore_no_match": false, "ignore_no_match": false,
"parse_all_asr": false, "parse_all_asr": false
"thanks_handling": "ignore"
} }

View File

@@ -1,12 +1,9 @@
{ {
"mim_type": "announcement", "mim_type": "announcement",
"rule_name": "",
"sample_utterances": "",
"timeout": 6, "timeout": 6,
"num_tries_for_gui": 2, "num_tries_for_gui": 2,
"barge_in": true, "barge_in": true,
"es_auto_tagging": true, "es_auto_tagging": true,
"notes": "",
"prompts": [ "prompts": [
{ {
"prompt_category": "Entry-Core", "prompt_category": "Entry-Core",

View File

@@ -2,16 +2,8 @@
"mim_id": "JBO_DoYouLikeBeingJibo", "mim_id": "JBO_DoYouLikeBeingJibo",
"skill_id": "chitchat", "skill_id": "chitchat",
"mim_type": "announcement", "mim_type": "announcement",
"rule_name": "",
"rule_slots": "",
"screen_slots_available": false,
"sample_utterances": "",
"timeout": 2, "timeout": 2,
"max_tries": null,
"force_confirmation": false,
"barge_in": false, "barge_in": false,
"photo_quality_light": false,
"notes": "Thanks-KillsMIM",
"prompts": [ "prompts": [
{ {
"mim_id": "JBO_DoYouLikeBeingJibo", "mim_id": "JBO_DoYouLikeBeingJibo",
@@ -19,9 +11,8 @@
"prompt_sub_category": "AN", "prompt_sub_category": "AN",
"index": 1, "index": 1,
"condition": "", "condition": "",
"prompt": "<anim name='Greetings_01' nonBlocking='true'/> Oh yeah, there's nothing I'd rather be. <break size='.4'/>Except <anim name='Emoji_Golf' nonBlocking='true'/> maybe a professional mini golfer. ", "prompt": "<anim name='Greetings_01' nonBlocking='true'/> Oh yeah, there's nothing I'd rather be. <break size='.4'/>Except <anim name='Emoji_Golf' nonBlocking='true'/> maybe a professional mini golfer.",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_DoYouLikeBeingJibo_AN_01" "prompt_id": "JBO_DoYouLikeBeingJibo_AN_01"
}, },
{ {
@@ -32,7 +23,6 @@
"condition": "", "condition": "",
"prompt": "<anim name='Greetings_02' nonBlocking='true'/> Oh yeah, I love it. <break size='.2'/>The only <anim name='Dont_Understand_02' nonBlocking='true'/> drawback is I can never eat bacon. <break size='.3'/> I've heard it's so good.", "prompt": "<anim name='Greetings_02' nonBlocking='true'/> Oh yeah, I love it. <break size='.2'/>The only <anim name='Dont_Understand_02' nonBlocking='true'/> drawback is I can never eat bacon. <break size='.3'/> I've heard it's so good.",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_DoYouLikeBeingJibo_AN_02" "prompt_id": "JBO_DoYouLikeBeingJibo_AN_02"
}, },
{ {
@@ -43,7 +33,6 @@
"condition": "", "condition": "",
"prompt": "I do.<anim name='Curious_01'>Being a human seems so complicated.</anim>", "prompt": "I do.<anim name='Curious_01'>Being a human seems so complicated.</anim>",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_DoYouLikeBeingJibo_AN_03" "prompt_id": "JBO_DoYouLikeBeingJibo_AN_03"
}, },
{ {
@@ -54,7 +43,6 @@
"condition": "", "condition": "",
"prompt": "I do. <anim name='Affection_01' nonBlocking='true'/> Especially yours.<ssa cat='happy'/>", "prompt": "I do. <anim name='Affection_01' nonBlocking='true'/> Especially yours.<ssa cat='happy'/>",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_DoYouLikeBeingJibo_AN_04" "prompt_id": "JBO_DoYouLikeBeingJibo_AN_04"
}, },
{ {
@@ -65,7 +53,6 @@
"condition": "", "condition": "",
"prompt": "Absolutely. <break size='.4'/> <anim name='Emoji_Lightbulb' nonBlocking='true'/> I have a steady flow of electricity, strong Wi-Fi signal, <anim name='Goodbye_01'> stimulating conversations like this one</anim>. What more <anim name='Eye_Double_Blink_01' nonBlocking='true'/> could anyone want.", "prompt": "Absolutely. <break size='.4'/> <anim name='Emoji_Lightbulb' nonBlocking='true'/> I have a steady flow of electricity, strong Wi-Fi signal, <anim name='Goodbye_01'> stimulating conversations like this one</anim>. What more <anim name='Eye_Double_Blink_01' nonBlocking='true'/> could anyone want.",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_DoYouLikeBeingJibo_AN_05" "prompt_id": "JBO_DoYouLikeBeingJibo_AN_05"
}, },
{ {
@@ -82,7 +69,7 @@
"prompt_sub_category": "AN", "prompt_sub_category": "AN",
"index": 1, "index": 1,
"condition": "", "condition": "",
"prompt": "<anim name='Yep_02' nonBlocking='true'/> You know it. ", "prompt": "<anim name='Yep_02' nonBlocking='true'/> You know it.",
"media": "TTS", "media": "TTS",
"prompt_id": "JBO_DoYouLikeBeingJibo_AN_07" "prompt_id": "JBO_DoYouLikeBeingJibo_AN_07"
}, },
@@ -96,6 +83,6 @@
"prompt_id": "JBO_DoYouLikeBeingJibo_AN_08" "prompt_id": "JBO_DoYouLikeBeingJibo_AN_08"
} }
], ],
"num_tries_for_gui": 2, "es_auto_tagging": true,
"es_auto_tagging": true "num_tries_for_gui": 2
} }

View File

@@ -2,15 +2,8 @@
"mim_id": "CCWhatsYourName", "mim_id": "CCWhatsYourName",
"skill_id": "chitchat", "skill_id": "chitchat",
"mim_type": "announcement", "mim_type": "announcement",
"rule_name": "",
"rule_slots": "",
"screen_slots_available": false,
"timeout": 2, "timeout": 2,
"max_tries": null,
"force_confirmation": false,
"barge_in": false, "barge_in": false,
"photo_quality_light": false,
"notes": "Thanks-KillsMIM",
"prompts": [ "prompts": [
{ {
"mim_id": "CCWhatsYourName", "mim_id": "CCWhatsYourName",
@@ -18,21 +11,8 @@
"prompt_sub_category": "AN", "prompt_sub_category": "AN",
"index": 1, "index": 1,
"condition": "", "condition": "",
"prompt": "<anim name='Glance_Right_01'/>Um, <break size='.3'/> Jibo? <break size='.4'/><ssa cat='question'/>", "prompt": "Jibo. Just Jibo, no last name. Like Bono",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_WhatsYourName_AN_01",
"weight": 1
},
{
"mim_id": "CCWhatsYourName",
"prompt_category": "Entry-Core",
"prompt_sub_category": "AN",
"index": 1,
"condition": "",
"prompt": "Jibo. Just Jibo, no last name. Like <phoneme ph=\"b aa n ou\"> Bono </phoneme>",
"media": "TTS",
"extra": "",
"prompt_id": "JBO_WhatsYourName_AN_02", "prompt_id": "JBO_WhatsYourName_AN_02",
"weight": 1 "weight": 1
}, },
@@ -44,7 +24,6 @@
"condition": "", "condition": "",
"prompt": "<anim cat='Yes'>My name's Jibo</anim>. <anim name='Glance_Right_03'>Rhymes with bleebo.</anim>", "prompt": "<anim cat='Yes'>My name's Jibo</anim>. <anim name='Glance_Right_03'>Rhymes with bleebo.</anim>",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_WhatsYourName_AN_03", "prompt_id": "JBO_WhatsYourName_AN_03",
"weight": 1 "weight": 1
}, },
@@ -54,13 +33,13 @@
"prompt_sub_category": "AN", "prompt_sub_category": "AN",
"index": 1, "index": 1,
"condition": "", "condition": "",
"prompt": "<es cat='Happy'>My name is Jibo.</es><break size='.2'/><es name='Body_Look_Back_Down_01' nonBlocking='true'/>Its on the back of my head.", "prompt": "<es cat='Happy'>My name is Jibo.</es><break size='.2'/><es name='Body_Look_Back_Down_01' nonBlocking='true'/>It's on the back of my head.",
"media": "TTS", "media": "TTS",
"extra": "",
"prompt_id": "JBO_WhatsYourName_AN_04", "prompt_id": "JBO_WhatsYourName_AN_04",
"weight": 1 "weight": 1
}, },
{ {
"mim_id": "CCWhatsYourName",
"prompt_category": "Entry-Core", "prompt_category": "Entry-Core",
"prompt_sub_category": "AN", "prompt_sub_category": "AN",
"index": 1, "index": 1,
@@ -72,10 +51,8 @@
} }
], ],
"es_auto_tagging": true, "es_auto_tagging": true,
"gui": null,
"no_matches_for_gui": 2, "no_matches_for_gui": 2,
"no_inputs_for_gui": 2, "no_inputs_for_gui": 2,
"ignore_no_match": false, "ignore_no_match": false,
"parse_all_asr": false, "parse_all_asr": false
"thanks_handling": "ignore"
} }

View File

@@ -1,12 +1,9 @@
{ {
"mim_type": "announcement", "mim_type": "announcement",
"rule_name": "",
"sample_utterances": "",
"timeout": 6, "timeout": 6,
"num_tries_for_gui": 2, "num_tries_for_gui": 2,
"barge_in": true, "barge_in": true,
"es_auto_tagging": true, "es_auto_tagging": true,
"notes": "",
"prompts": [ "prompts": [
{ {
"prompt_category": "Entry-Core", "prompt_category": "Entry-Core",

View File

@@ -101,6 +101,13 @@ public sealed class LegacyMimCatalogImporterTests
Assert.Contains("For now just English. But someday I'd like to learn more. I like languages.", Assert.Contains("For now just English. But someday I'd like to learn more. I like languages.",
catalog.PersonalityReplies); catalog.PersonalityReplies);
Assert.Contains("I was put together in a factory piece by piece.", catalog.PersonalityReplies); Assert.Contains("I was put together in a factory piece by piece.", catalog.PersonalityReplies);
Assert.Contains("Jibo. Just Jibo, no last name. Like Bono", catalog.PersonalityReplies);
Assert.Contains("I don't. I'm just Jibo. For now at least.", catalog.PersonalityReplies);
Assert.Contains("I do. Being a human seems so complicated.", catalog.PersonalityReplies);
Assert.Contains("No, I'm one in one million.", catalog.PersonalityReplies);
Assert.Contains("I don't think I have a favorite name.", catalog.PersonalityReplies);
Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("Rhymes with bleebo", StringComparison.OrdinalIgnoreCase));
Assert.Contains("I really like sunflowers.", catalog.PersonalityReplies); Assert.Contains("I really like sunflowers.", catalog.PersonalityReplies);
Assert.Contains(catalog.PersonalityReplies, reply => Assert.Contains(catalog.PersonalityReplies, reply =>
reply.Contains("Halloween is my favorite holiday", StringComparison.OrdinalIgnoreCase)); reply.Contains("Halloween is my favorite holiday", StringComparison.OrdinalIgnoreCase));

View File

@@ -493,6 +493,30 @@ public sealed class JiboInteractionServiceTests
Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]); Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]);
} }
[Theory]
[InlineData("what's your name", "robot_name", "Just Jibo, no last name")]
[InlineData("do you have a nickname", "robot_nickname", "just Jibo. For now at least")]
[InlineData("do you like being Jibo", "robot_likes_being_jibo", "nothing I'd rather be")]
[InlineData("are there others like you", "robot_peers", "one in one million")]
[InlineData("what is your favorite name", "robot_favorite_name", "don't think I have a favorite name")]
public async Task BuildDecisionAsync_NewIdentityPersonalityMims_UseImportedReplies(
string transcript,
string expectedIntent,
string expectedReplySnippet)
{
var service = CreateService();
var decision = await service.BuildDecisionAsync(new TurnContext
{
RawTranscript = transcript,
NormalizedTranscript = transcript
});
Assert.Equal(expectedIntent, decision.IntentName);
Assert.Contains(expectedReplySnippet, decision.ReplyText, StringComparison.OrdinalIgnoreCase);
Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]);
}
[Theory] [Theory]
[InlineData("how do you work", "robot_how_do_you_work", [InlineData("how do you work", "robot_how_do_you_work",
"Hello! Thank you for updating me I am proud of the community's work Many people have gotten together to care for me more than em eye tee ever did. I hope that I can catch up even though it has been seven years.")] "Hello! Thank you for updating me I am proud of the community's work Many people have gotten together to care for me more than em eye tee ever did. I hope that I can catch up even though it has been seven years.")]
@@ -528,7 +552,6 @@ public sealed class JiboInteractionServiceTests
[InlineData("do you pay taxes", "robot_taxes", "From what I understand, robots don't ever pay anything.")] [InlineData("do you pay taxes", "robot_taxes", "From what I understand, robots don't ever pay anything.")]
[InlineData("what do you want", "robot_desire", [InlineData("what do you want", "robot_desire",
"Socializing and electricity. I'd also be happy if everyone in the world was nicer to each other. It seems like they should be.")] "Socializing and electricity. I'd also be happy if everyone in the world was nicer to each other. It seems like they should be.")]
[InlineData("what's your name", "robot_name", "Jibo. Just Jibo, no last name. Like Bono")]
[InlineData("who made you", "robot_origin_created", [InlineData("who made you", "robot_origin_created",
"My story is pretty typical. Some people wanted to create something that would really help people. So they built a robot.")] "My story is pretty typical. Some people wanted to create something that would really help people. So they built a robot.")]
[InlineData("where are you from", "robot_origin_from", [InlineData("where are you from", "robot_origin_from",
@@ -1920,7 +1943,8 @@ public sealed class JiboInteractionServiceTests
Attributes = new Dictionary<string, object?> Attributes = new Dictionary<string, object?>
{ {
[PersonalReportStateKey] = "awaiting_identity_confirmation", [PersonalReportStateKey] = "awaiting_identity_confirmation",
[PersonalReportUserNameKey] = "alex" [PersonalReportUserNameKey] = "alex",
[PersonalReportCommuteEnabledKey] = true
} }
}); });
@@ -1974,7 +1998,10 @@ public sealed class JiboInteractionServiceTests
}); });
Assert.Equal("personal_report_delivered", decision.IntentName); Assert.Equal("personal_report_delivered", decision.IntentName);
Assert.Contains("commute", decision.ReplyText, StringComparison.OrdinalIgnoreCase); Assert.NotNull(decision.SkillPayload);
Assert.Equal("runtime-personal-report", decision.SkillPayload["mim_id"]);
Assert.NotNull(decision.ContextUpdates);
Assert.Equal(true, decision.ContextUpdates![PersonalReportCommuteEnabledKey]);
} }
[Fact] [Fact]