#javascript #node.js #azure #botframework
#javascript #node.js #azure #botframework
Вопрос:
Я получаю данные из 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
в качестве приглашения пользователю.
Ответ №1:
Для того, чтобы фреймворк бота использовал приглашение, вы могли бы использовать что-то вроде приведенного ниже
Запрос на образец проверки размера
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'],
});
}
Я предполагаю, что вашим вторым параметром должен быть любой массив / список, вместо этого вы передаете строку с именем «Выберите любой», поэтому она выдает «Не удается прочитать свойство ‘length’ неопределенного», поскольку оно должно пытаться получить доступ к первому или второму элементу массива, а переданный параметр является строкой.
Второй параметр метода prompt принимает объект prompt options, который имеет следующие свойства.
Для справки, вы можете прочитать подробности в приведенном ниже документе
Надеюсь, это поможет.
Комментарии:
1. Я пробовал с этим кодом. возврат ожидает StepContext.prompt(LOCATION_PROMPT, { приглашение: ‘Пожалуйста, выберите местоположение.’, retryPrompt: ‘Извините, пожалуйста, выберите местоположение из списка.’, варианты: [‘Редмонд’, ‘Бельвью’, ‘Сиэтл’], }); Но в моем случае значения выбора должны быть получены из динамического массива, в это время я получаю проблему с длиной. Если я объявляю его локально в функции со значениями, то проблем нет.
Ответ №2:
for (var i = 0; i < response.data.length; i ) {
xyz[i] = `${response.data[i].xzyElement}`;
}
Попробуйте добавить любое значение элемента в массив в указанном выше формате.
Тогда TypeError
не произойдет.