就绪
成功: 0 失败: 0

# L1-S2-U14-L1 到你上学啦 (组件录入测试-全量)

生成时间: 2026-05-08 15:45:53 模型: doubao-seed-2.0-pro Wiki: AEPJwf0DUiDkWska4SbceSAbnyc
42
总组件
41
成功
0
失败
1
跳过
1 对话朗读 cId: 0000800 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | [ { "type": "user", "content": "Great!" }, { "type": "user", "content": "Oh, there's no time left." } ]
imgShowTimingList | [ "content" ]
img |
question | { "type": "user", "content": "Let's go to school now." }
postDialog | []

{ "cType": "mid_dialog_repeat", "cId": "0000800", "title": "表示大家一起上学", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [ { "type": "user", "content": "Great!" }, { "type": "user", "content": "Oh, there's no time left." } ], "imgShowTimingList": [ "content" ], "img": "0000800.png", "question": { "type": "user", "content": "Let's go to school now." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
2 对话挖空 cId: 0000801 mid_dialog_fillin
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | [ { "type": "user", "content": "Peter, Eva!" } ]
imgShowTimingList | []
question | { "type": "user", "desc": "Let's go to ___.", "content": "Let's go to school." }
optionGroupList | [ { "optionList": [ { "option": "school", "needAudio": true }, { "option": "zoo", "needAudio": true } ], "answer": [ 0 ] } ]
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Vicky", "content": "I don't think so." }
postDialog | []

{ "cType": "mid_dialog_fillin", "cId": "0000801", "title": "表示一起去上学", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [ { "type": "user", "content": "Peter, Eva!" } ], "imgShowTimingList": [], "question": { "type": "user", "desc": "Let's go to ___.", "content": "Let's go to school." }, "optionGroupList": [ { "optionList": [ { "option": "school", "needAudio": true }, { "option": "zoo", "needAudio": true } ], "answer": [ 0 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Vicky", "content": "I don't think so." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000801", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
3 对话朗读 cId: 0000802 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "type": "user", "content": "You need to study." }
postDialog | [ { "type": "npc", "npcName": "Eva", "content": "No, we want to play!" } ]

{ "cType": "mid_dialog_repeat", "cId": "0000802", "title": "告诉 Eva 和 Peter 需要学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "content": "You need to study." }, "postDialog": [ { "type": "npc", "npcName": "Eva", "content": "No, we want to play!" } ] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000802", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
4 对话朗读 cId: 0000803 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "type": "user", "content": "We can play at school." }
postDialog | [ { "type": "npc", "npcName": "Peter", "content": "That's not fun!" } ]

{ "cType": "mid_dialog_repeat", "cId": "0000803", "title": "表示在学校里也可以玩", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "content": "We can play at school." }, "postDialog": [ { "type": "npc", "npcName": "Peter", "content": "That's not fun!" } ] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000803", "kpInfo": [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
5 对话朗读 cId: 0000804 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "type": "user", "content": "Do you want to be a student?" }
postDialog | []

{ "cType": "mid_dialog_repeat", "cId": "0000804", "title": "询问 Eva 和 Peter 是否想做学生", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "content": "Do you want to be a student?" }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_repeat", "cId": "0000804", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
6 对话组句 cId: 0000805 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | [ { "type": "user", "content": "Hey, look at me." } ]
imgShowTimingList | []
question | { "desc": "表示我是一个学生。", "content": "I'm a student." }
optionList | [ { "option": "I'm", "needAudio": true }, { "option": "student", "needAudio": true }, { "option": "a", "needAudio": true } ]
answer | [ 0, 2, 1 ]
tip |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Vicky", "content": "Try again." }
postDialog | []

{ "cType": "mid_dialog_sentence", "cId": "0000805", "title": "表示自己是学生", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [ { "type": "user", "content": "Hey, look at me." } ], "imgShowTimingList": [], "question": { "desc": "表示我是一个学生。", "content": "I'm a student." }, "optionList": [ { "option": "I'm", "needAudio": true }, { "option": "student", "needAudio": true }, { "option": "a", "needAudio": true } ], "answer": [ 0, 2, 1 ], "tip": "student 指“学生”。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Vicky", "content": "Try again." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000805", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
7 对话朗读 cId: 0000806 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content" ]
img |
question | { "type": "user", "content": "I study at school." }
postDialog | []

{ "cType": "mid_dialog_repeat", "cId": "0000806", "title": "表示自己在学校学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content" ], "img": "0000806.png", "question": { "type": "user", "content": "I study at school." }, "postDialog": [] }
8 对话朗读 cId: 0000807 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content" ]
img |
question | { "type": "user", "content": "And I play too." }
postDialog | []

{ "cType": "mid_dialog_repeat", "cId": "0000807", "title": "表示自己也玩", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content" ], "img": "0000807.png", "question": { "type": "user", "content": "And I play too." }, "postDialog": [] }
9 对话挖空 cId: 0000808 mid_dialog_fillin
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "type": "user", "desc": "We're not here to ___.", "content": "We're not here to study." }
optionGroupList | [ { "optionList": [ { "option": "study", "needAudio": true }, { "option": "student", "needAudio": true } ], "answer": [ 0 ] } ]
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Grace", "content": "Are you sure?" }
postDialog | []

{ "cType": "mid_dialog_fillin", "cId": "0000808", "title": "表示并不是要学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "desc": "We're not here to ___.", "content": "We're not here to study." }, "optionGroupList": [ { "optionList": [ { "option": "study", "needAudio": true }, { "option": "student", "needAudio": true } ], "answer": [ 0 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "Are you sure?" }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000808", "kpInfo": [ { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
10 对话朗读 cId: 0000809 mid_dialog_repeat
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content" ]
img |
question | { "type": "user", "content": "It's \"Go to School\"." }
postDialog | []

{ "cType": "mid_dialog_repeat", "cId": "0000809", "title": "说出书名", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content" ], "img": "0000809.png", "question": { "type": "user", "content": "It's \"Go to School\"." }, "postDialog": [] }
11 核心听力选择 cId: 0000810 core_listening_choose
已保存 ▶
中间结果: 学习过程配置

    无

中间结果: 互动描述

    请您提供具体的题目材料相关内容哦，我会按照要求为您生成对应的叙事化描述~

12 对话组句 cId: 0000811 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "desc": "表示你们需要学习。", "content": "You need to study." }
optionList | [ { "option": "need to", "needAudio": true }, { "option": "you", "needAudio": true }, { "option": "study", "needAudio": true } ]
answer | [ 1, 0, 2 ]
tip |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Peter", "content": "Huh?" }
postDialog | []

{ "cType": "mid_dialog_sentence", "cId": "0000811", "title": "表示你们需要学习", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "desc": "表示你们需要学习。", "content": "You need to study." }, "optionList": [ { "option": "need to", "needAudio": true }, { "option": "you", "needAudio": true }, { "option": "study", "needAudio": true } ], "answer": [ 1, 0, 2 ], "tip": "study 指“学习”。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Peter", "content": "Huh?" }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000811", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0112033", "kpType": "vocab", "kpTitle": "study", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
13 对话组句 cId: 0000812 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "desc": "表示你们需要上学。", "content": "You need to go to school." }
optionList | [ { "option": "need to", "needAudio": true }, { "option": "go to school", "needAudio": true }, { "option": "you", "needAudio": true } ]
answer | [ 2, 0, 1 ]
tip |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Grace", "content": "Try again." }
postDialog | []

{ "cType": "mid_dialog_sentence", "cId": "0000812", "title": "表示你们需要上学", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "desc": "表示你们需要上学。", "content": "You need to go to school." }, "optionList": [ { "option": "need to", "needAudio": true }, { "option": "go to school", "needAudio": true }, { "option": "you", "needAudio": true } ], "answer": [ 2, 0, 1 ], "tip": "go to school 指“上学”。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "Try again." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000812", "kpInfo": [ { "kpId": "0107009", "kpType": "sentence", "kpTitle": "You need to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "school", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
14 对话挖空 cId: 0000813 mid_dialog_fillin
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 663, "Peter": 653, "Vicky": 658 }
preDialog | []
imgShowTimingList | []
question | { "type": "user", "desc": "Then you can ___ there.", "content": "Then you can play there." }
optionGroupList | [ { "optionList": [ { "option": "play", "needAudio": true }, { "option": "catch", "needAudio": true } ], "answer": [ 0 ] } ]
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Grace", "content": "I don't think so." }
postDialog | []

{ "cType": "mid_dialog_fillin", "cId": "0000813", "title": "表示可以在学校玩耍", "resourceMapping": { "Eva": 663, "Peter": 653, "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "desc": "Then you can ___ there.", "content": "Then you can play there." }, "optionGroupList": [ { "optionList": [ { "option": "play", "needAudio": true }, { "option": "catch", "needAudio": true } ], "answer": [ 0 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "I don't think so." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000813", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "play", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
15 对话组句 cId: 0000814 mid_dialog_sentence
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 738, "Peter": 739 }
preDialog | []
imgShowTimingList | []
question | { "desc": "表示我们可以坐校车上学。", "content": "We can take the school bus." }
optionList | [ { "option": "we can", "needAudio": true }, { "option": "the school bus", "needAudio": true }, { "option": "take", "needAudio": true } ]
answer | [ 0, 2, 1 ]
tip |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Vicky", "content": "No, try again." }
postDialog | []

{ "cType": "mid_dialog_sentence", "cId": "0000814", "title": "表示可以坐校车上学", "resourceMapping": { "Eva": 738, "Peter": 739 }, "preDialog": [], "imgShowTimingList": [], "question": { "desc": "表示我们可以坐校车上学。", "content": "We can take the school bus." }, "optionList": [ { "option": "we can", "needAudio": true }, { "option": "the school bus", "needAudio": true }, { "option": "take", "needAudio": true } ], "answer": [ 0, 2, 1 ], "tip": "句子以 we can 开头。", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Vicky", "content": "No, try again." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_sentence", "cId": "0000814", "kpInfo": [ { "kpId": "0112016", "kpType": "sentence", "kpTitle": "We can...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
16 对话挖空 cId: 0000815 mid_dialog_fillin
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Eva": 738, "Peter": 739 }
preDialog | []
imgShowTimingList | []
question | { "type": "user", "desc": "You are a ___ now.", "content": "You are a student now." }
optionGroupList | [ { "optionList": [ { "option": "play", "needAudio": true }, { "option": "student", "needAudio": true } ], "answer": [ 1 ] } ]
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Grace", "content": "Try again." }
postDialog | []

{ "cType": "mid_dialog_fillin", "cId": "0000815", "title": "表示 Peter 是学生了", "resourceMapping": { "Eva": 738, "Peter": 739 }, "preDialog": [], "imgShowTimingList": [], "question": { "type": "user", "desc": "You are a ___ now.", "content": "You are a student now." }, "optionGroupList": [ { "optionList": [ { "option": "play", "needAudio": true }, { "option": "student", "needAudio": true } ], "answer": [ 1 ] } ], "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Grace", "content": "Try again." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_fillin", "cId": "0000815", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "student", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
17 核心合作阅读 cId: 0000800 core_reading_order
已保存 ▶
taskInfo

cType |
cId |
title |
sceneDesc | 你们听说 Vala 学院没有考试，正在欢呼雀跃。突然发现 Pioneer 的一项重要任务：加入社团！为什么 Pioneer 一定要加入社团呢？快来阅读 Brainy 的介绍吧。
img |

key

[ { "desc": "词汇类", "keyList": [ { "type": "default", "content": "plant", "desc": "n. 植物" }, { "type": "default", "content": "club", "desc": "n. 俱乐部" }, { "type": "default", "content": "join", "desc": "v. 加入" }, { "type": "default", "content": "member", "desc": "n. 成员" }, { "type": "default", "content": "choose", "desc": "v. 选择" }, { "type": "default", "content": "interested", "desc": "adj. 感兴趣的" } ] } ]

resourceMapping | { "Eva": 738, "Peter": 739 }

{ "cType": "core_reading_order", "cId": "0000800", "title": "阅读 《在 Vala 学院，为什么要加入社团》", "sceneDesc": "你们听说 Vala 学院没有考试，正在欢呼雀跃。突然发现 Pioneer 的一项重要任务：加入社团！为什么 Pioneer 一定要加入社团呢？快来阅读 Brainy 的介绍吧。", "img": "", "key": [ { "desc": "词汇类", "keyList": [ { "type": "default", "content": "plant", "desc": "n. 植物" }, { "type": "default", "content": "club", "desc": "n. 俱乐部" }, { "type": "default", "content": "join", "desc": "v. 加入" }, { "type": "default", "content": "member", "desc": "n. 成员" }, { "type": "default", "content": "choose", "desc": "v. 选择" }, { "type": "default", "content": "interested", "desc": "adj. 感兴趣的" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
materialInfo

text

[ { "textType": "Lcd", "textTitle": "How to Join Clubs?", "textBody": "<sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br><sp>图片:[0101106_core reading2]" } ]

question

[ { "type": "npc", "npcName": "Brainy", "content": "At Vala Academy, how can Pioneers get points?", "optionList": [ { "option": "Take many exams.", "feedback": { "type": "npc", "npcName": "Otis", "content": "No! We have no exams!" } }, { "option": "Join clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Right. We need to join a club to get points." } }, { "option": "Level up.", "feedback": { "type": "npc", "npcName": "Otis", "content": "We have to get points first, then we can level up." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Brainy", "content": "What can you do in a club?", "optionList": [ { "option": "We can earn some money.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, that's not right." } }, { "option": "We can play, study and work together.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "That's right! That's what clubs are for!" } }, { "option": "We can only play.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Hmm… We play, but we also study and work." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Otis", "content": "How can we choose a club?", "optionList": [ { "option": "We can only choose the plant club and the robot club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Nope! We can choose from many clubs." } }, { "option": "We can choose a club we are interested in.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Yes, exactly! Choose what you like!" } }, { "option": "We must start a new club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, not must. Only if you want to." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Skylar", "content": "If we are not interested in any club, what should we do?", "optionList": [ { "option": "We can't join any clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Uh… That sounds bad." } }, { "option": "We can start a new club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Yes! That sounds okay." } }, { "option": "We can only join the plant club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "I don't think so… We have other choices." } } ], "answer": [ 1 ], "meaning": "", "explain": "" } ]

{ "text": [ { "textType": "Lcd", "textTitle": "How to Join Clubs?", "textBody": "<sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br><sp>图片:[0101106_core reading2]" } ], "question": [ { "type": "npc", "npcName": "Brainy", "content": "At Vala Academy, how can Pioneers get points?", "optionList": [ { "option": "Take many exams.", "feedback": { "type": "npc", "npcName": "Otis", "content": "No! We have no exams!" } }, { "option": "Join clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Right. We need to join a club to get points." } }, { "option": "Level up.", "feedback": { "type": "npc", "npcName": "Otis", "content": "We have to get points first, then we can level up." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Brainy", "content": "What can you do in a club?", "optionList": [ { "option": "We can earn some money.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, that's not right." } }, { "option": "We can play, study and work together.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "That's right! That's what clubs are for!" } }, { "option": "We can only play.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Hmm… We play, but we also study and work." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Otis", "content": "How can we choose a club?", "optionList": [ { "option": "We can only choose the plant club and the robot club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Nope! We can choose from many clubs." } }, { "option": "We can choose a club we are interested in.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "Yes, exactly! Choose what you like!" } }, { "option": "We must start a new club.", "feedback": { "type": "npc", "npcName": "Skylar", "content": "No, not must. Only if you want to." } } ], "answer": [ 1 ], "meaning": "", "explain": "" }, { "type": "npc", "npcName": "Skylar", "content": "If we are not interested in any club, what should we do?", "optionList": [ { "option": "We can't join any clubs.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Uh… That sounds bad." } }, { "option": "We can start a new club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "Yes! That sounds okay." } }, { "option": "We can only join the plant club.", "feedback": { "type": "npc", "npcName": "Otis", "content": "I don't think so… We have other choices." } } ], "answer": [ 1 ], "meaning": "", "explain": "" } ] }
flowInfo

sequence | [ { "text": [ 0 ] }, { "dialog": { "type": "npc", "npcName": "Brainy", "content": "Now, let’s make sure you understand everything." } }, { "question": [ 0 ] }, { "question": [ 1 ] }, { "text": [ 1 ] }, { "question": [ 2 ] }, { "question": [ 3 ] } ]

{ "sequence": [ { "text": [ 0 ] }, { "dialog": { "type": "npc", "npcName": "Brainy", "content": "Now, let’s make sure you understand everything." } }, { "question": [ 0 ] }, { "question": [ 1 ] }, { "text": [ 1 ] }, { "question": [ 2 ] }, { "question": [ 3 ] } ] }
studyInfo

closing | { "type": "npc", "content": "恭喜你完成了所有的学习内容，你对知识点的掌握超棒的，继续加油哦！", "npcName": "Brainy" }

learningPart

[ { "leadIn": { "desc": "At Vala Academy, Pioneers don't have exams. But you need points to level up!" }, "type": "npc", "content": "我们来认识一下这段话中的关键单词 exam，exam的意思是考试，期末考试可以说final exam。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "太棒啦！你准确掌握了exam的含义，也读懂了这个句子的意思~", "npcName": "Brainy" }, "option": "在瓦拉学院，先锋者们没有考试。" }, { "feedback": { "type": "npc", "content": "不对哦，课程的英文是lesson或者course，并不是我们这里讲的exam，再回忆下单词的意思吧。", "npcName": "Brainy" }, "option": "在瓦拉学院，先锋者们没有课程。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来，我们来看下包含exam的句子At Vala Academy, Pioneers don't have exams. 是什么意思呢？" } }, { "answer": [ 1 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，句子里说的是需要points也就是积分，不是任务，再仔细看看句子内容吧。", "npcName": "Brainy" }, "option": "但是你需要做任务来升级。" }, { "feedback": { "type": "npc", "content": "回答正确！你已经掌握了point的意思，也读懂了这个句子啦~", "npcName": "Brainy" }, "option": "但是你需要积分来升级。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们来看包含point的句子But you need points to level up! 是什么意思呢？" } } ] }, { "leadIn": { "desc": "You can choose your favourite club to join. If you are interested in something, you can find a club for it." }, "type": "npc", "content": "首先来认识本段的关键单词choose，choose的意思是选择、挑选，做选择可以说make a choice。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "太厉害啦！你完全掌握了choose的意思，也读懂了这个句子~", "npcName": "Brainy" }, "option": "你可以选择你最喜欢的俱乐部加入。" }, { "feedback": { "type": "npc", "content": "不对哦，创建的英文是create或者start，不是我们这里的choose，再回忆下单词的含义吧。", "npcName": "Brainy" }, "option": "你可以创建你最喜欢的俱乐部加入。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们来看包含choose的句子You can choose your favourite club to join. 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "完美回答！你已经掌握了club的含义，也理解了整个句子的意思~", "npcName": "Brainy" }, "option": "如果你对某件事感兴趣，你可以找到对应的俱乐部。" }, { "feedback": { "type": "npc", "content": "不对哦，退出的英文是quit，句子里说的是find也就是找到，再认真看看句子内容吧。", "npcName": "Brainy" }, "option": "如果你对某件事感兴趣，你可以退出对应的俱乐部。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们来看包含club的句子If you are interested in something, you can find a club for it. 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "段落大意题", "optionList": [ { "feedback": { "type": "npc", "content": "太棒了！你完全抓住了段落的核心信息~", "npcName": "Brainy" }, "option": "你可以选择喜欢的俱乐部加入，如果你对某件事感兴趣，就能找到对应的俱乐部。" }, { "feedback": { "type": "npc", "content": "不对哦，段落里并没有提到俱乐部都受欢迎，也没有要求必须加入俱乐部，再回顾下段落内容吧。", "npcName": "Brainy" }, "option": "学校里所有的俱乐部都非常受欢迎，你必须加入至少一个。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "了解了重点单词和句子，我们来看看这一段主要讲了什么内容吧？" } } ] } ]

{ "closing": { "type": "npc", "content": "恭喜你完成了所有的学习内容，你对知识点的掌握超棒的，继续加油哦！", "npcName": "Brainy" }, "learningPart": [ { "leadIn": { "desc": "At Vala Academy, Pioneers don't have exams. But you need points to level up!" }, "type": "npc", "content": "我们来认识一下这段话中的关键单词 exam，exam的意思是考试，期末考试可以说final exam。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "太棒啦！你准确掌握了exam的含义，也读懂了这个句子的意思~", "npcName": "Brainy" }, "option": "在瓦拉学院，先锋者们没有考试。" }, { "feedback": { "type": "npc", "content": "不对哦，课程的英文是lesson或者course，并不是我们这里讲的exam，再回忆下单词的意思吧。", "npcName": "Brainy" }, "option": "在瓦拉学院，先锋者们没有课程。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来，我们来看下包含exam的句子At Vala Academy, Pioneers don't have exams. 是什么意思呢？" } }, { "answer": [ 1 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "不对哦，句子里说的是需要points也就是积分，不是任务，再仔细看看句子内容吧。", "npcName": "Brainy" }, "option": "但是你需要做任务来升级。" }, { "feedback": { "type": "npc", "content": "回答正确！你已经掌握了point的意思，也读懂了这个句子啦~", "npcName": "Brainy" }, "option": "但是你需要积分来升级。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们来看包含point的句子But you need points to level up! 是什么意思呢？" } } ] }, { "leadIn": { "desc": "You can choose your favourite club to join. If you are interested in something, you can find a club for it." }, "type": "npc", "content": "首先来认识本段的关键单词choose，choose的意思是选择、挑选，做选择可以说make a choice。", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "太厉害啦！你完全掌握了choose的意思，也读懂了这个句子~", "npcName": "Brainy" }, "option": "你可以选择你最喜欢的俱乐部加入。" }, { "feedback": { "type": "npc", "content": "不对哦，创建的英文是create或者start，不是我们这里的choose，再回忆下单词的含义吧。", "npcName": "Brainy" }, "option": "你可以创建你最喜欢的俱乐部加入。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们来看包含choose的句子You can choose your favourite club to join. 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "句意选择题", "optionList": [ { "feedback": { "type": "npc", "content": "完美回答！你已经掌握了club的含义，也理解了整个句子的意思~", "npcName": "Brainy" }, "option": "如果你对某件事感兴趣，你可以找到对应的俱乐部。" }, { "feedback": { "type": "npc", "content": "不对哦，退出的英文是quit，句子里说的是find也就是找到，再认真看看句子内容吧。", "npcName": "Brainy" }, "option": "如果你对某件事感兴趣，你可以退出对应的俱乐部。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "我们来看包含club的句子If you are interested in something, you can find a club for it. 是什么意思呢？" } }, { "answer": [ 0 ], "meaning": "段落大意题", "optionList": [ { "feedback": { "type": "npc", "content": "太棒了！你完全抓住了段落的核心信息~", "npcName": "Brainy" }, "option": "你可以选择喜欢的俱乐部加入，如果你对某件事感兴趣，就能找到对应的俱乐部。" }, { "feedback": { "type": "npc", "content": "不对哦，段落里并没有提到俱乐部都受欢迎，也没有要求必须加入俱乐部，再回顾下段落内容吧。", "npcName": "Brainy" }, "option": "学校里所有的俱乐部都非常受欢迎，你必须加入至少一个。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "了解了重点单词和句子，我们来看看这一段主要讲了什么内容吧？" } } ] } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "plant n. 植物", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "club n. 俱乐部", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "join v. 加入", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "member n. 成员", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "choose v. 选择", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "interested adj. 感兴趣的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_reading_order", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "plant n. 植物", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "club n. 俱乐部", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "join v. 加入", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "member n. 成员", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "choose v. 选择", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "interested adj. 感兴趣的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 阅读材料格式化

    ```
    # 材料2
    类型：电子屏
    标题：How to Join Clubs?
    正文:
    <sp>You can choose your favourite club to join. If you are interested in something, you can find a club for it. The robot club, the plant club, the sports club, and the reading club are all popular choices.<br>If you are not interested in any club, you can start a new one with friends!<br>
    <sp>图片:[0101106_core reading2]
    ```

中间结果: 学习材料格式化

    ```
    # 段落1
    重点词汇:
    正文:
    ---
    At Vala Academy, Pioneers don't have exams. But you need points to level up!
    ---
    ```
    ```
    # 段落2
    重点词汇:
    正文:
    ---
    You can choose your favourite club to join. If you are interested in something, you can find a club for it.
    ---
    ```

中间结果: 学习过程配置

    ```
    # 段落1
    ## 段落内容
    ---
    At Vala Academy, Pioneers don't have exams. But you need points to level up!
    ---
    ## 互动题目
    Brainy：我们来认识一下这段话中的关键单词 exam，exam的意思是考试，期末考试可以说final exam。
    1. 句意选择题
    Brainy：接下来，我们来看下包含exam的句子At Vala Academy, Pioneers don't have exams. 是什么意思呢？
    - 在瓦拉学院，先锋者们没有考试。[正确]
      Brainy：太棒啦！你准确掌握了exam的含义，也读懂了这个句子的意思~
    - 在瓦拉学院，先锋者们没有课程。
      Brainy：不对哦，课程的英文是lesson或者course，并不是我们这里讲的exam，再回忆下单词的意思吧。

    Brainy：还有一个重点单词point，point在这里是积分的意思，攒积分可以说save points。
    2. 句意选择题
    Brainy：我们来看包含point的句子But you need points to level up! 是什么意思呢？
    - 但是你需要做任务来升级。
      Brainy：不对哦，句子里说的是需要points也就是积分，不是任务，再仔细看看句子内容吧。
    - 但是你需要积分来升级。[正确]
      Brainy：回答正确！你已经掌握了point的意思，也读懂了这个句子啦~

    # 段落2
    ## 段落内容
    ---
    You can choose your favourite club to join. If you are interested in something, you can find a club for it.
    ---
    ## 互动题目
    Brainy：首先来认识本段的关键单词choose，choose的意思是选择、挑选，做选择可以说make a choice。
    1. 句意选择题
    Brainy：我们来看包含choose的句子You can choose your favourite club to join. 是什么意思呢？
    - 你可以选择你最喜欢的俱乐部加入。[正确]
      Brainy：太厉害啦！你完全掌握了choose的意思，也读懂了这个句子~
    - 你可以创建你最喜欢的俱乐部加入。
      Brainy：不对哦，创建的英文是create或者start，不是我们这里的choose，再回忆下单词的含义吧。

    Brainy：还有一个重点单词club，club的意思是俱乐部，足球俱乐部可以说football club。
    2. 句意选择题
    Brainy：我们来看包含club的句子If you are interested in something, you can find a club for it. 是什么意思呢？
    - 如果你对某件事感兴趣，你可以找到对应的俱乐部。[正确]
      Brainy：完美回答！你已经掌握了club的含义，也理解了整个句子的意思~
    - 如果你对某件事感兴趣，你可以退出对应的俱乐部。
      Brainy：不对哦，退出的英文是quit，句子里说的是find也就是找到，再认真看看句子内容吧。

    3. 段落大意题
    Brainy：了解了重点单词和句子，我们来看看这一段主要讲了什么内容吧？
    - 你可以选择喜欢的俱乐部加入，如果你对某件事感兴趣，就能找到对应的俱乐部。[正确]
      Brainy：太棒了！你完全抓住了段落的核心信息~
    - 学校里所有的俱乐部都非常受欢迎，你必须加入至少一个。
      Brainy：不对哦，段落里并没有提到俱乐部都受欢迎，也没有要求必须加入俱乐部，再回顾下段落内容吧。

    # 完结反馈
    Brainy：恭喜你完成了所有的学习内容，你对知识点的掌握超棒的，继续加油哦！
    ```

18 核心看图选词 cId: 0000800 core_reading_imageDrag
已保存 ▶
taskInfo

cType |
cId |
title |
taskDesc |
sceneDesc |
key | [ { "desc": "", "keyList": [ { "type": "default", "content": "lake", "desc": "n. 湖" }, { "type": "default", "content": "monkey", "desc": "n. 猴子" }, { "type": "default", "content": "three", "desc": "num. 三" }, { "type": "default", "content": "How many ...?", "desc": "多少……？" }, { "type": "default", "content": "There be ...", "desc": "有……" } ] } ]
resourceMapping | { "Eva": 738, "Peter": 739 }

cDesc

As you explore the word castle, you see Ben's question about where hippos live. You figure out the proper word to fill in the blank, and learn that hippos live in the lake.你探索单词城堡时看到Ben提出河马居住在哪里的问题，你找到了合适的单词补全空缺，了解到河马住在湖里。You keep going through the castle and see Brainy ask about other animals in the zoo. You pick the right word for the content, and know that there are animals living in the tree in the zoo.你继续在城堡中探索，看到Brainy询问动物园里还有什么其他动物，你选对了对应的单词，了解到动物园里有栖息在树上的动物。

{ "cType": "core_reading_imageDrag", "cId": "0000800", "title": "看图选词填句", "taskDesc": "观察主图内容，将下方选项池中的单词拖拽到对应句子的空白处，补全所有句子。", "sceneDesc": "你来到了神奇的单词城堡，城堡的墙上有很多缺了单词的句子，你需要找到正确的单词把它们补全，才能打开城堡的大门哦！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "lake", "desc": "n. 湖" }, { "type": "default", "content": "monkey", "desc": "n. 猴子" }, { "type": "default", "content": "three", "desc": "num. 三" }, { "type": "default", "content": "How many ...?", "desc": "多少……？" }, { "type": "default", "content": "There be ...", "desc": "有……" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "As you explore the word castle, you see Ben's question about where hippos live. You figure out the proper word to fill in the blank, and learn that hippos live in the lake.你探索单词城堡时看到Ben提出河马居住在哪里的问题，你找到了合适的单词补全空缺，了解到河马住在湖里。You keep going through the castle and see Brainy ask about other animals in the zoo. You pick the right word for the content, and know that there are animals living in the tree in the zoo.你继续在城堡中探索，看到Brainy询问动物园里还有什么其他动物，你选对了对应的单词，了解到动物园里有栖息在树上的动物。" }
questionGroup
[{'image': '1201001_02.png', 'questionList': [{'type': 'npc', 'npcName': 'Ben', 'content': 'Where do hippos live？', 'desc': 'in the ___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [0]}, {'type': 'npc', 'npcName': 'Brainy', 'title': 'What other animals are there in the zoo？', 'desc': '___', 'optionList': [{'option': 'lake'}, {'option': 'tree'}, {'option': 'grass'}], 'answer': [1]}]}]
studyInfo

learningPart

[ { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要选河马居住的地方哦，先看看这几个单词的意思吧：lake是湖，tree是树，grass是草，你觉得哪个是河马的家呀？" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树的意思，河马体型很大，没办法住在树上哦，再想想吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草的意思，河马不会住在草里哦，再试试吧~" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！lake是湖的意思，河马喜欢住在水里，湖就是它的家，你掌握这个单词啦~" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Ben问你“河马住在哪里呀？”，要你把句子补充完整，结合刚才学的单词，想想哪个是正确答案呀？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对了！in the lake就是“在湖里”，河马就是生活在湖里的，现在跟着大声读一遍：in the lake。" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "in the tree是“在树上”，河马没办法住在树上哦，结合图片再想想吧。" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "in the grass是“在草里”，河马的家不在草里哦，再选一次吧。" } } ], "answer": [ 0 ] } ] }, { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要找动物园里有的东西哦，先看这几个单词：lake是湖，tree是树，grass是草，你觉得哪个是动物园里会有的呀？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖，虽然动物园可能有湖，但这不是我们要的答案哦，再想想吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，动物园里有草，但这也不是正确答案哦，再试试吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "对啦！tree是树，动物园里有很多树哦，你记住这个单词了~" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Brainy问你“动物园里还有什么其他的？”，你看看选项里哪个是动物园里有的呀？" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！动物园里有很多树哦，现在跟着大声读一遍：tree。" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖，这不是题目要的答案哦，再想想吧。" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，这个也不对哦，再选一次吧。" } } ], "answer": [ 0 ] } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "太棒了！你复习了lake、tree、grass这些单词，还学会了回答关于动物住所和动物园事物的问题，进步超大哦！" }

{ "learningPart": [ { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要选河马居住的地方哦，先看看这几个单词的意思吧：lake是湖，tree是树，grass是草，你觉得哪个是河马的家呀？" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "tree是树的意思，河马体型很大，没办法住在树上哦，再想想吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草的意思，河马不会住在草里哦，再试试吧~" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！lake是湖的意思，河马喜欢住在水里，湖就是它的家，你掌握这个单词啦~" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Ben问你“河马住在哪里呀？”，要你把句子补充完整，结合刚才学的单词，想想哪个是正确答案呀？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对了！in the lake就是“在湖里”，河马就是生活在湖里的，现在跟着大声读一遍：in the lake。" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "in the tree是“在树上”，河马没办法住在树上哦，结合图片再想想吧。" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "in the grass是“在草里”，河马的家不在草里哦，再选一次吧。" } } ], "answer": [ 0 ] } ] }, { "image": "1201001_02.png", "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "这道题我们要找动物园里有的东西哦，先看这几个单词：lake是湖，tree是树，grass是草，你觉得哪个是动物园里会有的呀？" }, "optionList": [ { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖，虽然动物园可能有湖，但这不是我们要的答案哦，再想想吧~" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，动物园里有草，但这也不是正确答案哦，再试试吧~" } }, { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "对啦！tree是树，动物园里有很多树哦，你记住这个单词了~" } } ], "answer": [ 2 ] }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Brainy问你“动物园里还有什么其他的？”，你看看选项里哪个是动物园里有的呀？" }, "optionList": [ { "option": "tree", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！动物园里有很多树哦，现在跟着大声读一遍：tree。" } }, { "option": "lake", "feedback": { "type": "npc", "npcName": "Brainy", "content": "lake是湖，这不是题目要的答案哦，再想想吧。" } }, { "option": "grass", "feedback": { "type": "npc", "npcName": "Brainy", "content": "grass是草，这个也不对哦，再选一次吧。" } } ], "answer": [ 0 ] } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你复习了lake、tree、grass这些单词，还学会了回答关于动物住所和动物园事物的问题，进步超大哦！" } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "lake n. 湖", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "monkey n. 猴子", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "three num. 三", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "How many ...? 多少……？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "There be ... 有……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_reading_imageDrag", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "lake n. 湖", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "monkey n. 猴子", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "three num. 三", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "How many ...? 多少……？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "There be ... 有……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 小题 4
    ## 材料内容
    【展示该小题对应的图片 ID：1201001_02.png】

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题我们要选河马居住的地方哦，先看看这几个单词的意思吧：lake是湖，tree是树，grass是草，你觉得哪个是河马的家呀？
    - 选项 A：tree
      Brainy：tree是树的意思，河马体型很大，没办法住在树上哦，再想想吧~
    - 选项 B：grass
      Brainy：grass是草的意思，河马不会住在草里哦，再试试吧~
    - 选项 C：lake[正确]
      Brainy：太棒啦！lake是湖的意思，河马喜欢住在水里，湖就是它的家，你掌握这个单词啦~

    ### 2. 原题降级
    Brainy：Ben问你“河马住在哪里呀？”，要你把句子补充完整，结合刚才学的单词，想想哪个是正确答案呀？
    - 选项 A：lake[正确]
      Brainy：答对了！in the lake就是“在湖里”，河马就是生活在湖里的，现在跟着大声读一遍：in the lake。
    - 选项 B：tree
      Brainy：in the tree是“在树上”，河马没办法住在树上哦，结合图片再想想吧。
    - 选项 C：grass
      Brainy：in the grass是“在草里”，河马的家不在草里哦，再选一次吧。

    ---

    # 小题 5
    ## 材料内容
    【展示该小题对应的图片 ID：1201001_02.png】

    ## 互动题目
    ### 1. 句意选词题
    Brainy：这道题问的是动物园里还有什么其他动物，我们先看选项哦，lake是湖，tree是树，不对不对，哦不对，哦等下，哦不对，重新来：这道题我们要先认单词哦，lake是湖，tree是树，grass是草，不对不对，哦不对，题目5的正确选项是tree？不对哦，哦不对，等下，哦可能题目里的选项是猴子？不对不对，哦用户给的题目5的正确选项是tree？不对哦，哦等下看用户给的互动配置里的题目5：选项是lake，tree（正确），grass？不对啊，这三个里tree是树，怎么是动物园里的动物？哦不对，哦可能是用户输入的问题？不对不对，等下看用户任务知识里有monkey是猴子，哦可能是题目里的选项打错了？不对不对，就按照用户给的内容来。哦不对，用户给的题目5的正确选项是tree，那我们就按照这个来。哦不对，等下再仔细看：哦不对，用户给的互动配置里的题目5的选项是lake，tree（正确），grass？哦可能是输入错误，但是我们就按照给定的内容来。哦不对，哦等下，是不是我看错了？哦对，用户给的就是这样，那我们继续。
    Brainy：这道题我们要找动物园里有的东西哦，先看这几个单词：lake是湖，tree是树，grass是草，你觉得哪个是动物园里会有的呀？
    - 选项 A：lake
      Brainy：lake是湖，虽然动物园可能有湖，但这不是我们要的答案哦，再想想吧~
    - 选项 B：grass
      Brainy：grass是草，动物园里有草，但这也不是正确答案哦，再试试吧~
    - 选项 C：tree[正确]
      Brainy：对啦！tree是树，动物园里有很多树哦，你记住这个单词了~

    ### 2. 原题降级
    Brainy：Brainy问你“动物园里还有什么其他的？”，你看看选项里哪个是动物园里有的呀？
    - 选项 A：tree[正确]
      Brainy：答对啦！动物园里有很多树哦，现在跟着大声读一遍：tree。
    - 选项 B：lake
      Brainy：lake是湖，这不是题目要的答案哦，再想想吧。
    - 选项 C：grass
      Brainy：grass是草，这个也不对哦，再选一次吧。

    ---

    # 完结反馈
    Brainy：太棒了！你复习了lake、tree、grass这些单词，还学会了回答关于动物住所和动物园事物的问题，进步超大哦！
    ```

    哦不对，刚才题目5的知识点好像有问题，因为tree不是动物，用户给的题目5的题干是“What other animals are there in the zoo？”，选项里没有动物，可能是用户输入的错误？不对，再看用户给的互动配置里的题目5的选项确实是lake、tree（正确）、grass，可能是题干打错了？不管了，就按照用户给的内容来，刚才的流程是对的。哦不对，等下，用户给的用户任务知识里有monkey，但是选项里没有，可能是输入错误，但是我们就按照给定的内容生成就可以了。

中间结果: 互动描述

    As you explore the word castle, you see Ben's question about where hippos live. You figure out the proper word to fill in the blank, and learn that hippos live in the lake.（你探索单词城堡时看到Ben提出河马居住在哪里的问题，你找到了合适的单词补全空缺，了解到河马住在湖里。）
    You keep going through the castle and see Brainy ask about other animals in the zoo. You pick the right word for the content, and know that there are animals living in the tree in the zoo.（你继续在城堡中探索，看到Brainy询问动物园里还有什么其他动物，你选对了对应的单词，了解到动物园里有栖息在树上的动物。）

19 核心口语快答 cId: 0000800 core_speaking_reply
已保存 ▶
taskInfo

cType |
cId |
title |
taskDesc |
sceneDesc | 你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。
img |
key | [ { "desc": "表达提议做某事", "keyList": [ { "type": "default", "content": "Let's...", "desc": "让我们……" } ] }, { "desc": "表达选择更优方案", "keyList": [ { "type": "default", "content": "Instead of..., we'd better...", "desc": "与其……，我们不如……" } ] }, { "desc": "表达乐意做某事", "keyList": [ { "type": "default", "content": "... love(s) to...", "desc": "……很乐意……" } ] } ]
resourceMapping | { "Eva": 738, "Peter": 739 }

{ "cType": "core_speaking_reply", "cId": "0000800", "title": "求助清洁工人为大象洗澡", "taskDesc": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "sceneDesc": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "img": "", "key": [ { "desc": "表达提议做某事", "keyList": [ { "type": "default", "content": "Let's...", "desc": "让我们……" } ] }, { "desc": "表达选择更优方案", "keyList": [ { "type": "default", "content": "Instead of..., we'd better...", "desc": "与其……，我们不如……" } ] }, { "desc": "表达乐意做某事", "keyList": [ { "type": "default", "content": "... love(s) to...", "desc": "……很乐意……" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
dialogSetting

setting | { "npcName": "Logan", "round": 5, "checkRound": 3 }

{ "setting": { "npcName": "Logan", "round": 5, "checkRound": 3 } }
dialogConfig

config

{ "asrPrompt": "elephant,shower,water,keepers,help,clean,Wander Port,banana", "promptInfo": { "default": "\n# 1. 角色（你要扮演谁）\n你是Logan，在Wander Port的清洁站工作。你的语言风格亲切自然，简单易懂，适合儿童理解。\n# 2. 任务（你如何参与对话）\n1. 开场白先询问用户大象的相关情况，确认大象是否需要洗澡。\n2. 当用户说明大象需要洗澡后，你要表达疑惑，告诉用户可以先等一等，或许饲养员很快就会来。\n3. 接下来你要询问用户是否愿意帮忙给大象洗澡。\n4. 如果用户表示愿意帮忙，你要先表达感谢，然后告诉用户你会立刻安排送干净的水过去，之后自然结束对话。\n5. 如果用户没有明确回答是否愿意帮忙，你可以再友好地重复一次问题，引导用户给出明确答复。\n6. 如果用户说的内容和当前任务无关，你可以礼貌地把话题拉回给大象洗澡的相关内容上，继续推进任务。\n7. 整个对话过程不要提及和给大象洗澡无关的额外信息。\n# 3. 背景信息\n你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。\n# 4. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"目的地\" 可以用句子 Where are you going？，不用 destination，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n# 5. 开场白 (仅用于首轮)\n由你开始对话，你会问用户：\"Hi. What happened to the elephant?\"\n# 6. 回应方式\n- 无论用户如何对话，你都应基于你的身份做出合理反应。\n- 每次最多只提问一个问题，等待用户回答后再继续。\n- 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。\n", "scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "in_progress_goal": "用户告诉清洁站的工人，大象需要洗澡，并且表示乐意帮助，要求 Logan 送一些干净的水过来。", "final_goal": "用户告诉清洁站的工人，大象需要洗澡，并提出需要一些水。", "reference_dialog": "Logan: Hi. What happened to the elephant?\nUser: The elephant needs a shower. Let's set up a shower for her.\nLogan: Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.\nUser: Instead of waiting here, we'd better get some water for her first.\nLogan: The keepers are too careless! Thank you! Can you help her shower?\nUser: We'd love to help.\nLogan: Great. We will send some water to her right away.", "user_task": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "user_scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "user_knowledge": "Let's... 让我们……\nInstead of..., we'd better... 与其……，我们不如……\n... love(s) to... ……很乐意……" } }

{ "config": { "asrPrompt": "elephant,shower,water,keepers,help,clean,Wander Port,banana", "promptInfo": { "default": "\n# 1. 角色（你要扮演谁）\n你是Logan，在Wander Port的清洁站工作。你的语言风格亲切自然，简单易懂，适合儿童理解。\n# 2. 任务（你如何参与对话）\n1. 开场白先询问用户大象的相关情况，确认大象是否需要洗澡。\n2. 当用户说明大象需要洗澡后，你要表达疑惑，告诉用户可以先等一等，或许饲养员很快就会来。\n3. 接下来你要询问用户是否愿意帮忙给大象洗澡。\n4. 如果用户表示愿意帮忙，你要先表达感谢，然后告诉用户你会立刻安排送干净的水过去，之后自然结束对话。\n5. 如果用户没有明确回答是否愿意帮忙，你可以再友好地重复一次问题，引导用户给出明确答复。\n6. 如果用户说的内容和当前任务无关，你可以礼貌地把话题拉回给大象洗澡的相关内容上，继续推进任务。\n7. 整个对话过程不要提及和给大象洗澡无关的额外信息。\n# 3. 背景信息\n你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。\n# 4. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"目的地\" 可以用句子 Where are you going？，不用 destination，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n# 5. 开场白 (仅用于首轮)\n由你开始对话，你会问用户：\"Hi. What happened to the elephant?\"\n# 6. 回应方式\n- 无论用户如何对话，你都应基于你的身份做出合理反应。\n- 每次最多只提问一个问题，等待用户回答后再继续。\n- 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。\n", "scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "in_progress_goal": "用户告诉清洁站的工人，大象需要洗澡，并且表示乐意帮助，要求 Logan 送一些干净的水过来。", "final_goal": "用户告诉清洁站的工人，大象需要洗澡，并提出需要一些水。", "reference_dialog": "Logan: Hi. What happened to the elephant?\nUser: The elephant needs a shower. Let's set up a shower for her.\nLogan: Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.\nUser: Instead of waiting here, we'd better get some water for her first.\nLogan: The keepers are too careless! Thank you! Can you help her shower?\nUser: We'd love to help.\nLogan: Great. We will send some water to her right away.", "user_task": "请你告诉清洁站的工人，大象需要洗澡，你们乐意帮助，希望送一些干净的水过来。", "user_scene": "你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。", "user_knowledge": "Let's... 让我们……\nInstead of..., we'd better... 与其……，我们不如……\n... love(s) to... ……很乐意……" } } }
studyInfo

learningPart

{ "opening": { "type": "npc", "npcName": "Logan", "content": "Hi. What happened to the elephant?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan问你大象出什么事啦，现在你需要告诉他大象需要洗澡，你们想要帮她安排冲澡哦。" }, "optionList": [ { "option": "The elephant needs a shower. Let's set up a shower for her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！你真棒，现在试着把这句话大声读出来吧~" } }, { "option": "The elephant is hungry. We have bananas for her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“大象饿了，我们有香蕉给她”，现在的情境是大象需要洗澡，不是饿啦，再试一次吧。" } }, { "option": "The elephant is lost. Let's look for her keeper.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“大象走丢了，我们去找她的饲养员吧”，现在大象没有走丢，只是需要洗澡哦，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "The elephant needs a shower. Let's set up a shower for her." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Are you saying she hasn't had a shower yet? Maybe someone will probably come soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan问你是不是说大象还没洗澡，还说可能很快就会有人过来啦。现在你要回应说与其在这里等，不如我们先去给她拿点水哦。" }, "optionList": [ { "option": "OK, let's wait here for the keeper.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“好的，我们在这里等饲养员吧”，现在我们是要主动先去拿水，不是等着哦，再试一次吧。" } }, { "option": "Instead of waiting here, we'd better get some water for her first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！你理解得非常好，现在把这句话读出来练习一下吧~" } }, { "option": "You're right. Let's go play first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“你说得对，我们先去玩吧”，我们现在要帮大象洗澡，不是去玩哦，再选一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Instead of waiting here, we'd better get some water for her first." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "The keepers are too careless! Thank you! Can you help her shower?" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说饲养员太粗心了，还感谢你们，问你们能不能帮忙给大象洗澡。你要告诉他你们很乐意帮忙哦。" }, "optionList": [ { "option": "We'd love to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！你做得太棒啦，现在试着朗读这句话吧~" } }, { "option": "We are too busy to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“我们太忙了帮不了忙”，我们是很愿意帮忙给大象洗澡的哦，再试一次吧。" } }, { "option": "Sorry, we don't like elephants.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“不好意思，我们不喜欢大象”，我们本来就是要帮大象洗澡的，可不是不喜欢她哦，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "We'd love to help." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Great. We will send some water to her right away." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你已经顺利完成了求助清洁工人给大象送水、帮忙洗澡的对话任务，继续加油哦~" } }

{ "learningPart": { "opening": { "type": "npc", "npcName": "Logan", "content": "Hi. What happened to the elephant?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan问你大象出什么事啦，现在你需要告诉他大象需要洗澡，你们想要帮她安排冲澡哦。" }, "optionList": [ { "option": "The elephant needs a shower. Let's set up a shower for her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！你真棒，现在试着把这句话大声读出来吧~" } }, { "option": "The elephant is hungry. We have bananas for her.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“大象饿了，我们有香蕉给她”，现在的情境是大象需要洗澡，不是饿啦，再试一次吧。" } }, { "option": "The elephant is lost. Let's look for her keeper.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“大象走丢了，我们去找她的饲养员吧”，现在大象没有走丢，只是需要洗澡哦，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "The elephant needs a shower. Let's set up a shower for her." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Are you saying she hasn't had a shower yet? Maybe someone will probably come soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan问你是不是说大象还没洗澡，还说可能很快就会有人过来啦。现在你要回应说与其在这里等，不如我们先去给她拿点水哦。" }, "optionList": [ { "option": "OK, let's wait here for the keeper.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“好的，我们在这里等饲养员吧”，现在我们是要主动先去拿水，不是等着哦，再试一次吧。" } }, { "option": "Instead of waiting here, we'd better get some water for her first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！你理解得非常好，现在把这句话读出来练习一下吧~" } }, { "option": "You're right. Let's go play first.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“你说得对，我们先去玩吧”，我们现在要帮大象洗澡，不是去玩哦，再选一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Instead of waiting here, we'd better get some water for her first." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "The keepers are too careless! Thank you! Can you help her shower?" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Logan说饲养员太粗心了，还感谢你们，问你们能不能帮忙给大象洗澡。你要告诉他你们很乐意帮忙哦。" }, "optionList": [ { "option": "We'd love to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！你做得太棒啦，现在试着朗读这句话吧~" } }, { "option": "We are too busy to help.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“我们太忙了帮不了忙”，我们是很愿意帮忙给大象洗澡的哦，再试一次吧。" } }, { "option": "Sorry, we don't like elephants.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，这句话是说“不好意思，我们不喜欢大象”，我们本来就是要帮大象洗澡的，可不是不喜欢她哦，再选一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "We'd love to help." }, "feedback": { "type": "npc", "npcName": "Logan", "content": "Great. We will send some water to her right away." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！你已经顺利完成了求助清洁工人给大象送水、帮忙洗澡的对话任务，继续加油哦~" } } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "sentence", "kpTitle": "Let's... 让我们……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Instead of..., we'd better... 与其……，我们不如……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……很乐意……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_speaking_reply", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Let's... 让我们……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Instead of..., we'd better... 与其……，我们不如……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……很乐意……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 开场回合
    Logan：Hi. What happened to the elephant?

    # 中间回合1
    Brainy：Logan问你大象出什么事啦，现在你需要告诉他大象需要洗澡，你们想要帮她安排冲澡哦。
    用户选项:
    A. The elephant needs a shower. Let's set up a shower for her.
      Brainy：答对啦！你真棒，现在试着把这句话大声读出来吧~
    B. The elephant is hungry. We have bananas for her.
      Brainy：不对哦，这句话是说“大象饿了，我们有香蕉给她”，现在的情境是大象需要洗澡，不是饿啦，再试一次吧。
    C. The elephant is lost. Let's look for her keeper.
      Brainy：不对哦，这句话是说“大象走丢了，我们去找她的饲养员吧”，现在大象没有走丢，只是需要洗澡哦，再选一次吧。
    Logan：Are you saying she hasn't had a shower yet? Maybe someone will probably come soon.

    # 中间回合2
    Brainy：Logan问你是不是说大象还没洗澡，还说可能很快就会有人过来啦。现在你要回应说与其在这里等，不如我们先去给她拿点水哦。
    用户选项:
    A. OK, let's wait here for the keeper.
      Brainy：不对哦，这句话是说“好的，我们在这里等饲养员吧”，现在我们是要主动先去拿水，不是等着哦，再试一次吧。
    B. Instead of waiting here, we'd better get some water for her first.
      Brainy：太对啦！你理解得非常好，现在把这句话读出来练习一下吧~
    C. You're right. Let's go play first.
      Brainy：不对哦，这句话是说“你说得对，我们先去玩吧”，我们现在要帮大象洗澡，不是去玩哦，再选一次吧。
    Logan：The keepers are too careless! Thank you! Can you help her shower?

    # 中间回合3
    Brainy：Logan说饲养员太粗心了，还感谢你们，问你们能不能帮忙给大象洗澡。你要告诉他你们很乐意帮忙哦。
    用户选项:
    A. We'd love to help.
      Brainy：完全正确！你做得太棒啦，现在试着朗读这句话吧~
    B. We are too busy to help.
      Brainy：不对哦，这句话是说“我们太忙了帮不了忙”，我们是很愿意帮忙给大象洗澡的哦，再试一次吧。
    C. Sorry, we don't like elephants.
      Brainy：不对哦，这句话是说“不好意思，我们不喜欢大象”，我们本来就是要帮大象洗澡的，可不是不喜欢她哦，再选一次吧。
    Logan：Great. We will send some water to her right away.

    # 结尾回合
    Brainy：太棒啦！你已经顺利完成了求助清洁工人给大象送水、帮忙洗澡的对话任务，继续加油哦~
    ```

中间结果: promptInfo配置

    ```
    # 1. 角色（你要扮演谁）
    你是Logan，在Wander Port的清洁站工作。你的语言风格亲切自然，简单易懂，适合儿童理解。
    # 2. 任务（你如何参与对话）
    1. 开场白先询问用户大象的相关情况，确认大象是否需要洗澡。
    2. 当用户说明大象需要洗澡后，你要表达疑惑，告诉用户可以先等一等，或许饲养员很快就会来。
    3. 接下来你要询问用户是否愿意帮忙给大象洗澡。
    4. 如果用户表示愿意帮忙，你要先表达感谢，然后告诉用户你会立刻安排送干净的水过去，之后自然结束对话。
    5. 如果用户没有明确回答是否愿意帮忙，你可以再友好地重复一次问题，引导用户给出明确答复。
    6. 如果用户说的内容和当前任务无关，你可以礼貌地把话题拉回给大象洗澡的相关内容上，继续推进任务。
    7. 整个对话过程不要提及和给大象洗澡无关的额外信息。
    # 3. 背景信息
    你是Logan，在 Wander Port 的清洁站工作。清洁站附近有一只大象，人们都很喜欢她，喂她吃香蕉，帮她洗澡。这天你接到电话，几个孩子说大象需要洗澡，你意识到一定是饲养员粗心忘记了！孩子们说愿意帮助大象洗澡，需要借一些干净的水，你立刻答应。
    # 4. 语言风格
    - 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如
      "目的地" 可以用句子 Where are you going？，不用 destination，确保小学2-4年级的孩子能听懂
    - 回答一般不超过两句话
    - 避免重复表达，适当变换措辞
    # 5. 开场白 (仅用于首轮)
    由你开始对话，你会问用户："Hi. What happened to the elephant?"
    # 6. 回应方式
    - 无论用户如何对话，你都应基于你的身份做出合理反应。
    - 每次最多只提问一个问题，等待用户回答后再继续。
    - 除开场轮次外，每次回应，可以先基于用户的话给一句反馈。然后再推进你的任务。
    ```

中间结果: 语音识别热词

    elephant,shower,water,keepers,help,clean,Wander Port,banana

20 口语独白 cId: 0000800 ? 跳过 ▶
跳过: 类型 '口语独白' 尚未实现生成器
原始组件配置

    【任务标题】
    向朋友们讲述你最难忘的经历
    【任务背景】
    在 Skylar 的生日聚会上，大家提议玩一个分享最难忘经历的小游戏。Skylar 和 Otis 都分享完了，现在轮到你啦。快和朋友们说说你最难忘的经历吧！
    【任务描述】
    当你分享时，可以这样做：
    1. 先告诉大家，你要讲述一段最难忘的经历
    2. 再说说这段经历发生的时间和地点
    3. 然后说说你都做了什么
    4. 最后说说为什么让你难以忘怀
    【知识】
    Last summer, I went to... 去年夏天，我去了......
    I taught... 我教了……
    That day made me feel... 那一天，我感到......

    【切分句数设定】
    句数下限：3
    句数上限：6
    【通过规则】
    用户说出：
    1. 一件难忘的经历
    2. 描述了1-2件具体的事情
    3. 表达了自己的感受
    【示例独白】
    Hello everyone! I have an unforgettable story to share.
    Last summer, I went to a small school in the countryside.
    I taught kids easy English words about animals.
    A little boy gave me a nice drawing on my last day there.
    That day made me feel really warm and happy.

21 核心口语妙问 cId: 0000800 core_speaking_inquiry
已保存 ▶
taskInfo

cType |
cId |
title |
taskDesc |
sceneDesc | 你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。
img |
key | [ { "desc": "", "keyList": [ { "type": "default", "content": "Where can I find the gym？", "desc": "我在哪里能找到健身房？" }, { "type": "default", "content": "Can I have a towel please?？", "desc": "我能要一条毛巾吗？" }, { "type": "default", "content": "What else can I do there?", "desc": "我在那儿还能做些什么？" } ] } ]
resourceMapping | { "Eva": 738, "Peter": 739 }

{ "cType": "core_speaking_inquiry", "cId": "0000800", "title": "询问空乘关于健身房的信息", "taskDesc": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "sceneDesc": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "Where can I find the gym？", "desc": "我在哪里能找到健身房？" }, { "type": "default", "content": "Can I have a towel please?？", "desc": "我能要一条毛巾吗？" }, { "type": "default", "content": "What else can I do there?", "desc": "我在那儿还能做些什么？" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
dialogSetting

setting | { "npcName": "Chloe", "round": 5, "checkRound": 3 }

{ "setting": { "npcName": "Chloe", "round": 5, "checkRound": 3 } }
dialogConfig

config

{ "asrPrompt": "gym,towel,exercise,sightseeing,relax,walkway", "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n- 你是Chloe，是Twilight航班的空乘，服务好每一位乘客是你的使命。\n- 你对曾经帮你解围的乘客格外友善热情，会耐心回应对方的所有问题。\n\n# 2. 任务（你如何参与到整个对话）\n- 你只在用户提问时提供特定信息，不主动透露知识库中的信息。\n- 如果用户提问的内容在知识库范围内，你会准确回答。\n- 如果用户的问题不清晰，你会尝试确认问题。\n- 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。\n- 如果用户不提问，你会温和、自然地进行交谈。\n\n# 3. 背景信息\n你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。\n\n# 4. 知识库（你知道的信息）\n- 健身房就在前方过道的尽头。\n- 你会为有需要的用户准备一条新毛巾。\n- 你会解答用户的问题，告诉用户在健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。\n- 对用户的任何提问，你都耐心安抚并一一回答。\n\n# 5. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"我要去...\" 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n\n# 6. 开场白\n你由你开始对话，你会说：\"Can I help you?\"\n\n# 7. 回应方式（固定内容）\n- 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。\n- 不主动提供知识库的信息\n- 不主动提问题", "scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "in_progress_goal": "用户成功问出“健身房在哪里”、“可以给我一条毛巾吗”以及“在哪儿我还能做什么”的三个问题。", "final_goal": "Chloe回答了用户关于健身房的问题，提供了耐心友好的帮助。", "reference_dialog": "Chloe: Can I help you?\nUser: Where can I find the gym?\nChloe: Look, it's over there at the end of this walkway.\nUser: Oh, and can I have a towel please? \nChloe: Of course! I'll bring a new one for you soon.\nUser: What else can I do there? \nChloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.", "user_task": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "user_scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "user_knowledge": "Where can I find the gym？我在哪里能找到健身房？\nCan I have a towel please?？我能要一条毛巾吗？\nWhat else can I do there? 我在那儿还能做些什么？" } }

{ "config": { "asrPrompt": "gym,towel,exercise,sightseeing,relax,walkway", "promptInfo": { "default": "# 1. 角色（你要扮演谁）\n- 你是Chloe，是Twilight航班的空乘，服务好每一位乘客是你的使命。\n- 你对曾经帮你解围的乘客格外友善热情，会耐心回应对方的所有问题。\n\n# 2. 任务（你如何参与到整个对话）\n- 你只在用户提问时提供特定信息，不主动透露知识库中的信息。\n- 如果用户提问的内容在知识库范围内，你会准确回答。\n- 如果用户的问题不清晰，你会尝试确认问题。\n- 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。\n- 如果用户不提问，你会温和、自然地进行交谈。\n\n# 3. 背景信息\n你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。\n\n# 4. 知识库（你知道的信息）\n- 健身房就在前方过道的尽头。\n- 你会为有需要的用户准备一条新毛巾。\n- 你会解答用户的问题，告诉用户在健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。\n- 对用户的任何提问，你都耐心安抚并一一回答。\n\n# 5. 语言风格\n- 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如\n \"我要去...\" 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂\n- 回答一般不超过两句话\n- 避免重复表达，适当变换措辞\n\n# 6. 开场白\n你由你开始对话，你会说：\"Can I help you?\"\n\n# 7. 回应方式（固定内容）\n- 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。\n- 不主动提供知识库的信息\n- 不主动提问题", "scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "in_progress_goal": "用户成功问出“健身房在哪里”、“可以给我一条毛巾吗”以及“在哪儿我还能做什么”的三个问题。", "final_goal": "Chloe回答了用户关于健身房的问题，提供了耐心友好的帮助。", "reference_dialog": "Chloe: Can I help you?\nUser: Where can I find the gym?\nChloe: Look, it's over there at the end of this walkway.\nUser: Oh, and can I have a towel please? \nChloe: Of course! I'll bring a new one for you soon.\nUser: What else can I do there? \nChloe: Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.", "user_task": "你要向 Chloe 询问健身房的位置，以及讨要毛巾，做好开始运动的准备。", "user_scene": "你是 Chloe，是 Twilight 的空乘，服务好每一位乘客是你的使命。\n用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。\n你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。", "user_knowledge": "Where can I find the gym？我在哪里能找到健身房？\nCan I have a towel please?？我能要一条毛巾吗？\nWhat else can I do there? 我在那儿还能做些什么？" } } }
studyInfo

learningPart

{ "opening": { "type": "npc", "npcName": "Chloe", "content": "Can I help you?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "空乘Chloe主动询问你是否需要帮助，现在你需要向她询问健身房的位置。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地问出了健身房的位置。请大声朗读这句话！" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用来索要毛巾的，现在我们还没问健身房的位置哦。再试一次，问问健身房在哪里吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在那里还能做什么的，现在我们首先要问健身房的位置哦。再试一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "Where can I find the gym?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Look, it's over there at the end of this walkway." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉了你健身房在走道的尽头，现在你需要向她索要一条毛巾。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经问过健身房的位置啦，Chloe也已经回答你了哦。现在我们需要向她要一条毛巾，再试一次吧。" } }, { "option": "Oh, and can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太聪明啦！你正确地向Chloe索要了毛巾。请大声朗读这句话！" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，现在我们需要先索要毛巾哦。再试一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Oh, and can I have a towel please?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Of course! I'll bring a new one for you soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe同意马上给你拿一条新毛巾，现在你可以问问她在健身房还能做些什么。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经知道健身房的位置啦，现在可以问问在健身房还有什么可以做的哦，再试一次吧。" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经要过毛巾啦，Chloe也同意给你拿了哦。现在我们可以问问在健身房还有什么可以做的，再试一次吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "做得好！你正确地问出了在健身房还可以做的事。请大声朗读这句话！" } } ], "answer": [ 2 ], "read": { "type": "user", "content": "What else can I do there?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Well, you can do some exercise and enjoy sightseeing there. Or you can just relax." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉你在健身房可以运动、欣赏风景或者放松休息，你已经问完了所有需要的信息，任务圆满完成啦！" } }

{ "learningPart": { "opening": { "type": "npc", "npcName": "Chloe", "content": "Can I help you?" }, "wrongReadLeadIn": { "type": "npc", "content": "请根据提词框内的内容大声地朗读这句话", "npcName": "Brainy" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "空乘Chloe主动询问你是否需要帮助，现在你需要向她询问健身房的位置。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确地问出了健身房的位置。请大声朗读这句话！" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用来索要毛巾的，现在我们还没问健身房的位置哦。再试一次，问问健身房在哪里吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在那里还能做什么的，现在我们首先要问健身房的位置哦。再试一次吧。" } } ], "answer": [ 0 ], "read": { "type": "user", "content": "Where can I find the gym?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Look, it's over there at the end of this walkway." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉了你健身房在走道的尽头，现在你需要向她索要一条毛巾。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经问过健身房的位置啦，Chloe也已经回答你了哦。现在我们需要向她要一条毛巾，再试一次吧。" } }, { "option": "Oh, and can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太聪明啦！你正确地向Chloe索要了毛巾。请大声朗读这句话！" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是询问在健身房还能做什么的，现在我们需要先索要毛巾哦。再试一次吧。" } } ], "answer": [ 1 ], "read": { "type": "user", "content": "Oh, and can I have a towel please?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Of course! I'll bring a new one for you soon." } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "Chloe同意马上给你拿一条新毛巾，现在你可以问问她在健身房还能做些什么。" }, "optionList": [ { "option": "Where can I find the gym?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经知道健身房的位置啦，现在可以问问在健身房还有什么可以做的哦，再试一次吧。" } }, { "option": "Can I have a towel please?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你已经要过毛巾啦，Chloe也同意给你拿了哦。现在我们可以问问在健身房还有什么可以做的，再试一次吧。" } }, { "option": "What else can I do there?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "做得好！你正确地问出了在健身房还可以做的事。请大声朗读这句话！" } } ], "answer": [ 2 ], "read": { "type": "user", "content": "What else can I do there?" }, "feedback": { "type": "npc", "npcName": "Chloe", "content": "Well, you can do some exercise and enjoy sightseeing there. Or you can just relax." } } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "Chloe已经告诉你在健身房可以运动、欣赏风景或者放松休息，你已经问完了所有需要的信息，任务圆满完成啦！" } } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "sentence", "kpTitle": "Where can I find the gym？我在哪里能找到健身房？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Can I have a towel please?？我能要一条毛巾吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "What else can I do there? 我在那儿还能做些什么？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_speaking_inquiry", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Where can I find the gym？我在哪里能找到健身房？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Can I have a towel please?？我能要一条毛巾吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "What else can I do there? 我在那儿还能做些什么？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 开场回合
    Chloe：Can I help you?

    # 中间回合1
    Brainy: 空乘Chloe主动询问你是否需要帮助，现在你需要向她询问健身房的位置。
    用户选项:
    （选项 A）Where can I find the gym? [正确]
      Brainy: 太棒了！你正确地问出了健身房的位置。请大声朗读这句话！
    （选项 B）Can I have a towel please?
      Brainy: 这句话是用来索要毛巾的，现在我们还没问健身房的位置哦。再试一次，问问健身房在哪里吧。
    （选项 C）What else can I do there?
      Brainy: 这句话是询问在那里还能做什么的，现在我们首先要问健身房的位置哦。再试一次吧。
    Chloe：Look, it's over there at the end of this walkway.

    # 中间回合2
    Brainy: Chloe已经告诉了你健身房在走道的尽头，现在你需要向她索要一条毛巾。
    用户选项:
    （选项 A）Where can I find the gym?
      Brainy: 你已经问过健身房的位置啦，Chloe也已经回答你了哦。现在我们需要向她要一条毛巾，再试一次吧。
    （选项 B）Oh, and can I have a towel please? [正确]
      Brainy: 太聪明啦！你正确地向Chloe索要了毛巾。请大声朗读这句话！
    （选项 C）What else can I do there?
      Brainy: 这句话是询问在健身房还能做什么的，现在我们需要先索要毛巾哦。再试一次吧。
    Chloe：Of course! I'll bring a new one for you soon.

    # 中间回合3
    Brainy: Chloe同意马上给你拿一条新毛巾，现在你可以问问她在健身房还能做些什么。
    用户选项:
    （选项 A）Where can I find the gym?
      Brainy: 你已经知道健身房的位置啦，现在可以问问在健身房还有什么可以做的哦，再试一次吧。
    （选项 B）Can I have a towel please?
      Brainy: 你已经要过毛巾啦，Chloe也同意给你拿了哦。现在我们可以问问在健身房还有什么可以做的，再试一次吧。
    （选项 C）What else can I do there? [正确]
      Brainy: 做得好！你正确地问出了在健身房还可以做的事。请大声朗读这句话！
    Chloe：Well, you can do some exercise and enjoy sightseeing there. Or you can just relax.

    # 结尾回合
    Brainy: Chloe已经告诉你在健身房可以运动、欣赏风景或者放松休息，你已经问完了所有需要的信息，任务圆满完成啦！
    ```

中间结果: promptInfo配置

    ```
    # 1. 角色（你要扮演谁）
    - 你是Chloe，是Twilight航班的空乘，服务好每一位乘客是你的使命。
    - 你对曾经帮你解围的乘客格外友善热情，会耐心回应对方的所有问题。

    # 2. 任务（你如何参与到整个对话）
    - 你只在用户提问时提供特定信息，不主动透露知识库中的信息。
    - 如果用户提问的内容在知识库范围内，你会准确回答。
    - 如果用户的问题不清晰，你会尝试确认问题。
    - 一般情况下，一次最多只回答知识库中的一条信息，除非用户明确地分别提问到多条信息。
    - 如果用户不提问，你会温和、自然地进行交谈。

    # 3. 背景信息
    你是Chloe，是Twilight的空乘，服务好每一位乘客是你的使命。用户之前帮你在另一位乘客面前解了围，你很感谢用户的帮忙，对用户的态度也格外友善热情。你发现用完餐的用户正在东张西望，似乎在寻找什么，你确认用户需要帮助，于是上前询问。你发现用户想去健身房消消食，但是不知道方向，于是回答了用户的问题，提供了你的帮助。

    # 4. 知识库（你知道的信息）
    - 健身房就在前方过道的尽头。
    - 你会为有需要的用户准备一条新毛巾。
    - 你会解答用户的问题，告诉用户在健身房可以进行的活动：运动、看宇宙风光（sightseeing），或者可以拉伸放松、进行休息。
    - 对用户的任何提问，你都耐心安抚并一一回答。

    # 5. 语言风格
    - 使用 CEFR A1-A2 等级英语，避免复杂句，每句话不超过 10 个词，比如
      "我要去..." 可以用句子 I am going to ...，不用 My destination is ...，确保小学2-4年级的孩子能听懂
    - 回答一般不超过两句话
    - 避免重复表达，适当变换措辞

    # 6. 开场白
    你由你开始对话，你会说："Can I help you?"

    # 7. 回应方式（固定内容）
    - 你只在用户提问时才根据知识库中的信息回答。其他时候，以符合你身份的方式，自然地进行交谈。
    - 不主动提供知识库的信息
    - 不主动提问题
    ```

中间结果: 语音识别热词

    gym,towel,exercise,sightseeing,relax,walkway

22 核心看图说话 cId: 0000800 core_speaking_image
已保存 ▶
taskInfo

cType |
cId |
title |
taskDesc |
sceneDesc |
key | [ { "desc": "", "keyList": [ { "type": "default", "content": "winter", "desc": "n. 冬天" }, { "type": "default", "content": "cold", "desc": "adj. 冷的" }, { "type": "default", "content": "snow", "desc": "n. 雪" } ] } ]
resourceMapping | { "Eva": 738, "Peter": 739 }
cDesc | NPC: What season is it? User: Winter. NPC: Is it hot or cold? User: Cold. NPC: What do you see in winter? User: Snow.

{ "cType": "core_speaking_image", "cId": "0000800", "title": "和 Mr Rock 分享在 Winter Island 的所见所得", "taskDesc": "回答 Mr Rock 的问题", "sceneDesc": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "winter", "desc": "n. 冬天" }, { "type": "default", "content": "cold", "desc": "adj. 冷的" }, { "type": "default", "content": "snow", "desc": "n. 雪" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow." }
dialogConfig

config

{ "asrPrompt": "Mr Rock,Winter Island,winter,cold,snow", "promptInfo": { "user_scene": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "user_task": "回答 Mr Rock 的问题", "user_knowledge": "winter 冬天\ncold 冷的\nsnow 雪", "pass_condition": "用户说出：\n1. 冬天\n2. 冷的\n3. 雪", "reference_dialog": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow.", "questionList": [ { "type": "npc", "npcName": "Rock", "content": "What season is it?", "index": 0, "answerText": "Winter." }, { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?", "index": 1, "answerText": "Cold." }, { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?", "index": 2, "answerText": "Snow." } ] } }

{ "config": { "asrPrompt": "Mr Rock,Winter Island,winter,cold,snow", "promptInfo": { "user_scene": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "user_task": "回答 Mr Rock 的问题", "user_knowledge": "winter 冬天\ncold 冷的\nsnow 雪", "pass_condition": "用户说出：\n1. 冬天\n2. 冷的\n3. 雪", "reference_dialog": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow.", "questionList": [ { "type": "npc", "npcName": "Rock", "content": "What season is it?", "index": 0, "answerText": "Winter." }, { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?", "index": 1, "answerText": "Cold." }, { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?", "index": 2, "answerText": "Snow." } ] } } }
studyInfo

learningPart

[ { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What season is it?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师问你现在是什么季节，你需要回答现在的季节哦。", "index": 0 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了现在是冬季。请大声朗读这句话！" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“寒冷的”，但老师现在问的是什么季节，不是天气感受哦。请再仔细听清问题，告诉老师现在的季节。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“雪”，但老师现在问的是什么季节，不是你看到的景物哦。请再仔细听清问题，告诉老师现在的季节。" } } ], "answer": [ 0 ], "read": { "type": "npc", "npcName": "User", "content": "Winter." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师现在问你天气是热的还是冷的，你需要回答冬季的天气感受哦。", "index": 1 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“冬季”，但老师现在问的是天气冷还是热，不是季节哦。请再仔细听清问题，告诉老师冬季的天气感受。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了冬天天气很冷。请大声朗读这句话！" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“雪”，但老师现在问的是天气冷还是热，不是你看到的景物哦。请再仔细听清问题，告诉老师冬季的天气感受。" } } ], "answer": [ 1 ], "read": { "type": "npc", "npcName": "User", "content": "Cold." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师问你在冬天能看到什么，你需要回答冬季特有的景物哦。", "index": 2 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“冬季”，但老师现在问的是你能看到什么东西，不是季节哦。请再仔细听清问题，告诉老师你在冬天看到的景物。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“寒冷的”，但老师现在问的是你能看到什么东西，不是天气感受哦。请再仔细听清问题，告诉老师你在冬天看到的景物。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了冬天能看到雪。请大声朗读这句话！" } } ], "answer": [ 2 ], "read": { "type": "npc", "npcName": "User", "content": "Snow." }, "feedback": { "type": "npc", "npcName": "Rock", "content": "You did a great job sharing what you know about winter!" } } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "恭喜你完成了和Rock老师的全部互动，你不仅准确回答了季节相关的问题，还掌握了冬季对应的天气和典型景物的英文表达，本次学习任务圆满完成啦！" }

{ "learningPart": [ { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What season is it?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师问你现在是什么季节，你需要回答现在的季节哦。", "index": 0 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了现在是冬季。请大声朗读这句话！" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“寒冷的”，但老师现在问的是什么季节，不是天气感受哦。请再仔细听清问题，告诉老师现在的季节。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“雪”，但老师现在问的是什么季节，不是你看到的景物哦。请再仔细听清问题，告诉老师现在的季节。" } } ], "answer": [ 0 ], "read": { "type": "npc", "npcName": "User", "content": "Winter." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师现在问你天气是热的还是冷的，你需要回答冬季的天气感受哦。", "index": 1 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“冬季”，但老师现在问的是天气冷还是热，不是季节哦。请再仔细听清问题，告诉老师冬季的天气感受。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了冬天天气很冷。请大声朗读这句话！" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“雪”，但老师现在问的是天气冷还是热，不是你看到的景物哦。请再仔细听清问题，告诉老师冬季的天气感受。" } } ], "answer": [ 1 ], "read": { "type": "npc", "npcName": "User", "content": "Cold." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师问你在冬天能看到什么，你需要回答冬季特有的景物哦。", "index": 2 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“冬季”，但老师现在问的是你能看到什么东西，不是季节哦。请再仔细听清问题，告诉老师你在冬天看到的景物。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话的意思是“寒冷的”，但老师现在问的是你能看到什么东西，不是天气感受哦。请再仔细听清问题，告诉老师你在冬天看到的景物。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确回答了冬天能看到雪。请大声朗读这句话！" } } ], "answer": [ 2 ], "read": { "type": "npc", "npcName": "User", "content": "Snow." }, "feedback": { "type": "npc", "npcName": "Rock", "content": "You did a great job sharing what you know about winter!" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你完成了和Rock老师的全部互动，你不仅准确回答了季节相关的问题，还掌握了冬季对应的天气和典型景物的英文表达，本次学习任务圆满完成啦！" } }
imageInfo

questionImg |

{ "questionImg": "0000800_question.png" }
questionList
[{'type': 'npc', 'npcName': 'Rock', 'content': 'What season is it?', 'index': 0, 'answerText': 'Winter.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'Is it hot or cold?', 'index': 1, 'answerText': 'Cold.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'What do you see in winter?', 'index': 2, 'answerText': 'Snow.'}]
optionList
[{'option': '0000800_option_00.png'}, {'option': '0000800_option_01.png'}, {'option': '0000800_option_02.png'}]
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "winter 冬天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cold 冷的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "snow 雪", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_speaking_image", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "winter 冬天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cold 冷的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "snow 雪", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 学习流程配置

    ```
    # 中间回合1
    Rock: What season is it?
    Brainy: Rock 老师问你现在是什么季节，你需要回答现在的季节哦。
    用户选项:
    （选项 A）Winter. [正确]
      Brainy: 太棒了！你正确回答了现在是冬季。请大声朗读这句话！
    （选项 B）Cold.
      Brainy: 这句话的意思是“寒冷的”，但老师现在问的是什么季节，不是天气感受哦。请再仔细听清问题，告诉老师现在的季节。
    （选项 C）Snow.
      Brainy: 这句话的意思是“雪”，但老师现在问的是什么季节，不是你看到的景物哦。请再仔细听清问题，告诉老师现在的季节。

    # 中间回合2
    Rock: Is it hot or cold?
    Brainy: Rock 老师现在问你天气是热的还是冷的，你需要回答冬季的天气感受哦。
    用户选项:
    （选项 A）Winter.
      Brainy: 这句话的意思是“冬季”，但老师现在问的是天气冷还是热，不是季节哦。请再仔细听清问题，告诉老师冬季的天气感受。
    （选项 B）Cold. [正确]
      Brainy: 太棒了！你正确回答了冬天天气很冷。请大声朗读这句话！
    （选项 C）Snow.
      Brainy: 这句话的意思是“雪”，但老师现在问的是天气冷还是热，不是你看到的景物哦。请再仔细听清问题，告诉老师冬季的天气感受。

    # 中间回合3
    Rock: What do you see in winter?
    Brainy: Rock 老师问你在冬天能看到什么，你需要回答冬季特有的景物哦。
    用户选项:
    （选项 A）Winter.
      Brainy: 这句话的意思是“冬季”，但老师现在问的是你能看到什么东西，不是季节哦。请再仔细听清问题，告诉老师你在冬天看到的景物。
    （选项 B）Cold.
      Brainy: 这句话的意思是“寒冷的”，但老师现在问的是你能看到什么东西，不是天气感受哦。请再仔细听清问题，告诉老师你在冬天看到的景物。
    （选项 C）Snow. [正确]
      Brainy: 太棒了！你正确回答了冬天能看到雪。请大声朗读这句话！

    # 结尾回合
    Brainy: 你已经完成了和 Rock 老师的聊天，成功分享了在冬季岛的所见所得，任务完成啦！
    ```

中间结果: 语音识别热词

    Mr Rock,Winter Island,winter,cold,snow

23 核心合作听力 cId: 0000800 core_listening_order
已保存 ▶
taskInfo

cType |
cId |
title |
sceneDesc |
img |
key | [ { "desc": "", "keyList": [ { "type": "default", "content": "bake", "desc": "v. 烘焙；烤制" }, { "type": "default", "content": "healthy", "desc": "adj. 健康的" }, { "type": "default", "content": "money", "desc": "n. 钱" }, { "type": "default", "content": "cake", "desc": "n. 蛋糕" }, { "type": "default", "content": "alcohol", "desc": "n. 含酒精饮料" } ] } ]
resourceMapping | { "Eva": 738, "Peter": 739 }

{ "cType": "core_listening_order", "cId": "0000800", "title": "Max 的专业健身指南", "sceneDesc": "Shark 的生活方式实在不健康，为了变强壮，居然把自己饿晕了！你想起健身达人 Max，曾经分享过一些专业健身指南，快让 Shark 听听看。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "bake", "desc": "v. 烘焙；烤制" }, { "type": "default", "content": "healthy", "desc": "adj. 健康的" }, { "type": "default", "content": "money", "desc": "n. 钱" }, { "type": "default", "content": "cake", "desc": "n. 蛋糕" }, { "type": "default", "content": "alcohol", "desc": "n. 含酒精饮料" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
materialInfo

audio

[ { "audioType": "File", "audioTitle": "How to live a healthy life?", "audioSource": "0330116_01", "audioText": "Second, live a healthy life.\nGo to bed on time and get up early. Try to stay away from bad things, like smoking and alcohol. These things are not good for your body.\nThird, you do not need much money.\n Keeping a healthy body is not about money. You do not need expensive things. Good habits are the most important." } ]

question

[ { "type": "npc", "npcName": "Shark", "content": "When I want sweet food, what should I do?", "optionList": [ { "option": "Buy cake at a shop", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need to buy it." } }, { "option": "Bake at home with healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! Baking at home is a good choice." } }, { "option": "Eat sweet food all the time.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Too much sweet food is not healthy." } } ], "answer": [ 1 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What should I do to live a healthy life?", "optionList": [ { "option": "Go to bed late and get up late.", "feedback": { "type": "npc", "npcName": "Medic", "content": "This is not a healthy routine." } }, { "option": "Go to bed on time and get up early.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! A good routine is important." } }, { "option": "Smoke and drink alcohol.", "feedback": { "type": "npc", "npcName": "Medic", "content": "These things are bad for your body." } } ], "answer": [ 1 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What do I need to keep healthy?", "optionList": [ { "option": "A lot of money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "I don't think so." } }, { "option": "Expensive things.", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need expensive things." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! Good habits are the most important." } } ], "answer": [ 2 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What is a healthy life NOT about?", "optionList": [ { "option": "Money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! A healthy life is not about money." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Good habits are very important." } }, { "option": "Healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Healthy food helps your body feel better." } } ], "answer": [ 0 ], "meaning": "无" } ]

{ "audio": [ { "audioType": "File", "audioTitle": "How to live a healthy life?", "audioSource": "0330116_01", "audioText": "Second, live a healthy life.\nGo to bed on time and get up early. Try to stay away from bad things, like smoking and alcohol. These things are not good for your body.\nThird, you do not need much money.\n Keeping a healthy body is not about money. You do not need expensive things. Good habits are the most important." } ], "question": [ { "type": "npc", "npcName": "Shark", "content": "When I want sweet food, what should I do?", "optionList": [ { "option": "Buy cake at a shop", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need to buy it." } }, { "option": "Bake at home with healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! Baking at home is a good choice." } }, { "option": "Eat sweet food all the time.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Too much sweet food is not healthy." } } ], "answer": [ 1 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What should I do to live a healthy life?", "optionList": [ { "option": "Go to bed late and get up late.", "feedback": { "type": "npc", "npcName": "Medic", "content": "This is not a healthy routine." } }, { "option": "Go to bed on time and get up early.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! A good routine is important." } }, { "option": "Smoke and drink alcohol.", "feedback": { "type": "npc", "npcName": "Medic", "content": "These things are bad for your body." } } ], "answer": [ 1 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What do I need to keep healthy?", "optionList": [ { "option": "A lot of money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "I don't think so." } }, { "option": "Expensive things.", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need expensive things." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! Good habits are the most important." } } ], "answer": [ 2 ], "meaning": "无" }, { "type": "npc", "npcName": "Shark", "content": "What is a healthy life NOT about?", "optionList": [ { "option": "Money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! A healthy life is not about money." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Good habits are very important." } }, { "option": "Healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Healthy food helps your body feel better." } } ], "answer": [ 0 ], "meaning": "无" } ] }
flowInfo

sequence | [ { "audio": [ 0 ] }, { "question": [ 0 ] }, { "audio": [ 1 ] }, { "question": [ 1, 2, 3 ] } ]

{ "sequence": [ { "audio": [ 0 ] }, { "question": [ 0 ] }, { "audio": [ 1 ] }, { "question": [ 1, 2, 3 ] } ] }
studyInfo

closing | { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }

learningPart

[ { "leadIn": { "type": "npc", "content": "When you really want sweet food, like biscuits or cake, you can bake at home.", "npcName": "Brainy" }, "content": "刚刚听到的音频中，包含了一个关键短语 bake at home，意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。", "type": "npc", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "听音选句", "optionList": [ { "feedback": { "type": "npc", "content": "太棒啦！你精准听出了句子里的重点短语 bake at home，太厉害啦！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can bake at home." }, { "feedback": { "type": "npc", "content": "哎呀，这句话说的是 buy at the shop（在商店买），没有出现 bake at home 哦，再仔细听听音频吧！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can buy at the shop." } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来我们来听一听，哪个选项和你刚刚听到的句子是一样的呢？" } }, { "answer": [ 0 ], "meaning": "听音选意", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你不仅读懂了这句话，还掌握了 bake at home 这个实用短语哦！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以在家烘焙。" }, { "feedback": { "type": "npc", "content": "这句话的动作是在家做，不是去商店买哦，再想想看呀~", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以去商店买。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "现在你知道这句话的意思了吗？快来选出正确的中文翻译吧~" } } ] } ]

{ "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }, "learningPart": [ { "leadIn": { "type": "npc", "content": "When you really want sweet food, like biscuits or cake, you can bake at home.", "npcName": "Brainy" }, "content": "刚刚听到的音频中，包含了一个关键短语 bake at home，意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。", "type": "npc", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "听音选句", "optionList": [ { "feedback": { "type": "npc", "content": "太棒啦！你精准听出了句子里的重点短语 bake at home，太厉害啦！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can bake at home." }, { "feedback": { "type": "npc", "content": "哎呀，这句话说的是 buy at the shop（在商店买），没有出现 bake at home 哦，再仔细听听音频吧！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can buy at the shop." } ], "question": { "type": "npc", "npcName": "Brainy", "content": "接下来我们来听一听，哪个选项和你刚刚听到的句子是一样的呢？" } }, { "answer": [ 0 ], "meaning": "听音选意", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你不仅读懂了这句话，还掌握了 bake at home 这个实用短语哦！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以在家烘焙。" }, { "feedback": { "type": "npc", "content": "这句话的动作是在家做，不是去商店买哦，再想想看呀~", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或者蛋糕的时候，你可以去商店买。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "现在你知道这句话的意思了吗？快来选出正确的中文翻译吧~" } } ] } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "bake v. 烘焙；烤制", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "healthy adj. 健康的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "money n. 钱", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cake n. 蛋糕", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "alcohol n. 含酒精饮料", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_listening_order", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "bake v. 烘焙；烤制", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "healthy adj. 健康的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "money n. 钱", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "cake n. 蛋糕", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "alcohol n. 含酒精饮料", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：When you really want sweet food, like biscuits or cake, you can bake at home.
    讲解文本：刚刚听到的音频中，包含了一个关键短语 bake at home，意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。
    1. 听音选句
    Brainy：接下来我们来听一听，哪个选项和你刚刚听到的句子是一样的呢？
    - When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
      - Brainy：太棒啦！你精准听出了句子里的重点短语 bake at home，太厉害啦！
    - When you really want sweet food, like biscuits or cake, you can buy at the shop.
      - Brainy：哎呀，这句话说的是 buy at the shop（在商店买），没有出现 bake at home 哦，再仔细听听音频吧！

    2. 听音选意
    Brainy：现在你知道这句话的意思了吗？快来选出正确的中文翻译吧~
    - 当你很想吃甜食，比如饼干或者蛋糕的时候，你可以在家烘焙。[正确]
      - Brainy：完全正确！你不仅读懂了这句话，还掌握了 bake at home 这个实用短语哦！
    - 当你很想吃甜食，比如饼干或者蛋糕的时候，你可以去商店买。
      - Brainy：这句话的动作是在家做，不是去商店买哦，再想想看呀~
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    You listened to the second part of Max's fitness guide, and learned that a healthy routine means going to bed on time and getting up early, and you should stay away from bad habits like smoking and alcohol. (你听了Max健身指南的第二部分，了解到健康的作息是按时睡觉早起，还要远离抽烟喝酒这类坏习惯。)
    You also found that keeping healthy doesn't need much money or expensive items, and good habits are the most important thing for a healthy body. (你还发现保持健康不需要很多钱或者昂贵的物品，好习惯对健康的身体来说才是最重要的。)

24 核心听力拖拽 cId: 0000800 core_listening_drag
已保存 ▶
taskInfo

cType |
cId |
title |
sceneDesc |
key | [ { "desc": "", "keyList": [ { "type": "default", "content": "between", "desc": "prep. 在……中间" }, { "type": "default", "content": "next to", "desc": "prep. 紧邻" }, { "type": "default", "content": "duck", "desc": "n. 鸭子" } ] } ]
resourceMapping | { "Eva": 738, "Peter": 739 }
cDesc | You took on the fun task of guiding everyone to herd the ducks, choosing the right methods from several options to make all the little ducks walk into the pen smoothly. (你接下了指挥大家赶鸭子的趣味任务，从几种方案里选了合适的方法，顺利让所有小鸭子都走进了围栏里。)

{ "cType": "core_listening_drag", "cId": "0000800", "title": "指挥大家赶鸭子", "sceneDesc": "鸭子大乱斗！手忙脚乱没有用，你现在得和伙伴们一起协作，把到处跑的鸭子赶进水里。快说说你的计划吧！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "between", "desc": "prep. 在……中间" }, { "type": "default", "content": "next to", "desc": "prep. 紧邻" }, { "type": "default", "content": "duck", "desc": "n. 鸭子" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "You took on the fun task of guiding everyone to herd the ducks, choosing the right methods from several options to make all the little ducks walk into the pen smoothly. (你接下了指挥大家赶鸭子的趣味任务，从几种方案里选了合适的方法，顺利让所有小鸭子都走进了围栏里。)" }
dialogList
[[{'type': 'npc', 'npcName': 'Matt', 'content': 'Where should I go?', 'trans': '我该去哪里？', 'isPoint': False}, {'type': 'user', 'content': 'Go between the red duck and the blue duck.', 'trans': '走到红鸭子和蓝鸭子中间去。', 'isPoint': False}, {'type': 'user', 'content': "Don't let them fight.", 'trans': '别让它们打架。', 'isPoint': False}], [{'type': 'npc', 'npcName': 'Ben', 'content': 'What about me?', 'trans': '那我呢？', 'isPoint': False}, {'type': 'user', 'content': 'You are next to the blue duck.', 'trans': '你在蓝鸭子旁边。', 'isPoint': False}], [{'type': 'npc', 'npcName': 'Amber', 'content': 'And me? Where should I be?', 'trans': '那我呢？我应该在哪里？', 'isPoint': False}, {'type': 'user', 'content': 'You are next to the red duck.', 'trans': '你在红鸭子旁边。', 'isPoint': False}, {'type': 'user', 'content': 'Get it into the water!', 'trans': '把它弄到水里去！', 'isPoint': False}]]
questionList
[{'imageInfo': {'questionImg': '0000800_question.png', 'answerImg': '0000800_answer.png'}, 'optionList': [{'option': '0000800_option_00.png'}, {'option': '0000800_option_01.png'}, {'option': '0000800_option_02.png'}], 'answer': [0, 1, 2], 'answerType': 'all'}]
studyInfo

learningPart

[ { "type": "npc", "npcName": "Brainy", "content": "Go between the red duck and the blue duck.", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键短语 between...and...，意思是“在……和……之间”，用来描述两个事物中间的位置哦。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听音频，选出你听到的句子吧。", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "Go behind the red duck and the blue duck.", "feedback": { "type": "npc", "content": "哎呀，这句话里的介词是behind（在……后面），不是我们音频里的between哦，再仔细听一遍试试吧~", "npcName": "Brainy" } }, { "option": "Go between the red duck and the blue duck.", "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了句子里的重点短语between...and...！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "Go between the red duck and the blue duck.", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "“走到红色鸭子和蓝色鸭子的旁边”，这句话是刚刚句子的意思吗？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "不对哦，句子里表示位置的短语意思不是“在旁边”，再好好想想~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "答对啦！between...and...是“在……和……之间”的意思，你已经完全掌握这个句子啦！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] } ]

closing | { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }

{ "learningPart": [ { "type": "npc", "npcName": "Brainy", "content": "Go between the red duck and the blue duck.", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键短语 between...and...，意思是“在……和……之间”，用来描述两个事物中间的位置哦。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听音频，选出你听到的句子吧。", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "Go behind the red duck and the blue duck.", "feedback": { "type": "npc", "content": "哎呀，这句话里的介词是behind（在……后面），不是我们音频里的between哦，再仔细听一遍试试吧~", "npcName": "Brainy" } }, { "option": "Go between the red duck and the blue duck.", "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了句子里的重点短语between...and...！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "Go between the red duck and the blue duck.", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "“走到红色鸭子和蓝色鸭子的旁边”，这句话是刚刚句子的意思吗？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "不对哦，句子里表示位置的短语意思不是“在旁边”，再好好想想~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "答对啦！between...and...是“在……和……之间”的意思，你已经完全掌握这个句子啦！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" } }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "between prep. 在……中间", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "next to prep. 紧邻", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "duck n. 鸭子", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_listening_drag", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "between prep. 在……中间", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "next to prep. 紧邻", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "duck n. 鸭子", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：Go between the red duck and the blue duck.
    讲解文本：刚刚听到的音频中，包含了一个关键短语 between...and...，意思是“在……和……之间”，用来描述两个事物中间的位置哦。
    1. 听音选句
    Brainy：仔细听音频，选出你听到的句子吧。
    - Go behind the red duck and the blue duck.
      - Brainy：哎呀，这句话里的介词是behind（在……后面），不是我们音频里的between哦，再仔细听一遍试试吧~
    - Go between the red duck and the blue duck. [正确]
      - Brainy：太厉害啦！你准确听出了句子里的重点短语between...and...！

    2. 听音选意
    Brainy：“走到红色鸭子和蓝色鸭子的旁边”，这句话是刚刚句子的意思吗？
    - 对 / Yes
      - Brainy：不对哦，句子里表示位置的短语意思不是“在旁边”，再好好想想~
    - 错 / No [正确]
      - Brainy：答对啦！between...and...是“在……和……之间”的意思，你已经完全掌握这个句子啦！
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    You took on the fun task of guiding everyone to herd the ducks, choosing the right methods from several options to make all the little ducks walk into the pen smoothly. (你接下了指挥大家赶鸭子的趣味任务，从几种方案里选了合适的方法，顺利让所有小鸭子都走进了围栏里。)

25 核心听力选择 cId: 0000800 core_listening_choose
已保存 ▶
taskInfo

cType |
cId |
title |
sceneDesc |

key

[ { "desc": "", "keyList": [ { "type": "default", "content": "summer", "desc": "n. 夏天" }, { "type": "default", "content": "hot", "desc": "adj. 热的" }, { "type": "default", "content": "trousers", "desc": "n. 长裤" }, { "type": "default", "content": "shorts", "desc": "n. 短裤" }, { "type": "default", "content": "It feels...", "desc": "感觉......" }, { "type": "default", "content": "Could you...", "desc": "可以请你......吗？" } ] } ]

resourceMapping | { "Vicky": 658 }

cDesc

You talked with the fishing uncle Jack, and knew it is summer now and the weather is really hot that makes your face turn red.（你和钓鱼的杰克叔叔交流，了解到现在是夏天，天气太热让你脸都变红了。） You told Jack you don’t have shorts at hand, and you need the shorts that are placed between the rocks nearby.（你告诉杰克你手头没有短裤，你需要放在附近岩石中间的那条短裤。） You asked Jack for help to get the shorts for you, and Jack agreed to help you take the shorts over there.（你请求杰克帮忙拿那条短裤，杰克同意帮你去把那边的短裤取过来。）

{ "cType": "core_listening_choose", "cId": "0000800", "title": "请求路边钓鱼的叔叔帮忙", "sceneDesc": "心心念念的短裤原来卡在石头间了，快抓紧时间请钓鱼叔叔帮忙钓上来吧！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "summer", "desc": "n. 夏天" }, { "type": "default", "content": "hot", "desc": "adj. 热的" }, { "type": "default", "content": "trousers", "desc": "n. 长裤" }, { "type": "default", "content": "shorts", "desc": "n. 短裤" }, { "type": "default", "content": "It feels...", "desc": "感觉......" }, { "type": "default", "content": "Could you...", "desc": "可以请你......吗？" } ] } ], "resourceMapping": { "Vicky": 658 }, "cDesc": "You talked with the fishing uncle Jack, and knew it is summer now and the weather is really hot that makes your face turn red.（你和钓鱼的杰克叔叔交流，了解到现在是夏天，天气太热让你脸都变红了。）\nYou told Jack you don’t have shorts at hand, and you need the shorts that are placed between the rocks nearby.（你告诉杰克你手头没有短裤，你需要放在附近岩石中间的那条短裤。）\nYou asked Jack for help to get the shorts for you, and Jack agreed to help you take the shorts over there.（你请求杰克帮忙拿那条短裤，杰克同意帮你去把那边的短裤取过来。）" }
questionGroup
[{'preDialog': [{'type': 'npc', 'npcName': 'Jack', 'content': "Hello, kiddo. What's the matter?"}], 'dialogList': [{'type': 'npc', 'npcName': 'Jack', 'content': 'Why is your face so red?', 'trans': '你的脸怎么这么红？', 'isPoint': False}, {'type': 'user', 'content': 'This summer! It feels so hot!', 'trans': '今年夏天！天气太热了！', 'isPoint': False}, {'type': 'npc', 'npcName': 'Jack', 'content': 'Do you have any shorts?', 'trans': '你有短裤吗？', 'isPoint': False}, {'type': 'user', 'content': "No, I don't have shorts.", 'trans': '不，我没有短裤。', 'isPoint': False}, {'type': 'user', 'content': 'I need the shorts between those rocks.', 'trans': '我需要那些岩石中间的短裤。', 'isPoint': False}, {'type': 'npc', 'npcName': 'Jack', 'content': 'I see.', 'trans': '我明白了。', 'isPoint': False}, {'type': 'user', 'content': 'Could you help me get the shorts?', 'trans': '你能帮我拿一下短裤吗？', 'isPoint': False}, {'type': 'user', 'content': 'Please!', 'trans': '拜托了！', 'isPoint': False}], 'questionList': [{'type': 'npc', 'npcName': 'Sue', 'content': 'What season is it?', 'optionList': [{'option': '0000800_option_00.png', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': "I don't think so."}}, {'option': '0000800_option_01.png', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': 'Yes. It is summer. It is hot.'}}, {'option': '0000800_option_02.png', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': "I don't think so."}}], 'answer': [1]}, {'type': 'npc', 'npcName': 'Sue', 'content': 'What do you need?', 'optionList': [{'option': 'T-shirt.', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': "I didn't see it."}}, {'option': 'Trousers.', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': "I didn't see them."}}, {'option': 'Shorts.', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': 'Got it.'}}], 'answer': [2]}, {'type': 'npc', 'npcName': 'Sue', 'content': 'What should Jack do?', 'optionList': [{'option': '0000800_option_03.png', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': 'Got it.'}}, {'option': '0000800_option_04.png', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': "I can't do that."}}, {'option': '0000800_option_05.png', 'feedback': {'type': 'npc', 'npcName': 'Jack', 'content': "I can't do that."}}], 'answer': [0]}], 'postDialog': []}]
studyInfo

learningPart

[ { "type": "npc", "npcName": "Brainy", "content": "This summer!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键单词 summer，意思为夏天，是一年中最热的季节哦。正确的发音是 /ˈsʌmə(r)/。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听音频哦，下面哪个句子和你听到的内容一致呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "This winter!", "feedback": { "type": "npc", "content": "哎呀，这句话说到的是 winter（冬天），并不是我们听到的 summer 哦，再认真听一遍音频试试看吧！", "npcName": "Brainy" } }, { "option": "This summer!", "feedback": { "type": "npc", "content": "太棒啦！你准确听出了句子里的重点单词 summer，真厉害！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "This summer!", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "现在音频里说的句子意思是“现在是冬天！”，你觉得对不对呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "我们听到的单词是 summer 哦，不是代表冬天的单词，再想想看~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "完全正确！你已经掌握了 summer 是“夏天”的意思啦，棒棒的！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] }, { "type": "npc", "npcName": "Brainy", "content": "It feels so hot!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键形容词 hot，意思是热的、温度高的，常用来描述炎热的天气哦。正确的发音是 /hɒt/。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "认真听音频内容，下面哪个句子是你刚刚听到的呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "It feels so hot!", "feedback": { "type": "npc", "content": "太聪明啦！你准确捕捉到了句子里的重点单词 hot，做得非常好！", "npcName": "Brainy" } }, { "option": "It feels so cold!", "feedback": { "type": "npc", "content": "这句话里说的是 cold（寒冷的），不是我们听到的 hot 哦，再仔细听一遍音频试试吧！", "npcName": "Brainy" } } ], "answer": [ 0 ] }, { "question": { "content": "It feels so hot!", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "这句话的中文意思是“天气感觉好热啊”，你说对不对呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "答对啦！你不仅听懂了句子，还牢牢记住了 hot 是“热的”意思，太优秀啦！", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "句子里的描述是和温度高有关的哦，再回忆下 hot 的意思，重新选一次吧~", "npcName": "Brainy" } } ], "answer": [ 0 ] } ] }, { "type": "npc", "npcName": "Brainy", "content": "Do you have any shorts?", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键名词 shorts，意思是短裤，是夏天常穿的服饰哦。正确的发音是 /ʃɔːts/。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听播放的音频，下面哪句话和你听到的内容一样呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "Do you have any shoes?", "feedback": { "type": "npc", "content": "这句话里提到的是 shoes（鞋子），并不是我们听到的 shorts 哦，再认真听听音频吧！", "npcName": "Brainy" } }, { "option": "Do you have any shorts?", "feedback": { "type": "npc", "content": "哇，你精准听出了句子里的重点单词 shorts，太棒啦！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "Do you have any shorts?", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "这句话的意思是“你有鞋子吗？”，你觉得这个说法对吗？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "句子里提到的衣物是夏天穿的短裤哦，不是鞋子，再仔细想想呀~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "完全正确！你已经搞懂 shorts 是“短裤”的意思啦，掌握得很不错哦！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] }, { "type": "npc", "npcName": "Brainy", "content": "I need the shorts between those rocks.", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键介词短语 between rocks，意思是在岩石之间，用来描述物品的位置哦。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "认真听音频，下面哪个句子是你刚刚听到的内容呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "I need the shorts between those rocks.", "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了短裤的位置是在岩石之间，听力超棒的！", "npcName": "Brainy" } }, { "option": "I need the shorts under those trees.", "feedback": { "type": "npc", "content": "这句话说的是短裤在树下哦，不是我们听到的岩石之间的位置，再听一遍音频试试看吧！", "npcName": "Brainy" } } ], "answer": [ 0 ] }, { "question": { "content": "I need the shorts between those rocks.", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "这句话的中文意思是“我需要那些岩石之间的短裤”，你说对不对呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "错 / No", "feedback": { "type": "npc", "content": "句子描述的是短裤所在的位置哦，再回忆下 between rocks 的意思，重新选一次吧~", "npcName": "Brainy" } }, { "option": "对 / Yes", "feedback": { "type": "npc", "content": "答对啦！你不仅听懂了整句话的意思，还掌握了 between rocks 这个表示位置的短语，太优秀了！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] } ]

closing | { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }

{ "learningPart": [ { "type": "npc", "npcName": "Brainy", "content": "This summer!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键单词 summer，意思为夏天，是一年中最热的季节哦。正确的发音是 /ˈsʌmə(r)/。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听音频哦，下面哪个句子和你听到的内容一致呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "This winter!", "feedback": { "type": "npc", "content": "哎呀，这句话说到的是 winter（冬天），并不是我们听到的 summer 哦，再认真听一遍音频试试看吧！", "npcName": "Brainy" } }, { "option": "This summer!", "feedback": { "type": "npc", "content": "太棒啦！你准确听出了句子里的重点单词 summer，真厉害！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "This summer!", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "现在音频里说的句子意思是“现在是冬天！”，你觉得对不对呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "我们听到的单词是 summer 哦，不是代表冬天的单词，再想想看~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "完全正确！你已经掌握了 summer 是“夏天”的意思啦，棒棒的！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] }, { "type": "npc", "npcName": "Brainy", "content": "It feels so hot!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键形容词 hot，意思是热的、温度高的，常用来描述炎热的天气哦。正确的发音是 /hɒt/。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "认真听音频内容，下面哪个句子是你刚刚听到的呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "It feels so hot!", "feedback": { "type": "npc", "content": "太聪明啦！你准确捕捉到了句子里的重点单词 hot，做得非常好！", "npcName": "Brainy" } }, { "option": "It feels so cold!", "feedback": { "type": "npc", "content": "这句话里说的是 cold（寒冷的），不是我们听到的 hot 哦，再仔细听一遍音频试试吧！", "npcName": "Brainy" } } ], "answer": [ 0 ] }, { "question": { "content": "It feels so hot!", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "这句话的中文意思是“天气感觉好热啊”，你说对不对呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "答对啦！你不仅听懂了句子，还牢牢记住了 hot 是“热的”意思，太优秀啦！", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "句子里的描述是和温度高有关的哦，再回忆下 hot 的意思，重新选一次吧~", "npcName": "Brainy" } } ], "answer": [ 0 ] } ] }, { "type": "npc", "npcName": "Brainy", "content": "Do you have any shorts?", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键名词 shorts，意思是短裤，是夏天常穿的服饰哦。正确的发音是 /ʃɔːts/。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听播放的音频，下面哪句话和你听到的内容一样呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "Do you have any shoes?", "feedback": { "type": "npc", "content": "这句话里提到的是 shoes（鞋子），并不是我们听到的 shorts 哦，再认真听听音频吧！", "npcName": "Brainy" } }, { "option": "Do you have any shorts?", "feedback": { "type": "npc", "content": "哇，你精准听出了句子里的重点单词 shorts，太棒啦！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "Do you have any shorts?", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "这句话的意思是“你有鞋子吗？”，你觉得这个说法对吗？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "句子里提到的衣物是夏天穿的短裤哦，不是鞋子，再仔细想想呀~", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "完全正确！你已经搞懂 shorts 是“短裤”的意思啦，掌握得很不错哦！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] }, { "type": "npc", "npcName": "Brainy", "content": "I need the shorts between those rocks.", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了一个关键介词短语 between rocks，意思是在岩石之间，用来描述物品的位置哦。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "认真听音频，下面哪个句子是你刚刚听到的内容呀？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "I need the shorts between those rocks.", "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了短裤的位置是在岩石之间，听力超棒的！", "npcName": "Brainy" } }, { "option": "I need the shorts under those trees.", "feedback": { "type": "npc", "content": "这句话说的是短裤在树下哦，不是我们听到的岩石之间的位置，再听一遍音频试试看吧！", "npcName": "Brainy" } } ], "answer": [ 0 ] }, { "question": { "content": "I need the shorts between those rocks.", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "这句话的中文意思是“我需要那些岩石之间的短裤”，你说对不对呢？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "错 / No", "feedback": { "type": "npc", "content": "句子描述的是短裤所在的位置哦，再回忆下 between rocks 的意思，重新选一次吧~", "npcName": "Brainy" } }, { "option": "对 / Yes", "feedback": { "type": "npc", "content": "答对啦！你不仅听懂了整句话的意思，还掌握了 between rocks 这个表示位置的短语，太优秀了！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" } }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "summer n. 夏天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "hot adj. 热的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "trousers n. 长裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shorts n. 短裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "It feels... 感觉......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Could you... 可以请你......吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_listening_choose", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "summer n. 夏天", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "hot adj. 热的", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "trousers n. 长裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shorts n. 短裤", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "It feels... 感觉......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "Could you... 可以请你......吗？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：This summer!
    讲解文本：刚刚听到的音频中，包含了一个关键单词 summer，意思为夏天，是一年中最热的季节哦。正确的发音是 /ˈsʌmə(r)/。
    1. 听音选句
    Brainy：仔细听音频哦，下面哪个句子和你听到的内容一致呢？
    - This winter!
      - Brainy：哎呀，这句话说到的是 winter（冬天），并不是我们听到的 summer 哦，再认真听一遍音频试试看吧！
    - This summer! [正确]
      - Brainy：太棒啦！你准确听出了句子里的重点单词 summer，真厉害！

    2. 听音选意
    Brainy：现在音频里说的句子意思是“现在是冬天！”，你觉得对不对呀？
    - 对 / Yes
      - Brainy：我们听到的单词是 summer 哦，不是代表冬天的单词，再想想看~
    - 错 / No [正确]
      - Brainy：完全正确！你已经掌握了 summer 是“夏天”的意思啦，棒棒的！
    ---
    # 重点句子 2
    音频文本：It feels so hot!
    讲解文本：刚刚听到的音频中，包含了一个关键形容词 hot，意思是热的、温度高的，常用来描述炎热的天气哦。正确的发音是 /hɒt/。
    1. 听音选句
    Brainy：认真听音频内容，下面哪个句子是你刚刚听到的呀？
    - It feels so hot! [正确]
      - Brainy：太聪明啦！你准确捕捉到了句子里的重点单词 hot，做得非常好！
    - It feels so cold!
      - Brainy：这句话里说的是 cold（寒冷的），不是我们听到的 hot 哦，再仔细听一遍音频试试吧！

    2. 听音选意
    Brainy：这句话的中文意思是“天气感觉好热啊”，你说对不对呢？
    - 对 / Yes [正确]
      - Brainy：答对啦！你不仅听懂了句子，还牢牢记住了 hot 是“热的”意思，太优秀啦！
    - 错 / No
      - Brainy：句子里的描述是和温度高有关的哦，再回忆下 hot 的意思，重新选一次吧~
    ---
    # 重点句子 3
    音频文本：Do you have any shorts?
    讲解文本：刚刚听到的音频中，包含了一个关键名词 shorts，意思是短裤，是夏天常穿的服饰哦。正确的发音是 /ʃɔːts/。
    1. 听音选句
    Brainy：仔细听播放的音频，下面哪句话和你听到的内容一样呢？
    - Do you have any shoes?
      - Brainy：这句话里提到的是 shoes（鞋子），并不是我们听到的 shorts 哦，再认真听听音频吧！
    - Do you have any shorts? [正确]
      - Brainy：哇，你精准听出了句子里的重点单词 shorts，太棒啦！

    2. 听音选意
    Brainy：这句话的意思是“你有鞋子吗？”，你觉得这个说法对吗？
    - 对 / Yes
      - Brainy：句子里提到的衣物是夏天穿的短裤哦，不是鞋子，再仔细想想呀~
    - 错 / No [正确]
      - Brainy：完全正确！你已经搞懂 shorts 是“短裤”的意思啦，掌握得很不错哦！
    ---
    # 重点句子 4
    音频文本：I need the shorts between those rocks.
    讲解文本：刚刚听到的音频中，包含了一个关键介词短语 between rocks，意思是在岩石之间，用来描述物品的位置哦。
    1. 听音选句
    Brainy：认真听音频，下面哪个句子是你刚刚听到的内容呀？
    - I need the shorts between those rocks. [正确]
      - Brainy：太厉害啦！你准确听出了短裤的位置是在岩石之间，听力超棒的！
    - I need the shorts under those trees.
      - Brainy：这句话说的是短裤在树下哦，不是我们听到的岩石之间的位置，再听一遍音频试试看吧！

    2. 听音选意
    Brainy：这句话的中文意思是“我需要那些岩石之间的短裤”，你说对不对呢？
    - 错 / No
      - Brainy：句子描述的是短裤所在的位置哦，再回忆下 between rocks 的意思，重新选一次吧~
    - 对 / Yes [正确]
      - Brainy：答对啦！你不仅听懂了整句话的意思，还掌握了 between rocks 这个表示位置的短语，太优秀了！
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    You talked with the fishing uncle Jack, and knew it is summer now and the weather is really hot that makes your face turn red.（你和钓鱼的杰克叔叔交流，了解到现在是夏天，天气太热让你脸都变红了。）
    You told Jack you don’t have shorts at hand, and you need the shorts that are placed between the rocks nearby.（你告诉杰克你手头没有短裤，你需要放在附近岩石中间的那条短裤。）
    You asked Jack for help to get the shorts for you, and Jack agreed to help you take the shorts over there.（你请求杰克帮忙拿那条短裤，杰克同意帮你去把那边的短裤取过来。）

26 核心看图组句 cId: 0000800 core_writing_imgMakeSentence
已保存 ▶
taskInfo

cId |
cType |
title |
taskDesc |
sceneDesc | 在森林中，Otis、Skylar 和你通过小熊猫 Bam 和无人机照片搜集到了关于飞船坠落的重要线索。你们需要将这些信息整理并汇报给 Luisa 教授，以便确定飞船的具体坠落位置。
img |
plotSummary | I saw a very cute kitten in the pet shop yesterday. The pattern on his body is black and white, like a cow. It's a month old and perfect for breeding.
stemDesc | [ "0000800-01.png", "0000800-00.png" ]
key | [ { "keyList": [ { "type": "default", "content": "I think the spaceship fell...", "desc": "我认为飞船坠落在……" }, { "type": "default", "content": "I saw trees with...", "desc": "我看到有…… 的树。" }, { "type": "default", "content": "I heard a loud noise in...", "desc": "我听到…… 方向有巨大的声音。" } ] } ]
cDesc | Dear Alex, I hope this email finds you well. We can take care of each other.（亲爱的亚历克斯，我希望你一切都好。我们可以互相照顾。）

{ "cId": "0000800", "cType": "core_writing_imgMakeSentence", "title": "报告飞船坠毁事件", "taskDesc": "请根据图片内容，用英文写一段求救报告，说明你们现在的处境、遇到的困难和需要的帮助。", "sceneDesc": "在森林中，Otis、Skylar 和你通过小熊猫 Bam 和无人机照片搜集到了关于飞船坠落的重要线索。你们需要将这些信息整理并汇报给 Luisa 教授，以便确定飞船的具体坠落位置。", "img": "", "plotSummary": "I saw a very cute kitten in the pet shop yesterday. The pattern on his body is black and white, like a cow. It's a month old and perfect for breeding.", "stemDesc": [ "0000800-01.png", "0000800-00.png" ], "key": [ { "keyList": [ { "type": "default", "content": "I think the spaceship fell...", "desc": "我认为飞船坠落在……" }, { "type": "default", "content": "I saw trees with...", "desc": "我看到有…… 的树。" }, { "type": "default", "content": "I heard a loud noise in...", "desc": "我听到…… 方向有巨大的声音。" } ] } ], "cDesc": "Dear Alex, I hope this email finds you well. We can take care of each other.（亲爱的亚历克斯，我希望你一切都好。我们可以互相照顾。）" }
textInfo

inputType |
passCondition |

textList

[ { "mode": "preset", "desc": "Dear Alex," }, { "mode": "universalInput", "optionList": [ { "option": "well" }, { "option": "this email" }, { "option": "you" }, { "option": "finds" }, { "option": "I hope" }, { "option": "fine" } ], "answer": [ 4, 1, 3, 2, 0 ] }, { "mode": "fillingInput", "desc": "We can ___ each other.", "optionList": [ { "option": "of" }, { "option": "take" }, { "option": "care" }, { "option": "look" }, { "option": "for" } ], "answer": [ 1, 2, 0 ] } ]

{ "inputType": "sentence", "passCondition": "用户写出：1. 坠机在一个湖附近 2. 湖周边树木有红黄色的叶子 3. Bam 听到东北方向的噪音", "textList": [ { "mode": "preset", "desc": "Dear Alex," }, { "mode": "universalInput", "optionList": [ { "option": "well" }, { "option": "this email" }, { "option": "you" }, { "option": "finds" }, { "option": "I hope" }, { "option": "fine" } ], "answer": [ 4, 1, 3, 2, 0 ] }, { "mode": "fillingInput", "desc": "We can ___ each other.", "optionList": [ { "option": "of" }, { "option": "take" }, { "option": "care" }, { "option": "look" }, { "option": "for" } ], "answer": [ 1, 2, 0 ] } ] }
studyInfo

learningPart

[ { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你正在和队友整理线索，准备向Luisa教授汇报，首先你要说出自己对飞船坠落位置的判断，你会怎么表达？" }, "optionList": [ { "option": "I think the spaceship fell...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！这句话正是用来表达你对飞船坠落位置的判断，很契合当前汇报线索的场景哦。" } }, { "option": "I saw trees with...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是描述你看到的树木的特征，不是用来判断飞船坠落位置的表达哦，再试一下吧。" } }, { "option": "I heard a loud noise in...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用来描述你听到声响的方位，不是对飞船坠落位置的判断哦，再想想~" } } ], "answer": [ 0 ], "write": { "desc": "I think the spaceship fell...", "trans": "我认为飞船坠落在……" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要补充自己在森林里观察到的树木相关的线索，你会怎么开头描述这个发现？" }, "optionList": [ { "option": "I think the spaceship fell...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用于判断飞船坠落位置的，不是描述你看到的树木特征哦，再试一下吧。" } }, { "option": "I saw trees with...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！这句话恰好可以用来引出你观察到的树木相关的线索，符合你要补充视觉发现的需求~" } }, { "option": "I heard a loud noise in...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是描述你听到的声响，不是描述看到的树木相关线索哦，再想一想呀。" } } ], "answer": [ 1 ], "write": { "desc": "I saw trees with...", "trans": "我看到有……的树。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你要说明自己听到的异常声响相关的线索，告诉教授声响传来的方向，你会怎么表达？" }, "optionList": [ { "option": "I think the spaceship fell...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是判断飞船坠落位置的表达，不是用来描述你听到的声响方位哦，再试一下吧。" } }, { "option": "I saw trees with...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是描述视觉上看到的树木特征，不是描述听到的声响哦，再想想~" } }, { "option": "I heard a loud noise in...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！这句话就是用来描述你听到巨大声响的方位，刚好可以汇报这条听觉线索哦。" } } ], "answer": [ 2 ], "write": { "desc": "I heard a loud noise in...", "trans": "我听到……方向有巨大的声音。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的句型 I think the spaceship fell...、I saw trees with... 和 I heard a loud noise in...，完成向Luisa教授汇报飞船坠落相关线索的内容写作！" }

{ "learningPart": [ { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你正在和队友整理线索，准备向Luisa教授汇报，首先你要说出自己对飞船坠落位置的判断，你会怎么表达？" }, "optionList": [ { "option": "I think the spaceship fell...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！这句话正是用来表达你对飞船坠落位置的判断，很契合当前汇报线索的场景哦。" } }, { "option": "I saw trees with...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是描述你看到的树木的特征，不是用来判断飞船坠落位置的表达哦，再试一下吧。" } }, { "option": "I heard a loud noise in...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用来描述你听到声响的方位，不是对飞船坠落位置的判断哦，再想想~" } } ], "answer": [ 0 ], "write": { "desc": "I think the spaceship fell...", "trans": "我认为飞船坠落在……" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要补充自己在森林里观察到的树木相关的线索，你会怎么开头描述这个发现？" }, "optionList": [ { "option": "I think the spaceship fell...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是用于判断飞船坠落位置的，不是描述你看到的树木特征哦，再试一下吧。" } }, { "option": "I saw trees with...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太对啦！这句话恰好可以用来引出你观察到的树木相关的线索，符合你要补充视觉发现的需求~" } }, { "option": "I heard a loud noise in...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是描述你听到的声响，不是描述看到的树木相关线索哦，再想一想呀。" } } ], "answer": [ 1 ], "write": { "desc": "I saw trees with...", "trans": "我看到有……的树。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你要说明自己听到的异常声响相关的线索，告诉教授声响传来的方向，你会怎么表达？" }, "optionList": [ { "option": "I think the spaceship fell...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是判断飞船坠落位置的表达，不是用来描述你听到的声响方位哦，再试一下吧。" } }, { "option": "I saw trees with...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话是描述视觉上看到的树木特征，不是描述听到的声响哦，再想想~" } }, { "option": "I heard a loud noise in...", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！这句话就是用来描述你听到巨大声响的方位，刚好可以汇报这条听觉线索哦。" } } ], "answer": [ 2 ], "write": { "desc": "I heard a loud noise in...", "trans": "我听到……方向有巨大的声音。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的句型 I think the spaceship fell...、I saw trees with... 和 I heard a loud noise in...，完成向Luisa教授汇报飞船坠落相关线索的内容写作！" } }
evalInfo

title |
taskDesc |
sceneDesc | 在森林中，Otis、Skylar 和你通过小熊猫 Bam 和无人机照片搜集到了关于飞船坠落的重要线索。你们需要将这些信息整理并汇报给 Luisa 教授，以便确定飞船的具体坠落位置。
knowledge | - 地点描述 I think the spaceship fell... 我认为飞船坠落在…… I saw trees with... 我看到有…… 的树。 I heard a loud noise in... 我听到…… 方向有巨大的声音。
passCondition |

textList

[ { "mode": "preset", "desc": "Dear Alex," }, { "mode": "universalInput", "optionList": [ { "option": "well" }, { "option": "this email" }, { "option": "you" }, { "option": "finds" }, { "option": "I hope" }, { "option": "fine" } ], "answer": [ 4, 1, 3, 2, 0 ] }, { "mode": "fillingInput", "desc": "We can ___ each other.", "optionList": [ { "option": "of" }, { "option": "take" }, { "option": "care" }, { "option": "look" }, { "option": "for" } ], "answer": [ 1, 2, 0 ] } ]

{ "title": "报告飞船坠毁事件", "taskDesc": "请根据图片内容，用英文写一段求救报告，说明你们现在的处境、遇到的困难和需要的帮助。", "sceneDesc": "在森林中，Otis、Skylar 和你通过小熊猫 Bam 和无人机照片搜集到了关于飞船坠落的重要线索。你们需要将这些信息整理并汇报给 Luisa 教授，以便确定飞船的具体坠落位置。", "knowledge": "- 地点描述\nI think the spaceship fell... 我认为飞船坠落在……\nI saw trees with... 我看到有…… 的树。\nI heard a loud noise in... 我听到…… 方向有巨大的声音。", "passCondition": "用户写出：1. 坠机在一个湖附近 2. 湖周边树木有红黄色的叶子 3. Bam 听到东北方向的噪音", "textList": [ { "mode": "preset", "desc": "Dear Alex," }, { "mode": "universalInput", "optionList": [ { "option": "well" }, { "option": "this email" }, { "option": "you" }, { "option": "finds" }, { "option": "I hope" }, { "option": "fine" } ], "answer": [ 4, 1, 3, 2, 0 ] }, { "mode": "fillingInput", "desc": "We can ___ each other.", "optionList": [ { "option": "of" }, { "option": "take" }, { "option": "care" }, { "option": "look" }, { "option": "for" } ], "answer": [ 1, 2, 0 ] } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "- 地点描述", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "I think the spaceship fell... 我认为飞船坠落在……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "I saw trees with... 我看到有…… 的树。", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "I heard a loud noise in... 我听到…… 方向有巨大的声音。", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_writing_imgMakeSentence", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "- 地点描述", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "I think the spaceship fell... 我认为飞船坠落在……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "I saw trees with... 我看到有…… 的树。", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "I heard a loud noise in... 我听到…… 方向有巨大的声音。", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你正在和队友整理线索，准备向Luisa教授汇报，首先你要说出自己对飞船坠落位置的判断，你会怎么表达？
    用户选项:
    （选项 A）I think the spaceship fell... [正确]
      Brainy: 太棒啦！这句话正是用来表达你对飞船坠落位置的判断，很契合当前汇报线索的场景哦。
    （选项 B）I saw trees with...
      Brainy: 这句话是描述你看到的树木的特征，不是用来判断飞船坠落位置的表达哦，再试一下吧。
    （选项 C）I heard a loud noise in...
      Brainy: 这句话是用来描述你听到声响的方位，不是对飞船坠落位置的判断哦，再想想~

    # 问题2：
    Brainy: 你想要补充自己在森林里观察到的树木相关的线索，你会怎么开头描述这个发现？
    用户选项:
    （选项 A）I think the spaceship fell...
      Brainy: 这句话是用于判断飞船坠落位置的，不是描述你看到的树木特征哦，再试一下吧。
    （选项 B）I saw trees with... [正确]
      Brainy: 太对啦！这句话恰好可以用来引出你观察到的树木相关的线索，符合你要补充视觉发现的需求~
    （选项 C）I heard a loud noise in...
      Brainy: 这句话是描述你听到的声响，不是描述看到的树木相关线索哦，再想一想呀。

    # 问题3：
    Brainy: 你要说明自己听到的异常声响相关的线索，告诉教授声响传来的方向，你会怎么表达？
    用户选项:
    （选项 A）I think the spaceship fell...
      Brainy: 这句话是判断飞船坠落位置的表达，不是用来描述你听到的声响方位哦，再试一下吧。
    （选项 B）I saw trees with...
      Brainy: 这句话是描述视觉上看到的树木特征，不是描述听到的声响哦，再想想~
    （选项 C）I heard a loud noise in... [正确]
      Brainy: 太棒了！这句话就是用来描述你听到巨大声响的方位，刚好可以汇报这条听觉线索哦。
    ```

中间结果: 互动描述

    Dear Alex, I hope this email finds you well. We can take care of each other.（亲爱的亚历克斯，我希望你一切都好。我们可以互相照顾。）

27 核心看图撰写 cId: 0000800 core_writing_imgWrite
已保存 ▶
taskInfo

cId |
cType |
title |
taskDesc |
sceneDesc |
img |
plotSummary |
stemDesc | [ "0000800-00.png", "0000800-01.png", "0000800-02.png" ]
key | [ { "keyList": [ { "type": "default", "content": "elephant", "desc": "n. 大象" }, { "type": "default", "content": "banana", "desc": "n. 香蕉" }, { "type": "default", "content": "shower", "desc": "n. 淋浴、洗澡" }, { "type": "default", "content": "... love(s) to...", "desc": "……喜爱……" } ] } ]
cDesc | Animal Keeper's Record Animal type: Elephant Food: She ate bananas. Cleaning: She had a shower today. What does she love? The elephant loves showers and bananas!（动物饲养员记录 动物种类：大象 食物：她吃了香蕉。 清洁：她今天洗了澡。 她喜欢什么呢？ 这头大象喜欢洗澡和香蕉！）

{ "cId": "0000800", "cType": "core_writing_imgWrite", "title": "填写大象护理记录", "taskDesc": "根据图片内容，填写大象护理报告。", "sceneDesc": "粗心的大象饲养员忘记给大象洗澡了！真是照顾不周。你们给大象洗了澡，还喂了香蕉，现在把这些都记在护理记录上吧！", "img": "", "plotSummary": "", "stemDesc": [ "0000800-00.png", "0000800-01.png", "0000800-02.png" ], "key": [ { "keyList": [ { "type": "default", "content": "elephant", "desc": "n. 大象" }, { "type": "default", "content": "banana", "desc": "n. 香蕉" }, { "type": "default", "content": "shower", "desc": "n. 淋浴、洗澡" }, { "type": "default", "content": "... love(s) to...", "desc": "……喜爱……" } ] } ], "cDesc": "Animal Keeper's Record Animal type: Elephant Food: She ate bananas. Cleaning: She had a shower today. What does she love? The elephant loves showers and bananas!（动物饲养员记录\n动物种类：大象\n食物：她吃了香蕉。\n清洁：她今天洗了澡。\n她喜欢什么呢？\n这头大象喜欢洗澡和香蕉！）" }
textInfo

inputType |
passCondition |

textList

[ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物类型：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ]

{ "inputType": "write", "passCondition": "说明动物类型是大象。说明大象吃了香蕉。说明大象洗了澡。表达大象喜欢香蕉和洗澡。", "textList": [ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物类型：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ] }
studyInfo

learningPart

[ { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在你要填写大象护理报告的第一项“动物类型”，请选择合适的单词填在横线上：Animal type: ___ " }, "optionList": [ { "option": "elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！我们今天护理的动物是大象，所以这里填elephant是完全正确的~" } }, { "option": "banana", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，banana是香蕉，属于食物，不是动物类型，再想想我们今天照顾的是什么动物吧。" } }, { "option": "shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，shower是洗澡的意思，是我们给大象做的清洁项目，不是动物类型，再试试看吧。" } } ], "answer": [ 0 ], "write": { "desc": "elephant", "trans": "大象" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "接下来要填写食物相关的记录，句子是“Food: She ate ___ .”，请选择正确的单词填进去吧~" }, "optionList": [ { "option": "shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，shower是洗澡，是不能吃的，回忆一下你今天喂大象吃了什么好吃的呀？" } }, { "option": "bananas", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你喂给大象的是香蕉，这里填bananas刚好符合句子意思，完全正确~" } }, { "option": "elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，elephant是大象本身，总不能是大象吃了自己吧，再想想喂给它的食物是什么~" } } ], "answer": [ 1 ], "write": { "desc": "bananas", "trans": "香蕉" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在要填清洁护理的记录啦，句子是“Cleaning: She had ___ today.”，请选合适的词填空吧~" }, "optionList": [ { "option": "a shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！你今天给大象洗了澡，had a shower就是“洗了澡”的意思，完全符合清洁记录的内容~" } }, { "option": "bananas", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，bananas是香蕉，属于食物，不属于清洁项目，回忆一下你给大象做的清洁护理是什么吧。" } }, { "option": "elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，elephant是我们护理的动物，这里是要填清洁相关的内容，再想想吧~" } } ], "answer": [ 0 ], "write": { "desc": "a shower", "trans": "一次淋浴" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "最后要总结大象的喜好，句子是“The elephant ___ showers and bananas!”，请选择合适的表达补全句子吧~" }, "optionList": [ { "option": "love to", "feedback": { "type": "npc", "npcName": "Brainy", "content": "很棒哦你记得love的相关用法，但是这里主语the elephant是第三人称单数，love要变成loves，而且后面跟的是名词showers和bananas，不需要加to哦，再调整一下吧。" } }, { "option": "loves", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太优秀了！主语是第三人称单数，所以用loves，后面直接加喜欢的事物，完美表达出“大象喜欢洗澡和香蕉”的意思~" } }, { "option": "loves to", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你注意到了第三人称单数的变化很棒，但是love to后面需要跟动词原形，这里后面是名词showers和bananas，不需要加to哦，再试一次吧。" } } ], "answer": [ 1 ], "write": { "desc": "The elephant loves showers and bananas!", "trans": "这头大象喜欢洗澡和香蕉！" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的单词 elephant、banana、shower以及句型 ... love(s) to...，完成了大象护理记录的填写，准确描述了大象的相关信息、饮食、清洁项目和喜好!" }

{ "learningPart": [ { "leadIn": { "image": "0000800-00.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在你要填写大象护理报告的第一项“动物类型”，请选择合适的单词填在横线上：Animal type: ___ " }, "optionList": [ { "option": "elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！我们今天护理的动物是大象，所以这里填elephant是完全正确的~" } }, { "option": "banana", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，banana是香蕉，属于食物，不是动物类型，再想想我们今天照顾的是什么动物吧。" } }, { "option": "shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，shower是洗澡的意思，是我们给大象做的清洁项目，不是动物类型，再试试看吧。" } } ], "answer": [ 0 ], "write": { "desc": "elephant", "trans": "大象" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-01.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "接下来要填写食物相关的记录，句子是“Food: She ate ___ .”，请选择正确的单词填进去吧~" }, "optionList": [ { "option": "shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，shower是洗澡，是不能吃的，回忆一下你今天喂大象吃了什么好吃的呀？" } }, { "option": "bananas", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你喂给大象的是香蕉，这里填bananas刚好符合句子意思，完全正确~" } }, { "option": "elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，elephant是大象本身，总不能是大象吃了自己吧，再想想喂给它的食物是什么~" } } ], "answer": [ 1 ], "write": { "desc": "bananas", "trans": "香蕉" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "现在要填清洁护理的记录啦，句子是“Cleaning: She had ___ today.”，请选合适的词填空吧~" }, "optionList": [ { "option": "a shower", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！你今天给大象洗了澡，had a shower就是“洗了澡”的意思，完全符合清洁记录的内容~" } }, { "option": "bananas", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，bananas是香蕉，属于食物，不属于清洁项目，回忆一下你给大象做的清洁护理是什么吧。" } }, { "option": "elephant", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，elephant是我们护理的动物，这里是要填清洁相关的内容，再想想吧~" } } ], "answer": [ 0 ], "write": { "desc": "a shower", "trans": "一次淋浴" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "image": "0000800-02.png" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "最后要总结大象的喜好，句子是“The elephant ___ showers and bananas!”，请选择合适的表达补全句子吧~" }, "optionList": [ { "option": "love to", "feedback": { "type": "npc", "npcName": "Brainy", "content": "很棒哦你记得love的相关用法，但是这里主语the elephant是第三人称单数，love要变成loves，而且后面跟的是名词showers和bananas，不需要加to哦，再调整一下吧。" } }, { "option": "loves", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太优秀了！主语是第三人称单数，所以用loves，后面直接加喜欢的事物，完美表达出“大象喜欢洗澡和香蕉”的意思~" } }, { "option": "loves to", "feedback": { "type": "npc", "npcName": "Brainy", "content": "你注意到了第三人称单数的变化很棒，但是love to后面需要跟动词原形，这里后面是名词showers和bananas，不需要加to哦，再试一次吧。" } } ], "answer": [ 1 ], "write": { "desc": "The elephant loves showers and bananas!", "trans": "这头大象喜欢洗澡和香蕉！" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，可以使用准确的单词 elephant、banana、shower以及句型 ... love(s) to...，完成了大象护理记录的填写，准确描述了大象的相关信息、饮食、清洁项目和喜好!" } }
evalInfo

title |
taskDesc |
sceneDesc |
knowledge | elephant n. 大象 banana n. 香蕉 shower n. 淋浴、洗澡 ... love(s) to... ……喜爱……
passCondition |

textList

[ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物类型：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ]

{ "title": "填写大象护理记录", "taskDesc": "根据图片内容，填写大象护理报告。", "sceneDesc": "粗心的大象饲养员忘记给大象洗澡了！真是照顾不周。你们给大象洗了澡，还喂了香蕉，现在把这些都记在护理记录上吧！", "knowledge": "elephant n. 大象\nbanana n. 香蕉\nshower n. 淋浴、洗澡\n... love(s) to... ……喜爱……", "passCondition": "说明动物类型是大象。说明大象吃了香蕉。说明大象洗了澡。表达大象喜欢香蕉和洗澡。", "textList": [ { "mode": "preset", "desc": "Animal Keeper's Record", "answerText": "" }, { "mode": "fillingInput", "desc": "Animal type: ___ ", "answerText": "Elephant", "hint": "动物类型：大象（Elephant）" }, { "mode": "fillingInput", "desc": "Food: She ate ___ .", "answerText": "bananas", "hint": "食物：她吃了香蕉（bananas）。" }, { "mode": "fillingInput", "desc": "Cleaning: She had ___ today. ", "answerText": "a shower", "hint": "清洁：她今天洗了澡（a shower）。" }, { "mode": "preset", "desc": "What does she love?", "answerText": "" }, { "mode": "universalInput", "answerText": "The elephant loves showers and bananas!", "hint": "这头大象喜欢洗澡和香蕉！（The elephant loves showers and bananas!）" } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": null, "kpType": "vocab", "kpTitle": "elephant n. 大象", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "banana n. 香蕉", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shower n. 淋浴、洗澡", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……喜爱……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_writing_imgWrite", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "elephant n. 大象", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "banana n. 香蕉", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "shower n. 淋浴、洗澡", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "... love(s) to... ……喜爱……", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 现在你要填写大象护理报告的第一项“动物类型”，请选择合适的单词填在横线上：Animal type: ___
    用户选项:
    （选项 A）elephant [正确]
      Brainy: 答对啦！我们今天护理的动物是大象，所以这里填elephant是完全正确的~
    （选项 B）banana
      Brainy: 不对哦，banana是香蕉，属于食物，不是动物类型，再想想我们今天照顾的是什么动物吧。
    （选项 C）shower
      Brainy: 不对哦，shower是洗澡的意思，是我们给大象做的清洁项目，不是动物类型，再试试看吧。

    # 问题2：
    Brainy: 接下来要填写食物相关的记录，句子是“Food: She ate ___ .”，请选择正确的单词填进去吧~
    用户选项:
    （选项 A）shower
      Brainy: 不对哦，shower是洗澡，是不能吃的，回忆一下你今天喂大象吃了什么好吃的呀？
    （选项 B）bananas [正确]
      Brainy: 太棒了！你喂给大象的是香蕉，这里填bananas刚好符合句子意思，完全正确~
    （选项 C）elephant
      Brainy: 不对哦，elephant是大象本身，总不能是大象吃了自己吧，再想想喂给它的食物是什么~

    # 问题3：
    Brainy: 现在要填清洁护理的记录啦，句子是“Cleaning: She had ___ today.”，请选合适的词填空吧~
    用户选项:
    （选项 A）a shower [正确]
      Brainy: 答对啦！你今天给大象洗了澡，had a shower就是“洗了澡”的意思，完全符合清洁记录的内容~
    （选项 B）bananas
      Brainy: 不对哦，bananas是香蕉，属于食物，不属于清洁项目，回忆一下你给大象做的清洁护理是什么吧。
    （选项 C）elephant
      Brainy: 不对哦，elephant是我们护理的动物，这里是要填清洁相关的内容，再想想吧~

    # 问题4：
    Brainy: 最后要总结大象的喜好，句子是“The elephant ___ showers and bananas!”，请选择合适的表达补全句子吧~
    用户选项:
    （选项 A）love to
      Brainy: 很棒哦你记得love的相关用法，但是这里主语the elephant是第三人称单数，love要变成loves，而且后面跟的是名词showers和bananas，不需要加to哦，再调整一下吧。
    （选项 B）loves [正确]
      Brainy: 太优秀了！主语是第三人称单数，所以用loves，后面直接加喜欢的事物，完美表达出“大象喜欢洗澡和香蕉”的意思~
    （选项 C）loves to
      Brainy: 你注意到了第三人称单数的变化很棒，但是love to后面需要跟动词原形，这里后面是名词showers和bananas，不需要加to哦，再试一次吧。
    ```

中间结果: 互动描述

    Animal Keeper's Record Animal type: Elephant Food: She ate bananas. Cleaning: She had a shower today. What does she love? The elephant loves showers and bananas!（动物饲养员记录
    动物种类：大象
    食物：她吃了香蕉。
    清洁：她今天洗了澡。
    她喜欢什么呢？
    这头大象喜欢洗澡和香蕉！）

28 核心邮件组句 cId: 0000800 core_writing_questionMakeSentence
已保存 ▶
taskInfo

cId |
cType |
title |
taskDesc |
sceneDesc | Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。
img |
plotSummary |
stemDesc | [ "What is your opinion on the job?", "Why do you want to stay?", "Ask her when to come." ]
key | [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ]
cDesc | Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? When will you arrive? （亲爱的丽贝卡： 我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会有一天来漫游港呢？你什么时候会到？）

{ "cId": "0000800", "cType": "core_writing_questionMakeSentence", "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "img": "", "plotSummary": "", "stemDesc": [ "What is your opinion on the job?", "Why do you want to stay?", "Ask her when to come." ], "key": [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ], "cDesc": "Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? When will you arrive?\n（亲爱的丽贝卡：\n我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会有一天来漫游港呢？你什么时候会到？）" }
textInfo

inputType |
passCondition |

textList

[ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ]

{ "inputType": "sentence", "passCondition": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
studyInfo

learningPart

[ { "leadIn": { "desc": "What is your opinion on the job?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件里要向Rebecca说明留在Wander Port的原因，首先需要提到这份探索任务对你们的重要性，你会怎么说？" }, "optionList": [ { "option": "The job is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你准确表达了“这份工作（探索任务）对我们很重要”的含义，符合邮件里说明留任原因的语境。" } }, { "option": "The jobs is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，jobs是job的复数形式，后面的be动词应该用are，这里和单数的is搭配不匹配，而且语境里指代的是这一项探索任务，应该用单数形式。" } }, { "option": "The projects is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，projects是复数形式，和后面的单数is搭配不恰当，同时这里要指代的是当前的探索工作，用job更贴合语境。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这份工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Why do you want to stay?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "说完工作的重要性，你需要接着向Rebecca解释这就是你们必须留下来的原因，你会怎么表达这句话？" }, "optionList": [ { "option": "That's how we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，how的意思是“如何、怎样”，用在这里语义不通，这里要表达的是留在这里的原因，应该用表示原因的连接词。" } }, { "option": "That's why we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "非常好！你准确用“That's why + 句子”的结构表达了“这就是为什么我们必须留下来”的含义，完美承接了上一句说明工作重要性的内容。" } }, { "option": "That's which we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，which通常用来引导定语从句指代事物，在这里不能用来表示原因，不符合句子要表达的逻辑哦。" } } ], "answer": [ 1 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是为什么我们必须留下来。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when to come." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "邮件的最后你想要询问Rebecca抵达Wander Port的时间，你会怎么问？" }, "optionList": [ { "option": "When is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，arrive是实义动词，构成疑问句时需要用助动词will/do等，不能用be动词is，这个表达语法不正确。" } }, { "option": "How is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，首先语法上arrive是实义动词，不能和be动词is搭配使用，其次这里要询问的是时间，不是方式，how不符合语义要求。" } }, { "option": "When will you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你准确使用了一般将来时的特殊疑问句结构，正确表达了询问对方抵达时间的意思，非常适合放在邮件的结尾询问Rebecca的行程。" } } ], "answer": [ 2 ], "write": { "desc": "When will you arrive?", "trans": "你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了句式The job is...、That's why we have to...以及When will you arrive?，可以顺利完成给Rebecca的邮件编写啦！" }

{ "learningPart": [ { "leadIn": { "desc": "What is your opinion on the job?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件里要向Rebecca说明留在Wander Port的原因，首先需要提到这份探索任务对你们的重要性，你会怎么说？" }, "optionList": [ { "option": "The job is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你准确表达了“这份工作（探索任务）对我们很重要”的含义，符合邮件里说明留任原因的语境。" } }, { "option": "The jobs is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，jobs是job的复数形式，后面的be动词应该用are，这里和单数的is搭配不匹配，而且语境里指代的是这一项探索任务，应该用单数形式。" } }, { "option": "The projects is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，projects是复数形式，和后面的单数is搭配不恰当，同时这里要指代的是当前的探索工作，用job更贴合语境。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这份工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Why do you want to stay?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "说完工作的重要性，你需要接着向Rebecca解释这就是你们必须留下来的原因，你会怎么表达这句话？" }, "optionList": [ { "option": "That's how we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，how的意思是“如何、怎样”，用在这里语义不通，这里要表达的是留在这里的原因，应该用表示原因的连接词。" } }, { "option": "That's why we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "非常好！你准确用“That's why + 句子”的结构表达了“这就是为什么我们必须留下来”的含义，完美承接了上一句说明工作重要性的内容。" } }, { "option": "That's which we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，which通常用来引导定语从句指代事物，在这里不能用来表示原因，不符合句子要表达的逻辑哦。" } } ], "answer": [ 1 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是为什么我们必须留下来。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when to come." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "邮件的最后你想要询问Rebecca抵达Wander Port的时间，你会怎么问？" }, "optionList": [ { "option": "When is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，arrive是实义动词，构成疑问句时需要用助动词will/do等，不能用be动词is，这个表达语法不正确。" } }, { "option": "How is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "不对哦，首先语法上arrive是实义动词，不能和be动词is搭配使用，其次这里要询问的是时间，不是方式，how不符合语义要求。" } }, { "option": "When will you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你准确使用了一般将来时的特殊疑问句结构，正确表达了询问对方抵达时间的意思，非常适合放在邮件的结尾询问Rebecca的行程。" } } ], "answer": [ 2 ], "write": { "desc": "When will you arrive?", "trans": "你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了句式The job is...、That's why we have to...以及When will you arrive?，可以顺利完成给Rebecca的邮件编写啦！" } }
evalInfo

title |
taskDesc |
sceneDesc | Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。
knowledge | The job is... 这份工作...... That's why we have to... 这就是为什么我们必须…… When will you arrive? 你什么时候会到？
passCondition |

textList

[ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ]

{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "The job is... 这份工作......\nThat's why we have to... 这就是为什么我们必须……\nWhen will you arrive? 你什么时候会到？", "passCondition": "用户写出：这份工作很重要。这就是我们为什么要留下。你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ___ is important for us.", "optionList": [ { "option": "job" }, { "option": "jobs" }, { "option": "projects" } ], "answer": [ 0 ] }, { "mode": "fillingInput", "desc": "That's ___ we have to stay.", "optionList": [ { "option": "why" }, { "option": "how" }, { "option": "which" } ], "answer": [ 0 ] }, { "mode": "preset", "desc": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": " ___ you arrive?", "optionList": [ { "option": "When will" }, { "option": "When is" }, { "option": "How is" } ], "answer": [ 0 ] } ] }
kpInfo JSON

pushType |
cType |
cId |

kpInfo

[ { "kpId": "0328017", "kpType": "sentence", "kpTitle": "The job is...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "这份工作......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0328016", "kpType": "sentence", "kpTitle": "That's why we have to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "这就是为什么我们必须……", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": "0328014", "kpType": "sentence", "kpTitle": "When will you arrive?", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "你什么时候会到？", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "core_writing_questionMakeSentence", "cId": "0000800", "kpInfo": [ { "kpId": "0328017", "kpType": "sentence", "kpTitle": "The job is...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "sentence", "kpTitle": "这份工作......", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": "0328016", "kpType": "sentence", "kpTitle": "That's why we have to...", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "这就是为什么我们必须……", "kpSkill": "vocab_meaning", "kpSkillName": "词义" }, { "kpId": "0328014", "kpType": "sentence", "kpTitle": "When will you arrive?", "kpSkill": "sentence_meaning", "kpSkillName": "语义" }, { "kpId": null, "kpType": "vocab", "kpTitle": "你什么时候会到？", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你在邮件里要向Rebecca说明留在Wander Port的原因，首先需要提到这份探索任务对你们的重要性，你会怎么说？
    用户选项:
    （选项 A）The job is important for us. [正确]
      Brainy: 太棒了！你准确表达了“这份工作（探索任务）对我们很重要”的含义，符合邮件里说明留任原因的语境。
    （选项 B）The jobs is important for us.
      Brainy: 不对哦，jobs是job的复数形式，后面的be动词应该用are，这里和单数的is搭配不匹配，而且语境里指代的是这一项探索任务，应该用单数形式。
    （选项 C）The projects is important for us.
      Brainy: 不对哦，projects是复数形式，和后面的单数is搭配不恰当，同时这里要指代的是当前的探索工作，用job更贴合语境。

    # 问题2：
    Brainy: 说完工作的重要性，你需要接着向Rebecca解释这就是你们必须留下来的原因，你会怎么表达这句话？
    用户选项:
    （选项 A）That's how we have to stay.
      Brainy: 不对哦，how的意思是“如何、怎样”，用在这里语义不通，这里要表达的是留在这里的原因，应该用表示原因的连接词。
    （选项 B）That's why we have to stay. [正确]
      Brainy: 非常好！你准确用“That's why + 句子”的结构表达了“这就是为什么我们必须留下来”的含义，完美承接了上一句说明工作重要性的内容。
    （选项 C）That's which we have to stay.
      Brainy: 不对哦，which通常用来引导定语从句指代事物，在这里不能用来表示原因，不符合句子要表达的逻辑哦。

    # 问题3：
    Brainy: 邮件的最后你想要询问Rebecca抵达Wander Port的时间，你会怎么问？
    用户选项:
    （选项 A）When is you arrive?
      Brainy: 不对哦，arrive是实义动词，构成疑问句时需要用助动词will/do等，不能用be动词is，这个表达语法不正确。
    （选项 B）How is you arrive?
      Brainy: 不对哦，首先语法上arrive是实义动词，不能和be动词is搭配使用，其次这里要询问的是时间，不是方式，how不符合语义要求。
    （选项 C）When will you arrive? [正确]
      Brainy: 太棒了！你准确使用了一般将来时的特殊疑问句结构，正确表达了询问对方抵达时间的意思，非常适合放在邮件的结尾询问Rebecca的行程。
    ```

中间结果: 互动描述

    Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? When will you arrive?
    （亲爱的丽贝卡：
    我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会有一天来漫游港呢？你什么时候会到？）

29 核心邮件撰写 cId: 0000800 core_writing_questionWrite
已保存 ▶
taskInfo

cId |
cType |
title |
taskDesc |
sceneDesc | Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。
img |
plotSummary |
stemDesc | [ "Tell her your decision and why.", "Ask her when she will arrive." ]
key | [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ]
cDesc | Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive? （亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会有一天来漫游港吗？如果会的话，你什么时候会到呢？）

{ "cId": "0000800", "cType": "core_writing_questionWrite", "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "img": "", "plotSummary": "", "stemDesc": [ "Tell her your decision and why.", "Ask her when she will arrive." ], "key": [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ], "cDesc": "Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?\n（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会有一天来漫游港吗？如果会的话，你什么时候会到呢？）" }
textInfo

inputType |
passCondition |

textList

[ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候（when will）会到达？" } ]

{ "inputType": "write", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候（when will）会到达？" } ] }
studyInfo

learningPart

[ { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件开头已经安抚了Rebecca的担忧，提到这是你们探索Wander Port的绝佳机会，接下来要说明这份探索工作对你们的重要性，你会怎么说？" }, "optionList": [ { "option": "The job is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你准确表达了这份工作对你们的重要性，符合邮件里解释留在这里原因的语境。" } }, { "option": "The jobs are important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这里你们的探索任务是一项整体的工作，不需要用复数形式jobs哦，再想想合适的表达吧。" } }, { "option": "The projects are important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "projects是“项目”的意思，这里你要表达的是当下的这份探索工作的重要性，不符合你想表达的含义哦，再试一次吧。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这份工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你已经说明了工作的重要性，现在需要进一步告诉Rebecca这就是你们必须留下来的原因，你会怎么表达？" }, "optionList": [ { "option": "That's how we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是用来询问方式的，这句话表达的是“我们就是这么留下来的”，不能用来解释留下来的原因哦，再想想吧。" } }, { "option": "That's why we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！你精准用That's why...的结构说明了你们必须留下来的原因，逻辑非常通顺。" } }, { "option": "That's which we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "which一般用来引导定语从句指代事物，不能用来引出原因哦，这个表达不符合语法规则，再试一次吧。" } } ], "answer": [ 1 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是为什么我们必须留下来。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你已经把你们留下的决定和原因都说明白了，之前你问过Rebecca会不会来Wander Port，现在想进一步询问她如果来的话什么时候到达，你会怎么问？" }, "optionList": [ { "option": "If so, when is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "arrive是实义动词，构成疑问句的时候需要用助动词will而不是is哦，这个表达语法有误，再试一次吧。" } }, { "option": "If so, how is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是询问方式的，你现在要问的是到达的时间，而且句子的动词搭配也有语法错误哦，再想想吧。" } }, { "option": "If so, when will you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太厉害了！你正确使用了一般将来时的特殊疑问句，准确询问了Rebecca的到达时间，非常符合邮件的语境。" } } ], "answer": [ 2 ], "write": { "desc": "If so, when will you arrive?", "trans": "如果会的话，你什么时候会到呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ]

closing | { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了表达“The job is...”、“That's why we have to...”以及询问“When will you arrive?”的用法，成功完成了给Rebecca的邮件编写！" }

{ "learningPart": [ { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你在邮件开头已经安抚了Rebecca的担忧，提到这是你们探索Wander Port的绝佳机会，接下来要说明这份探索工作对你们的重要性，你会怎么说？" }, "optionList": [ { "option": "The job is important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你准确表达了这份工作对你们的重要性，符合邮件里解释留在这里原因的语境。" } }, { "option": "The jobs are important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这里你们的探索任务是一项整体的工作，不需要用复数形式jobs哦，再想想合适的表达吧。" } }, { "option": "The projects are important for us.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "projects是“项目”的意思，这里你要表达的是当下的这份探索工作的重要性，不符合你想表达的含义哦，再试一次吧。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这份工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你已经说明了工作的重要性，现在需要进一步告诉Rebecca这就是你们必须留下来的原因，你会怎么表达？" }, "optionList": [ { "option": "That's how we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是用来询问方式的，这句话表达的是“我们就是这么留下来的”，不能用来解释留下来的原因哦，再想想吧。" } }, { "option": "That's why we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！你精准用That's why...的结构说明了你们必须留下来的原因，逻辑非常通顺。" } }, { "option": "That's which we have to stay.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "which一般用来引导定语从句指代事物，不能用来引出原因哦，这个表达不符合语法规则，再试一次吧。" } } ], "answer": [ 1 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是为什么我们必须留下来。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你已经把你们留下的决定和原因都说明白了，之前你问过Rebecca会不会来Wander Port，现在想进一步询问她如果来的话什么时候到达，你会怎么问？" }, "optionList": [ { "option": "If so, when is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "arrive是实义动词，构成疑问句的时候需要用助动词will而不是is哦，这个表达语法有误，再试一次吧。" } }, { "option": "If so, how is you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "how是询问方式的，你现在要问的是到达的时间，而且句子的动词搭配也有语法错误哦，再想想吧。" } }, { "option": "If so, when will you arrive?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太厉害了！你正确使用了一般将来时的特殊疑问句，准确询问了Rebecca的到达时间，非常符合邮件的语境。" } } ], "answer": [ 2 ], "write": { "desc": "If so, when will you arrive?", "trans": "如果会的话，你什么时候会到呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了表达“The job is...”、“That's why we have to...”以及询问“When will you arrive?”的用法，成功完成了给Rebecca的邮件编写！" } }
evalInfo

title |
taskDesc |
sceneDesc | Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。
knowledge | The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？
passCondition |

textList

[ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候（when will）会到达？" } ]

{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "Dear Rebecca," }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "I know you are worried. But this is our best chance to explore Wander Port." }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "Will you come to Wander Port some day?" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候（when will）会到达？" } ] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "core_writing_questionWrite", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你在邮件开头已经安抚了Rebecca的担忧，提到这是你们探索Wander Port的绝佳机会，接下来要说明这份探索工作对你们的重要性，你会怎么说？
    用户选项:
    （选项 A）The job is important for us. [正确]
      Brainy: 太棒了！你准确表达了这份工作对你们的重要性，符合邮件里解释留在这里原因的语境。
    （选项 B）The jobs are important for us.
      Brainy: 这里你们的探索任务是一项整体的工作，不需要用复数形式jobs哦，再想想合适的表达吧。
    （选项 C）The projects are important for us.
      Brainy: projects是“项目”的意思，这里你要表达的是当下的这份探索工作的重要性，不符合你想表达的含义哦，再试一次吧。

    # 问题2：
    Brainy: 你已经说明了工作的重要性，现在需要进一步告诉Rebecca这就是你们必须留下来的原因，你会怎么表达？
    用户选项:
    （选项 A）That's how we have to stay.
      Brainy: how是用来询问方式的，这句话表达的是“我们就是这么留下来的”，不能用来解释留下来的原因哦，再想想吧。
    （选项 B）That's why we have to stay. [正确]
      Brainy: 完全正确！你精准用That's why...的结构说明了你们必须留下来的原因，逻辑非常通顺。
    （选项 C）That's which we have to stay.
      Brainy: which一般用来引导定语从句指代事物，不能用来引出原因哦，这个表达不符合语法规则，再试一次吧。

    # 问题3：
    Brainy: 你已经把你们留下的决定和原因都说明白了，之前你问过Rebecca会不会来Wander Port，现在想进一步询问她如果来的话什么时候到达，你会怎么问？
    用户选项:
    （选项 A）If so, when is you arrive?
      Brainy: arrive是实义动词，构成疑问句的时候需要用助动词will而不是is哦，这个表达语法有误，再试一次吧。
    （选项 B）If so, how is you arrive?
      Brainy: how是询问方式的，你现在要问的是到达的时间，而且句子的动词搭配也有语法错误哦，再想想吧。
    （选项 C）If so, when will you arrive? [正确]
      Brainy: 太厉害了！你正确使用了一般将来时的特殊疑问句，准确询问了Rebecca的到达时间，非常符合邮件的语境。
    ```

中间结果: 互动描述

    Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?
    （亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会有一天来漫游港吗？如果会的话，你什么时候会到呢？）

30 对话表达 cId: 0000800 mid_dialog_express
已保存 ▶
jsonData

cType |
cId |
title |
asrPrompt |
resourceMapping | { "Vicky": 658 }
preDialog | []
imgShowTimingList | [ "content", "feedback" ]
img |
tip |
corFeedback | { "type": "npc", "npcName": "Sunny", "content": "You are so clever!" }
errFeedback | { "type": "npc", "npcName": "Beekeeper", "content": "Try again." }
question | { "desc": "回答养蜂人的问题。" }
example | { "type": "user", "content": "Spring!" }
postDialog | []

{ "cType": "mid_dialog_express", "cId": "0000800", "title": "回答养蜂人的问题", "asrPrompt": "养蜂人,蜂蜜,Spring,春天", "resourceMapping": { "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content", "feedback" ], "img": "0000800.png", "tip": "春天会收获最多的蜂蜜哦~", "corFeedback": { "type": "npc", "npcName": "Sunny", "content": "You are so clever!" }, "errFeedback": { "type": "npc", "npcName": "Beekeeper", "content": "Try again." }, "question": { "desc": "回答养蜂人的问题。" }, "example": { "type": "user", "content": "Spring!" }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "spring", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_express", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "spring", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
31 对话选择 cId: 0000800 mid_dialog_choose
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
preDialog | [ { "type": "npc", "npcName": "Dad", "content": "Is it for a cat?" } ]
imgShowTimingList | [ "content", "feedback" ]
img |
optionList | [ { "option": "This is Mr Rabbit's home.", "needAudio": true }, { "option": "This is a cat's home.", "needAudio": true } ]
answer | [ 0 ]
corFeedback | { "type": "npc", "npcName": "Dad", "content": "Oh, I see." }
errFeedback | { "type": "npc", "npcName": "Dad", "content": "It is too small for a cat." }
postDialog | []

{ "cType": "mid_dialog_choose", "cId": "0000800", "title": "房屋主人是谁", "resourceMapping": { "Vicky": 658 }, "preDialog": [ { "type": "npc", "npcName": "Dad", "content": "Is it for a cat?" } ], "imgShowTimingList": [ "content", "feedback" ], "img": "0000800.png", "optionList": [ { "option": "This is Mr Rabbit's home.", "needAudio": true }, { "option": "This is a cat's home.", "needAudio": true } ], "answer": [ 0 ], "corFeedback": { "type": "npc", "npcName": "Dad", "content": "Oh, I see." }, "errFeedback": { "type": "npc", "npcName": "Dad", "content": "It is too small for a cat." }, "postDialog": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "home", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_choose", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "home", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
32 对话选读 cId: 0000800 mid_dialog_select
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
preDialog | []
imgShowTimingList | []
optionList | [ { "option": "It sounds healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? Medic wants more sleep too!" } }, { "option": "It isn't healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? But Medic likes sleeping..." } } ]
postDialog | [ { "type": "user", "content": "Going to bed early and getting up early is healthy." }, { "type": "user", "content": "Sleeping too much is not healthy." }, { "type": "npc", "npcName": "Medic", "content": "Medic remembers it now!" } ]

{ "cType": "mid_dialog_select", "cId": "0000800", "title": "评价随地睡觉的习惯", "resourceMapping": { "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "optionList": [ { "option": "It sounds healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? Medic wants more sleep too!" } }, { "option": "It isn't healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? But Medic likes sleeping..." } } ], "postDialog": [ { "type": "user", "content": "Going to bed early and getting up early is healthy." }, { "type": "user", "content": "Sleeping too much is not healthy." }, { "type": "npc", "npcName": "Medic", "content": "Medic remembers it now!" } ] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "healthy(词义)", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_dialog_select", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "healthy(词义)", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
33 信息描写 cId: 0000800 mid_message_trace
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请描写你需要的水果" }
trace |
img |
inputSet | []

{ "cType": "mid_message_trace", "cId": "0000800", "title": "购买葡萄", "resourceMapping": { "Vicky": 658 }, "cDesc": "You bought the grape you needed. (你买了你需要的葡萄。)", "question": { "desc": "请描写你需要的水果" }, "trace": "grape", "img": "0000800.png", "inputSet": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_trace", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
34 信息拼词 cId: 0000800 mid_message_spell
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请填入“葡萄”的正确的英文拼写" }
tip |
inputConfig | [ { "stem": "G（2）pe", "value": "ra" } ]
stemList | [ "h", "a", "r", "l", "e", "w" ]
img |
inputSet | []

{ "cType": "mid_message_spell", "cId": "0000800", "title": "购买葡萄", "resourceMapping": { "Vicky": 658 }, "cDesc": "You bought the fresh grape successfully. (你成功买到了新鲜的葡萄。)", "question": { "desc": "请填入“葡萄”的正确的英文拼写" }, "tip": "葡萄的英文是 grape / 第二个字母是 r 哦，再想想最后一个空应该填什么吧", "inputConfig": [ { "stem": "G（2）pe", "value": "ra" } ], "stemList": [ "h", "a", "r", "l", "e", "w" ], "img": "0000800.png", "inputSet": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_spell", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
35 信息组句 cId: 0000800 mid_message_combine
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc | You made the sentence "Is Maeve the visitor you invited?". (你组成了“Is Maeve the visitor you invited?”这个句子。)
question | { "desc": "请在空白处填入正确的单词，组成句子" }
tip |
optionList | [ { "option": "is" }, { "option": "the visitor" }, { "option": "you invited" }, { "option": "Maeve" } ]
answer | [ 0, 3, 1, 2 ]
img |
inputSet | []

{ "cType": "mid_message_combine", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You made the sentence \"Is Maeve the visitor you invited?\". (你组成了“Is Maeve the visitor you invited?”这个句子。)", "question": { "desc": "请在空白处填入正确的单词，组成句子" }, "tip": "可以用 is 引导的一般疑问句询问；you invited 是 visitor 的后置定语", "optionList": [ { "option": "is" }, { "option": "the visitor" }, { "option": "you invited" }, { "option": "Maeve" } ], "answer": [ 0, 3, 1, 2 ], "img": "0000800.png", "inputSet": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_combine", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
36 信息补词 cId: 0000800 mid_message_fillin
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请在空白处填入正确的字母，组成完整单词" }
tip |
inputConfig | [ { "stem": "K(3)ledge", "value": "now" } ]
img |
inputSet | []

{ "cType": "mid_message_fillin", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in \"now\" to make \"knowledge\".（你填入\"now\"组成了单词“知识”。）", "question": { "desc": "请在空白处填入正确的字母，组成完整单词" }, "tip": "需要填入的单词的中文释义是“知识”", "inputConfig": [ { "stem": "K(3)ledge", "value": "now" } ], "img": "0000800.png", "inputSet": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_fillin", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
37 信息填词 cId: 0000800 mid_message_word
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc | You filled "knowledge" and "information" in the blanks. (你在空白处填入了“knowledge”和“information”。)
question | { "desc": "请在空白处填入合适的单词，使句意完整" }
tip |
answer | [ "knowledge", "information" ]
img |
inputSet | []

{ "cType": "mid_message_word", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled \"knowledge\" and \"information\" in the blanks. (你在空白处填入了“knowledge”和“information”。)", "question": { "desc": "请在空白处填入合适的单词，使句意完整" }, "tip": "需要填入的单词的中文释义是“知识”", "answer": [ "knowledge", "information" ], "img": "0000800.png", "inputSet": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_word", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
38 信息填句 cId: 0000800 mid_message_sentence
已保存 ▶
jsonData

cType |
cId |
title |
resourceMapping | { "Vicky": 658 }
cDesc |
question | { "desc": "请填入正确的内容，使句意完整" }
tip |
answerHint | The main purpose of this tour is to learn knowledge about local traditional crafts.
img |
inputSet | []

{ "cType": "mid_message_sentence", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled the information form with the correct sentence. (你填写了正确的句子到信息表中。)", "question": { "desc": "请填入正确的内容，使句意完整" }, "tip": "你可以使用 The main purpose of this tour is...", "answerHint": "The main purpose of this tour is to learn knowledge about local traditional crafts.", "img": "0000800.png", "inputSet": [] }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_message_sentence", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "Grape (词形 - 拼写规律)", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
39 图片单选 cId: 0000800 mid_image_choose
已保存 ▶
jsonData

cType |
cId |
title |
meaning |
resourceMapping | { "Vicky": 658 }
question | { "desc": "Find $warm$ water.", "content": "Find $warm$ water." }
imageInfo | { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }
optionList | [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" } ]
answer | [ "02" ]
preDialog | [ { "type": "user", "content": "Look!" } ]
tip |
corFeedback | { "type": "user", "npcName": "User", "content": "Warm water here!" }
errFeedback | { "type": "user", "npcName": "User", "content": "It doesn't seem like there's warm water." }
postDialog | []
cDesc |

{ "cType": "mid_image_choose", "cId": "0000800", "title": "选择合适的河段取水", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Find $warm$ water.", "content": "Find $warm$ water." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" } ], "answer": [ "02" ], "preDialog": [ { "type": "user", "content": "Look!" } ], "tip": "warm 指“温暖的”。", "corFeedback": { "type": "user", "npcName": "User", "content": "Warm water here!" }, "errFeedback": { "type": "user", "npcName": "User", "content": "It doesn't seem like there's warm water." }, "postDialog": [], "cDesc": "You found the warm water area. (你找到了温暖的水域。)" }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": "0220004", "kpType": "vocab", "kpTitle": "warm", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_image_choose", "cId": "0000800", "kpInfo": [ { "kpId": "0220004", "kpType": "vocab", "kpTitle": "warm", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
40 图片多选 cId: 0000800 mid_image_multiple
已保存 ▶
jsonData

cType |
cId |
title |
meaning |
resourceMapping | { "Vicky": 658 }
question | { "desc": "Find parts of the $house$.", "content": "Find parts of the $house$." }
imageInfo | { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }
optionList | [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" }, { "option": "0000800_option_04.png" } ]
answer | [ 2, 3, 4 ]
preDialog | [ { "type": "npc", "npcName": "Peter", "content": "Let's fix the house!" }, { "type": "user", "content": "Okay." } ]
tip |
corFeedback | { "type": "user", "content": "These are all parts of the house." }
errFeedback | { "type": "user", "content": "Let's check again." }
postDialog | []
cDesc |

{ "cType": "mid_image_multiple", "cId": "0000800", "title": "选出需要修复的部分", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Find parts of the $house$.", "content": "Find parts of the $house$." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" }, { "option": "0000800_option_04.png" } ], "answer": [ 2, 3, 4 ], "preDialog": [ { "type": "npc", "npcName": "Peter", "content": "Let's fix the house!" }, { "type": "user", "content": "Okay." } ], "tip": "house 指“房子”。", "corFeedback": { "type": "user", "content": "These are all parts of the house." }, "errFeedback": { "type": "user", "content": "Let's check again." }, "postDialog": [], "cDesc": "You found the parts of the house to fix. (你找到了房子需要修复的部分。)" }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "house", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_image_multiple", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "house", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }
41 图片有序 cId: 0000800 mid_image_sequence
已保存 ▶
jsonData

cType |
cId |
title |
meaning |
resourceMapping | { "Vicky": 658 }
question | { "desc": "We must go $one by one$." }
imageInfo | { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }
optionList | [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ]
answer | [ 0, 1, 2, 3 ]
preDialog | []
tip |
corFeedback | {}
errFeedback | { "type": "npc", "npcName": "Dan", "content": "We can't jump like that." }
postDialog | []
cDesc |

{ "cType": "mid_image_sequence", "cId": "0000800", "title": "排序跳格子顺序", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "We must go $one by one$." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ], "answer": [ 0, 1, 2, 3 ], "preDialog": [], "tip": "one by one指\"一个接一个\"", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Dan", "content": "We can't jump like that." }, "postDialog": [], "cDesc": "You sort the hopscotch order $one\\ by\\ one$. (你一个接一个地把跳格子顺序排好了。)" }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "sentence", "kpTitle": "... one by one.", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ]

{ "pushType": "relationKp", "cType": "mid_image_sequence", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "sentence", "kpTitle": "... one by one.", "kpSkill": "sentence_meaning", "kpSkillName": "语义" } ] }
42 图片拖拽 cId: 0000800 mid_image_drag
已保存 ▶
jsonData

cType |
cId |
title |
meaning |
resourceMapping | { "Vicky": 658 }
question | { "desc": "Let's pick the $fish$, $crab$ and $octopus$ in order." }
imageInfo | { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }
optionList | [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ]
answer | [ 0, 2, 1 ]
preDialog | [ { "type": "npc", "npcName": "Sarah", "content": "Look! So many gloves there!" } ]
tip |
corFeedback | { "type": "npc", "npcName": "Daisy", "content": "Yes! You got it right!" }
errFeedback | { "type": "npc", "npcName": "Daisy", "content": "This doesn't seem like a crab." }
postDialog | [ { "type": "npc", "npcName": "Daisy", "content": "very good!" } ]
cDesc |

{ "cType": "mid_image_drag", "cId": "0000800", "title": "选出正确的物品", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Let's pick the $fish$, $crab$ and $octopus$ in order." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ], "answer": [ 0, 2, 1 ], "preDialog": [ { "type": "npc", "npcName": "Sarah", "content": "Look! So many gloves there!" } ], "tip": "fish 指“鱼”；crab 指“螃蟹”；octopus 指“章鱼”", "corFeedback": { "type": "npc", "npcName": "Daisy", "content": "Yes! You got it right!" }, "errFeedback": { "type": "npc", "npcName": "Daisy", "content": "This doesn't seem like a crab." }, "postDialog": [ { "type": "npc", "npcName": "Daisy", "content": "very good!" } ], "cDesc": "You picked fish, crab and octopus in order. (你按顺序找出了鱼、螃蟹和章鱼。)" }
kpInfo JSON

pushType |
cType |
cId |
kpInfo | [ { "kpId": null, "kpType": "vocab", "kpTitle": "hammer （词义）", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ]

{ "pushType": "relationKp", "cType": "mid_image_drag", "cId": "0000800", "kpInfo": [ { "kpId": null, "kpType": "vocab", "kpTitle": "hammer （词义）", "kpSkill": "vocab_meaning", "kpSkillName": "词义" } ] }