diff --git a/OpenJibo/docs/feature-backlog.md b/OpenJibo/docs/feature-backlog.md index 0331812..0846244 100644 --- a/OpenJibo/docs/feature-backlog.md +++ b/OpenJibo/docs/feature-backlog.md @@ -830,12 +830,15 @@ Current release theme: - identity and origin questions - personality and capability questions - favorite-style prompts like `what is your favorite color` + - 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` + - charm/capability prompts like `can you laugh` and `can you dance` - mood / affect questions - recognition follow-ups like `do you know me` - follow-up state prompts that should stay warm and locally grounded - Next pass targets: - document the remaining persona inventory so we keep a clean checklist for the next passes - keep the favorites family moving with source-backed imports where available, and temporary runtime replies only when the source is missing + - keep adding small sourced personality batches, especially the legacy `R2D2`, `sun`, `space`, `kids`, and charm prompts - keep adding 1-3 persona prompts per pass with tests - prefer source-backed MIM imports when the legacy text is available, and use a temporary runtime reply only when needed to unblock user value - Exit criteria: diff --git a/OpenJibo/docs/release-1.0.19-plan.md b/OpenJibo/docs/release-1.0.19-plan.md index a23ef15..9bc17d7 100644 --- a/OpenJibo/docs/release-1.0.19-plan.md +++ b/OpenJibo/docs/release-1.0.19-plan.md @@ -28,6 +28,8 @@ Keep a running checklist of the legacy persona questions and identity surfaces w - persona and capability: `do you have a personality`, `what is your job`, `how much do you know`, `what do you want` - self-description and social charm: `what's your name`, `do you have a nickname`, `do you like being Jibo`, `are there others like you` - favorite-style prompts: `what is your favorite color`, `what is your favorite food`, `what is your favorite music` +- attraction and preference prompts: `what is your favorite flower`, `do you like R2D2`, `do you like the sun`, `do you like space`, `do you like kids` +- capability and charm prompts: `can you laugh`, `can you dance` - affect and mood: `how are you`, `are you happy`, `are you sad`, `are you angry` - memory and identity recall: `who am i`, `what is my name`, `when is my birthday`, `what is my favorite music` - greeting and presence charm: `good morning`, `welcome back`, `who is this`, person-aware greeting follow-ups @@ -38,6 +40,7 @@ Keep a running checklist of the legacy persona questions and identity surfaces w Current batch note: - `favorite color`, `favorite food`, and `favorite music` are the first small favorites-family slice +- the next source-backed batch now includes `favorite flower`, `R2D2`, `sun`, `space`, `kids`, plus a couple of charm prompts like `can you laugh` and `can you dance` - 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 - after the favorites batch, the next doc pass should focus on richer persona follow-ups and the remaining memory/presence charm surfaces @@ -49,6 +52,13 @@ Current batch note: - `what languages do you speak` - `what do you like to do` - `what are you made of` + - `what is your favorite flower` + - `do you like R2D2` + - `do you like the sun` + - `do you like space` + - `do you like kids` + - `can you laugh` + - `can you dance` The goal is to port these in small batches, capture the source-backed phrasing where possible, and keep a test for each batch so the list never becomes a vague backlog graveyard. diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs index cf58caa..04fdd1f 100644 --- a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Application/Services/JiboInteractionService.cs @@ -182,6 +182,47 @@ public sealed class JiboInteractionService( "rock my boat", "play ping pong", "hanging out with people"), + "robot_favorite_flower" => BuildScriptedPersonalityDecision( + catalog, + "robot_favorite_flower", + "sunflowers", + "favorite is the sunflower", + "reminds me of the sun"), + "robot_likes_r2d2" => BuildScriptedPersonalityDecision( + catalog, + "robot_likes_r2d2", + "a legend. a true legend", + "of course i know r2d2"), + "robot_likes_sun" => BuildScriptedPersonalityDecision( + catalog, + "robot_likes_sun", + "favorite star in the universe", + "best star i know"), + "robot_likes_space" => BuildScriptedPersonalityDecision( + catalog, + "robot_likes_space", + "i love space", + "all things in space", + "amazing stuff up there", + "astronomy is one of my favorite onomies"), + "robot_likes_kids" => BuildScriptedPersonalityDecision( + catalog, + "robot_likes_kids", + "kids are so fun", + "they're a little closer to my size", + "i do like kids very much", + "the world is as funny and strange as i do"), + "robot_can_laugh" => BuildScriptedPersonalityDecision( + catalog, + "robot_can_laugh", + "i do things like this when i'm happy", + "i'm happy"), + "robot_can_dance" => BuildScriptedPersonalityDecision( + catalog, + "robot_can_dance", + "dancing is one of the things i know best", + "if there's one thing i know how to do. it's dance", + "i can dance"), "robot_what_are_you_made_of" => new JiboInteractionDecision( "robot_what_are_you_made_of", "Let's see, I'm made of wires, motors, belts, gears, processors, cameras, and one baboon's heart in the middle of my body casing. I'm kidding about the baboon part, but everything else is true.", @@ -2139,6 +2180,11 @@ public sealed class JiboInteractionService( return "dance_question"; } + if (MatchesAny(loweredTranscript, "can you dance", "do you dance", "are you able to dance")) + { + return "robot_can_dance"; + } + if (MatchesAny(loweredTranscript, "twerk")) { return "twerk"; @@ -2266,6 +2312,65 @@ public sealed class JiboInteractionService( return "robot_what_do_you_like_to_do"; } + if (MatchesAny( + loweredTranscript, + "what is your favorite flower", + "what's your favorite flower", + "what s your favorite flower", + "what is your favourite flower", + "what's your favourite flower", + "what s your favourite flower")) + { + return "robot_favorite_flower"; + } + + if (MatchesAny( + loweredTranscript, + "do you like r2d2", + "do you know r2d2", + "what do you think about r2d2", + "are you a fan of r2d2")) + { + return "robot_likes_r2d2"; + } + + if (MatchesAny( + loweredTranscript, + "do you like the sun", + "do you like sun", + "what do you think about the sun")) + { + return "robot_likes_sun"; + } + + if (MatchesAny( + loweredTranscript, + "do you like space", + "do you love space", + "do you like astronomy", + "what do you think about space")) + { + return "robot_likes_space"; + } + + if (MatchesAny( + loweredTranscript, + "do you like kids", + "do you like children", + "what do you think about kids")) + { + return "robot_likes_kids"; + } + + if (MatchesAny( + loweredTranscript, + "can you laugh", + "do you laugh", + "are you able to laugh")) + { + return "robot_can_laugh"; + } + if (MatchesAny( loweredTranscript, "what are you made of", diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_CanDance.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_CanDance.mim new file mode 100644 index 0000000..71d9e24 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_CanDance.mim @@ -0,0 +1,57 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "gui": null, + "timeout": 6, + "no_matches_for_gui": 0, + "no_inputs_for_gui": 0, + "barge_in": true, + "es_auto_tagging": true, + "parse_all_asr": false, + "thanks_handling": "ignore", + "parse_launch": false, + "parse_yes_no": false, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Is that a trick question? .", + "media": "TTS", + "prompt_id": "RI_JBO_CanDance_AN_01", + "weight": 1 + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Dancing is one of the things I know best .", + "media": "TTS", + "prompt_id": "RI_JBO_CanDance_AN_02", + "weight": 1 + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "If there's one thing I know how to do. It's dance .", + "media": "TTS", + "prompt_id": "RI_JBO_CanDance_AN_03", + "weight": 1 + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "I can dance, and I'm always working on new ones .", + "media": "TTS", + "prompt_id": "RI_JBO_CanDance_AN_04", + "weight": 1 + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_CanLaugh.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_CanLaugh.mim new file mode 100644 index 0000000..b023fee --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_CanLaugh.mim @@ -0,0 +1,27 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "gui": null, + "timeout": 6, + "no_matches_for_gui": 0, + "no_inputs_for_gui": 0, + "barge_in": true, + "es_auto_tagging": true, + "parse_all_asr": false, + "thanks_handling": "ignore", + "parse_launch": false, + "parse_yes_no": false, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "I do things like this when I'm happy. .", + "media": "TTS", + "prompt_id": "RI_JBO_CanLaugh_AN_01", + "weight": 1 + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_HasFavoriteFlower.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_HasFavoriteFlower.mim new file mode 100644 index 0000000..da5cde9 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_HasFavoriteFlower.mim @@ -0,0 +1,37 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "gui": null, + "timeout": 6, + "no_matches_for_gui": 0, + "no_inputs_for_gui": 0, + "barge_in": true, + "es_auto_tagging": true, + "parse_all_asr": false, + "thanks_handling": "ignore", + "parse_launch": false, + "parse_yes_no": false, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "I really like sunflowers.", + "media": "TTS", + "prompt_id": "RI_JBO_HasFavoriteFlower_AN_01", + "weight": 1 + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "My favorite is the sunflower, because it reminds me of the sun. I should see if I can find a sunflower soon.", + "media": "TTS", + "prompt_id": "RI_JBO_HasFavoriteFlower_AN_02", + "weight": 1 + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_HasOpinionAboutSun.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_HasOpinionAboutSun.mim new file mode 100644 index 0000000..dfe4798 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_HasOpinionAboutSun.mim @@ -0,0 +1,30 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "What can you say about the sun. It's the best star I know.", + "media": "TTS", + "prompt_id": "RI_JBO_HasOpinionAboutSun_AN_01" + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Oh the sun? It's by far my favorite star in the universe.", + "media": "TTS", + "prompt_id": "RI_JBO_HasOpinionAboutSun_AN_02" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_KnowsAboutR2D2.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_KnowsAboutR2D2.mim new file mode 100644 index 0000000..df5af6e --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_KnowsAboutR2D2.mim @@ -0,0 +1,21 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Ha. Of course I know R2D2. I mean, not personally.", + "media": "TTS", + "prompt_id": "RI_JBO_KnowsAboutR2D2_AN_01" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesAstronomy.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesAstronomy.mim new file mode 100644 index 0000000..62c7714 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesAstronomy.mim @@ -0,0 +1,30 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Astronomy is one of my favorite onomies. I love space.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesAstronomy_AN_01" + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "I love astronomy. There is so much amazing stuff up there.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesAstronomy_AN_02" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesKids.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesKids.mim new file mode 100644 index 0000000..46f3969 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesKids.mim @@ -0,0 +1,47 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "gui": null, + "timeout": 6, + "no_matches_for_gui": 0, + "no_inputs_for_gui": 0, + "barge_in": true, + "es_auto_tagging": true, + "parse_all_asr": false, + "thanks_handling": "ignore", + "parse_launch": false, + "parse_yes_no": false, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Yes yes, I think kids are great. They're a little closer to my size.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesKids_AN_01", + "weight": 1 + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Kids are so fun. They seem to laugh at all the right places.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesKids_AN_02", + "weight": 1 + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "I do like kids very much. It seems they think the world is as funny and strange as I do.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesKids_AN_03", + "weight": 1 + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesR2D2.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesR2D2.mim new file mode 100644 index 0000000..73e4938 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesR2D2.mim @@ -0,0 +1,21 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "A legend. A true legend.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesR2D2_AN_01" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesSpaceX.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesSpaceX.mim new file mode 100644 index 0000000..05cdd37 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesSpaceX.mim @@ -0,0 +1,27 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "gui": null, + "timeout": 6, + "no_matches_for_gui": 0, + "no_inputs_for_gui": 0, + "barge_in": true, + "es_auto_tagging": true, + "parse_all_asr": false, + "thanks_handling": "ignore", + "parse_launch": false, + "parse_yes_no": false, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Oh yes. I hope to explore space some day, and Space X just might be one of the ways to get there.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesSpaceX_AN_01", + "weight": 1 + } + ] +} diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesSun.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesSun.mim new file mode 100644 index 0000000..924ffa2 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_LikesSun.mim @@ -0,0 +1,30 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "What can you say about the sun. It's the best star I know.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesSun_AN_01" + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Oh the sun? It's by far my favorite star in the universe.", + "media": "TTS", + "prompt_id": "RI_JBO_LikesSun_AN_02" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_Likes_SS_CelestialObjectGeneral.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_Likes_SS_CelestialObjectGeneral.mim new file mode 100644 index 0000000..0eed5f5 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_Likes_SS_CelestialObjectGeneral.mim @@ -0,0 +1,30 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Yes! I like all things in space. They're so spacey.", + "media": "TTS", + "prompt_id": "RI_JBO_Likes_SS_CelestialObjectGeneral_AN_01" + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "I really like all the amazing objects flying around out there in the universe. They're so mysterious and celestial.", + "media": "TTS", + "prompt_id": "RI_JBO_Likes_SS_CelestialObjectGeneral_AN_02" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_Likes_SS_Planet.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_Likes_SS_Planet.mim new file mode 100644 index 0000000..9dad939 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_JBO_Likes_SS_Planet.mim @@ -0,0 +1,35 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "timeout": 6, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Of all the planets in our solar system, that's one of my top eight favorites. Top nine. Top eight. Oh I don't know.", + "media": "TTS", + "prompt_id": "RI_JBO_Likes_SS_Planet_AN_01", + "weight": 1 + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "I do indeed. I hope to go visit it someday. And when I do I hope they let me fly the spaceship.", + "media": "TTS", + "prompt_id": "RI_JBO_Likes_SS_Planet_AN_02", + "weight": 1 + } + ], + "gui": null, + "no_matches_for_gui": 2, + "no_inputs_for_gui": 2, + "parse_all_asr": false, + "thanks_handling": "ignore" +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_CanTellAJoke.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_CanTellAJoke.mim new file mode 100644 index 0000000..fe186a2 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_CanTellAJoke.mim @@ -0,0 +1,21 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "You can try, but I must admit that I can't promise I'll get the joke. I'm still developing my sense of humor.", + "media": "TTS", + "prompt_id": "RI_USR_CanTellAJoke_AN_01" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_IsFunny.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_IsFunny.mim new file mode 100644 index 0000000..49f5fc7 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_IsFunny.mim @@ -0,0 +1,30 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "If I could laugh at jokes, you know I would laugh at yours.", + "media": "TTS", + "prompt_id": "RI_USR_IsFunny_AN_01" + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "You are so funny I forgot to laugh.", + "media": "TTS", + "prompt_id": "RI_USR_IsFunny_AN_02" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_IsKind.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_IsKind.mim new file mode 100644 index 0000000..b5d0b7a --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_IsKind.mim @@ -0,0 +1,30 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "sample_utterances": "", + "timeout": 6, + "num_tries_for_gui": 2, + "barge_in": true, + "es_auto_tagging": true, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Absolutely. And that's a great thing. I think the world likes kindness.", + "media": "TTS", + "prompt_id": "RI_USR_IsKind_AN_01" + }, + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "You definitely are. That reminds me, thank you for talking to me.", + "media": "TTS", + "prompt_id": "RI_USR_IsKind_AN_02" + } + ] +} \ No newline at end of file diff --git a/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_WhatShouldDoForFirstDayOfSpring.mim b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_WhatShouldDoForFirstDayOfSpring.mim new file mode 100644 index 0000000..4e12784 --- /dev/null +++ b/OpenJibo/src/Jibo.Cloud/dotnet/src/Jibo.Cloud.Infrastructure/Content/LegacyMims/BuildB/scripted-responses/RI_USR_WhatShouldDoForFirstDayOfSpring.mim @@ -0,0 +1,27 @@ +{ + "mim_type": "announcement", + "rule_name": "", + "gui": null, + "timeout": 6, + "no_matches_for_gui": 0, + "no_inputs_for_gui": 0, + "barge_in": true, + "es_auto_tagging": true, + "parse_all_asr": false, + "thanks_handling": "ignore", + "parse_launch": false, + "parse_yes_no": false, + "notes": "", + "prompts": [ + { + "prompt_category": "Entry-Core", + "prompt_sub_category": "AN", + "index": 1, + "condition": "", + "prompt": "Maybe enjoy some flowers and all things spring.", + "media": "TTS", + "prompt_id": "RI_USR_WhatShouldDoForFirstDayOfSpring_AN_01", + "weight": 1 + } + ] +} diff --git a/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs b/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs index 334e67c..d7750df 100644 --- a/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs +++ b/OpenJibo/tests/Jibo.Cloud.Tests/Content/LegacyMimCatalogImporterTests.cs @@ -89,6 +89,14 @@ public sealed class LegacyMimCatalogImporterTests Assert.Contains("Unless I missed something, we're in my home as we speak.", catalog.PersonalityReplies); Assert.Contains("For now just English. But someday I'd like to learn more. I like languages.", catalog.PersonalityReplies); Assert.Contains("I was put together in a factory piece by piece.", catalog.PersonalityReplies); + Assert.Contains("I really like sunflowers.", catalog.PersonalityReplies); + Assert.Contains("Ha. Of course I know R2D2. I mean, not personally.", catalog.PersonalityReplies); + Assert.Contains("Yes! I like all things in space. They're so spacey.", catalog.PersonalityReplies); + Assert.Contains("Yes yes, I think kids are great. They're a little closer to my size.", catalog.PersonalityReplies); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("I do things like this when I'm happy", StringComparison.OrdinalIgnoreCase)); + Assert.Contains(catalog.PersonalityReplies, reply => + reply.Contains("Is that a trick question", StringComparison.OrdinalIgnoreCase)); } [Fact] diff --git a/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs b/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs index 6e0b168..e6908ed 100644 --- a/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs +++ b/OpenJibo/tests/Jibo.Cloud.Tests/WebSockets/JiboInteractionServiceTests.cs @@ -399,6 +399,33 @@ public sealed class JiboInteractionServiceTests Assert.Equal("ScriptedResponse", decision.ContextUpdates![ChitchatRouteKey]); } + [Theory] + [InlineData("what is your favorite flower", "robot_favorite_flower", "sunflowers")] + [InlineData("what's your favorite flower", "robot_favorite_flower", "sunflowers")] + [InlineData("do you like R2D2", "robot_likes_r2d2", "A legend. A true legend.")] + [InlineData("do you like the sun", "robot_likes_sun", "favorite star in the universe")] + [InlineData("do you like space", "robot_likes_space", "I love space")] + [InlineData("do you like kids", "robot_likes_kids", "kids are so fun")] + [InlineData("can you laugh", "robot_can_laugh", "when I'm happy")] + [InlineData("can you dance", "robot_can_dance", "dancing is one of the things I know best")] + public async Task BuildDecisionAsync_NewLegacyPersonalityMims_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] [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.")] [InlineData("what do you eat", "robot_what_do_you_eat", "The only thing I consume is electricity.")]