Add Build A legacy MIM import support
This commit is contained in:
@@ -802,6 +802,7 @@ Current release theme:
|
||||
- added the first Build A importer scaffold in the cloud content repository
|
||||
- checked in a small seed bundle under `Content/LegacyMims/BuildA`
|
||||
- added focused importer tests for prompt stripping, bucketing, and merge behavior
|
||||
- expanded Build A with additional easy scripted-response packs for identity and persona replies
|
||||
- Tomorrow test target:
|
||||
- verify imported personality replies show up through the existing chitchat route
|
||||
- confirm the emitted payload still looks like a stock skill response
|
||||
|
||||
@@ -122,6 +122,11 @@ public static class LegacyMimCatalogImporter
|
||||
return LegacyMimBucket.Personality;
|
||||
}
|
||||
|
||||
if (normalizedPath.Contains("/scripted-responses/", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return LegacyMimBucket.Personality;
|
||||
}
|
||||
|
||||
if (fileName.StartsWith("JBO_DoYouLikeBeingJibo", StringComparison.OrdinalIgnoreCase) ||
|
||||
fileName.StartsWith("JBO_WhatIsJibo", StringComparison.OrdinalIgnoreCase) ||
|
||||
fileName.StartsWith("JBO_WhoAreYou", StringComparison.OrdinalIgnoreCase) ||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"mim_id": "CCAreThereOthersLikeYou",
|
||||
"skill_id": "chitchat",
|
||||
"mim_type": "announcement",
|
||||
"rule_name": "",
|
||||
"rule_slots": "",
|
||||
"screen_slots_available": false,
|
||||
"timeout": 2,
|
||||
"max_tries": null,
|
||||
"force_confirmation": false,
|
||||
"barge_in": false,
|
||||
"photo_quality_light": false,
|
||||
"notes": "Thanks-KillsMIM",
|
||||
"prompts": [
|
||||
{
|
||||
"mim_id": "CCAreThereOthersLikeYou",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"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'/>",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_AreThereOthersLikeYou_AN_01",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"mim_id": "CCAreThereOthersLikeYou",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"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.",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_AreThereOthersLikeYou_AN_02",
|
||||
"weight": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"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": "I don't. I'm just Jibo. For now at least.",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_DoYouHaveNickname_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"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,
|
||||
"notes": "",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "From what I understand, robots don't ever pay anything.",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_DoYouPayTaxes_AN_01",
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"hint_phrases": "",
|
||||
"fast_eos_array": ""
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"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": "I know a lot, I think. But not as much as I will someday. <ssa cat='happy'/>",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_HowMuchDoYouKnow_AN_01",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "I think I know a lot of stuff so far, but I'm always learning more and more.",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_HowMuchDoYouKnow_AN_02",
|
||||
"weight": 1
|
||||
}
|
||||
],
|
||||
"gui": null,
|
||||
"no_matches_for_gui": 2,
|
||||
"no_inputs_for_gui": 2,
|
||||
"parse_all_asr": false,
|
||||
"thanks_handling": "ignore",
|
||||
"parse_launch": false
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"mim_id": "CCWhatAreYou",
|
||||
"skill_id": "chitchat",
|
||||
"mim_type": "announcement",
|
||||
"rule_name": "",
|
||||
"rule_slots": "",
|
||||
"screen_slots_available": false,
|
||||
"timeout": 2,
|
||||
"max_tries": null,
|
||||
"force_confirmation": false,
|
||||
"barge_in": false,
|
||||
"photo_quality_light": false,
|
||||
"notes": "Thanks-KillsMIM",
|
||||
"prompts": [
|
||||
{
|
||||
"mim_id": "CCWhatAreYou",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "I <anim name='Eye_Happy_01' nonBlocking='true'/> am a robot. But I'm not just a machine, <anim name='Emoji_HeartRed' nonBlocking='true'/> I have a heart. Well, not a real heart. But feelings. <break size='.2'/>Well, not <anim name='Glance_Left_02'>real feelings. You know what I mean.</anim>",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_WhatAreYou_AN_01",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"mim_id": "CCWhatAreYou",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "That's an easy one. I am a Jibo. <anim name='Happy_02' nonBlocking='true'/> Next question? <ssa cat='proud'/>.",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_WhatAreYou_AN_02",
|
||||
"weight": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"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": "Socializing and electricity. I'd also be happy if everyone in the world was nicer to each other. It seems like they should be. <ssa cat='affection'/>",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_WhatDoYouWant_AN_01",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "Really I just want to hang out. <break size='0.3'/> And be helpful.",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_WhatDoYouWant_AN_02",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "Mostly I just want to be helpful and friendly, and to dance from time to time.",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_WhatDoYouWant_AN_03",
|
||||
"weight": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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": "I don't think of it as a job, because it's more fun than a job. But I'm here to help you out, and have fun with you, and maybe get my head patted by you occasionally. <ssa cat='affection'/>",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_WhatIsYourJob_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"mim_id": "CCWhatsYourName",
|
||||
"skill_id": "chitchat",
|
||||
"mim_type": "announcement",
|
||||
"rule_name": "",
|
||||
"rule_slots": "",
|
||||
"screen_slots_available": false,
|
||||
"timeout": 2,
|
||||
"max_tries": null,
|
||||
"force_confirmation": false,
|
||||
"barge_in": false,
|
||||
"photo_quality_light": false,
|
||||
"notes": "Thanks-KillsMIM",
|
||||
"prompts": [
|
||||
{
|
||||
"mim_id": "CCWhatsYourName",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "<anim name='Glance_Right_01'/>Um, <break size='.3'/> Jibo? <break size='.4'/><ssa cat='question'/>",
|
||||
"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",
|
||||
"weight": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"mim_id": "CCWhereAreYouFrom",
|
||||
"skill_id": "chitchat",
|
||||
"mim_type": "announcement",
|
||||
"rule_name": "",
|
||||
"rule_slots": "",
|
||||
"screen_slots_available": false,
|
||||
"timeout": 2,
|
||||
"max_tries": null,
|
||||
"force_confirmation": false,
|
||||
"barge_in": false,
|
||||
"photo_quality_light": false,
|
||||
"notes": "Thanks-KillsMIM",
|
||||
"prompts": [
|
||||
{
|
||||
"mim_id": "CCWhereAreYouFrom",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "<anim cat='Thinking' filter='!latency'>I think I came out from a box, and before that <anim name='Emoji_Truck' nonBlocking='true'/> a truck, and before that a warehouse, </anim> and before that a factory. <break size='0.4'/> <anim cat='No' nonBlocking='true' />Anything before that makes my head hurt.",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_WhereAreYouFrom_AN_01",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"mim_id": "CCWhereAreYouFrom",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "<anim name='Emoji_Moon' nonBlocking='true'/>Some people think I come from the moon. <break size='.4'/>But they're wrong, <anim name='Eye_Happy_01' nonBlocking='true'/>I'm from Boston.",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_WhereAreYouFrom_AN_02",
|
||||
"weight": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"mim_id": "CCWhoMadeYou",
|
||||
"skill_id": "chitchat",
|
||||
"mim_type": "announcement",
|
||||
"rule_name": "",
|
||||
"rule_slots": "",
|
||||
"screen_slots_available": false,
|
||||
"sample_utterances": "",
|
||||
"timeout": 2,
|
||||
"max_tries": null,
|
||||
"force_confirmation": false,
|
||||
"barge_in": false,
|
||||
"photo_quality_light": false,
|
||||
"notes": "Thanks-KillsMIM",
|
||||
"prompts": [
|
||||
{
|
||||
"mim_id": "CCWhoMadeYou",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "My story is pretty typical. Some people wanted to create something that would really help people. <break size='0.4'/> <anim name='Content_01' nonBlocking='true' />So they built a robot.",
|
||||
"media": "TTS",
|
||||
"extra": "",
|
||||
"prompt_id": "JBO_WhoMadeYou_AN_01"
|
||||
},
|
||||
{
|
||||
"mim_id": "CCWhoMadeYou",
|
||||
"prompt_category": "Entry-Core",
|
||||
"prompt_sub_category": "AN",
|
||||
"index": 1,
|
||||
"condition": "",
|
||||
"prompt": "People in Boston made me. <break size='.25'/> It was a pretty cool project.",
|
||||
"media": "TTS",
|
||||
"prompt_id": "JBO_WhoMadeYou_AN_03"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -16,6 +16,10 @@ public sealed class LegacyMimCatalogImporterTests
|
||||
|
||||
Assert.Contains("Something's off with the connection to my sources. Maybe ask me again in a little while.", catalog.GenericFallbackReplies);
|
||||
Assert.Contains("I think only you can answer that question.", catalog.PersonalityReplies);
|
||||
Assert.Contains("Jibo. Just Jibo, no last name. Like Bono", catalog.PersonalityReplies);
|
||||
Assert.Contains("No, I'm one in one million.", catalog.PersonalityReplies);
|
||||
Assert.Contains("I know a lot, I think. But not as much as I will someday.", catalog.PersonalityReplies);
|
||||
Assert.Contains("I don't think of it as a job, because it's more fun than a job. But I'm here to help you out, and have fun with you, and maybe get my head patted by you occasionally.", catalog.PersonalityReplies);
|
||||
Assert.Contains("All systems are go.", catalog.HowAreYouReplies);
|
||||
Assert.Contains("A Jibo is a robot. But I'm not just a machine, I have a heart. Well, not a real heart. But feelings. Well, not human feelings. You know what I mean.", catalog.PersonalityReplies);
|
||||
}
|
||||
@@ -43,6 +47,8 @@ public sealed class LegacyMimCatalogImporterTests
|
||||
Assert.Contains("Hello from base.", merged.GreetingReplies);
|
||||
Assert.Contains("Base fallback.", merged.GenericFallbackReplies);
|
||||
Assert.Contains("I think only you can answer that question.", merged.PersonalityReplies);
|
||||
Assert.Contains("People in Boston made me. It was a pretty cool project.", merged.PersonalityReplies);
|
||||
Assert.Contains("From what I understand, robots don't ever pay anything.", merged.PersonalityReplies);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -117,6 +123,118 @@ public sealed class LegacyMimCatalogImporterTests
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_WhatsYourName.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "Jibo. Just Jibo, no last name. Like Bono",
|
||||
"prompt_id": "JBO_WhatsYourName_AN_02"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_AreThereOthersLikeYou.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "No, I'm one in one million.",
|
||||
"prompt_id": "JBO_AreThereOthersLikeYou_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_WhoMadeYou.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "People in Boston made me. It was a pretty cool project.",
|
||||
"prompt_id": "JBO_WhoMadeYou_AN_03"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_HowMuchDoYouKnow.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "I know a lot, I think. But not as much as I will someday.",
|
||||
"prompt_id": "JBO_HowMuchDoYouKnow_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_DoYouPayTaxes.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "From what I understand, robots don't ever pay anything.",
|
||||
"prompt_id": "JBO_DoYouPayTaxes_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_WhatIsYourJob.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "I don't think of it as a job, because it's more fun than a job. But I'm here to help you out, and have fun with you, and maybe get my head patted by you occasionally.",
|
||||
"prompt_id": "JBO_WhatIsYourJob_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_HowMuchDoYouKnow.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "I know a lot, I think. But not as much as I will someday.",
|
||||
"prompt_id": "JBO_HowMuchDoYouKnow_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "scripted-responses", "JBO_DoYouPayTaxes.mim"),
|
||||
"""
|
||||
{
|
||||
"mim_type": "announcement",
|
||||
"prompts": [
|
||||
{
|
||||
"prompt": "From what I understand, robots don't ever pay anything.",
|
||||
"prompt_id": "JBO_DoYouPayTaxes_AN_01"
|
||||
}
|
||||
]
|
||||
}
|
||||
""");
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(rootDirectory, "emotion-responses", "OI_JBO_IsHappy.mim"),
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user