我正在从axios
的get请求中获取数据,并将其移动到数组xyz
中。但是,当我将xyz
发送到step.prompt
时,会引发此错误:
” [onTurnError]:TypeError:无法读取的属性“ length” 未定义”
当我在日志中打印xyz
时,它具有我需要的正确数据。
async someFunction(step){
var xyz = [];
try {
const response = await axios.get(`url`);
for (var i = 0; i < response.data.length; i++) {
xyz[i] = response.data[i].xzyElement;
}
} catch (error) {
console.log(`error ${error}`);
}
return await step.prompt(PROMPT, 'Choose any one.', xyz);
}
我想将xyz
中的元素发送给用户作为提示。
答案 0 :(得分:0)
要使机器人框架使用提示,您可以使用以下类似内容
提示尺寸验证样本
return await stepContext.prompt(
SIZE_RANGE_PROMPT, {
prompt: 'How many people is the reservation for?',
retryPrompt: 'How large is your party?',
validations: { min: 3, max: 8 },
});
提示位置选择示例
async promptForLocation(stepContext) {
// Record the party size information in the current dialog state.
stepContext.values.size = stepContext.result;
// Prompt for location.
return await stepContext.prompt(LOCATION_PROMPT, {
prompt: 'Please choose a location.',
retryPrompt: 'Sorry, please choose a location from the list.',
choices: ['Redmond', 'Bellevue', 'Seattle'],
});
}
我假设,您的第二个参数应该是任何数组/列表,而是传递了名为“ Choose any one”的字符串,这就是为什么它给出“无法读取未定义的属性'length'的定义”的原因,因为它必须尝试访问数组的第一个或第二个元素,传递的参数是一个字符串。
提示方法的第二个参数带有提示选项对象,该对象具有以下属性。
作为参考,您可以在下面的文档中详细阅读
希望有帮助。
答案 1 :(得分:0)
for (var i = 0; i < response.data.length; i++) {
xyz[i] = `${response.data[i].xzyElement}`;
}
尝试以上述格式将任何元素值添加到数组中。
然后将不会发生TypeError
。