Node.js遍历JSON数组填充变量及Dialogflow训练短语导入问题咨询
问题根因
你读取到的inputPhrases是完整的JSON文件对象,训练短语数组存放在它的Training_Phrases属性下。原代码额外用[]把inputPhrases包裹后,生成的trainingPhrases_Parts是嵌套结构[完整JSON对象],遍历只会拿到一个元素,就会把多条短语合并为单条导入。
修复后的代码
async function createIntent(inputPhrases) { const displayName = ('Intent: ' + intentName); // 直接从JSON对象中取训练短语数组,无需额外嵌套 const trainingPhrases_Parts = inputPhrases.Training_Phrases; const trainingPhrases = []; trainingPhrases_Parts.forEach(phraseText => { const part = { text: phraseText, }; // 每个短语生成一个独立的训练短语对象 const trainingPhrase_con = { parts: [part], }; trainingPhrases.push(trainingPhrase_con); }); // 构造Intent const intent = { displayName: displayName, trainingPhrases: trainingPhrases, messages: [message], }; // 后续原有调用Dialogflow接口的逻辑保持不变即可 }
核心修改点
- 删除了对
inputPhrases的额外数组嵌套操作,直接读取inputPhrases.Training_Phrases拿到所有训练短语的原生数组 - 遍历过程中每个元素对应单条训练短语文本,分别生成独立的训练短语对象推入数组,即可实现多条短语独立导入
内容的提问来源于stack exchange,提问作者McD
相关产品推荐
相关产品推荐

