У меня есть список значений, каждое из которых имеет другое значение KEY, соответствующее ему, когда я представляю этот список пользователю, пользователь должен выбрать значение, а агент должен вызвать внешний API с KEY выбранного значения. Как я могу добиться этого в диалоговом потоке?
Я попытался отправить всю пару ключ-значение в контексте и получить к ней доступ в следующем намерении, но по какой-то причине, когда я установил список (массив) в диалоговом потоке параметров контекста, просто игнорируя ответ выполнения.
Что здесь происходит, и есть ли хороший способ добиться этого? Я пытаюсь разработать чат-бота для заказа еды, в котором представлена категория элементов в меню и элементы списка в этом меню будут выбираться, когда пользователь выбирает категорию, это меню не является статичным, поэтому я использую вызовы API для получения динамического меню.
function newOrder(agent)
{
var categories = []
var cat_parameters = {}
var catarray = []
const conv = agent.conv();
//conv.ask('sure, select a category to order');
agent.add('select a category to order');
return getAllCategories().then((result)=>{
for(let i=0; i< result.restuarantMenuList.length; i++)
{
try{
var name = result.restuarantMenuList[i].Name;
var catid = result.restuarantMenuList[i].Id;
categories.push(name)
//categories.name = catid
cat_parameters['id'] = catid;
cat_parameters['name'] = name
catarray.push(cat_parameters)
}catch(ex)
{
agent.add('trouble getting the list please try again later')
}
}
agent.context.set({
name: 'categorynames',
lifespan: 5,
parameters: catarray, // if i omit this line, the reponse is the fultillment response with categories names, if i keep this line the reponse is fetching from default static console one.
})
return agent.add('\n'+categories.toString())
})
function selectedCategory(agent)
{
//agent.add('category items should be fetched and displayed here');
var cat = agent.parameters.category
const categories = agent.context.get('categorynames')
const cat_ob = categories.parameters.cat_parameters
// use the key in the catarray with the parameter cat to call the external API
agent.add('you have selected '+ cat );
}
}