在Actions-on-Google Node.js v2中如何程序化构建列表?
在Actions-on-Google Node.js v2中动态构建列表的方法
我明白你在Actions-on-Google Node.js v2里动态构建列表的困惑——毕竟v1的写法在v2里有不少变化,尤其是动态生成内容这块。别担心,我来给你捋清楚怎么实现:
首先,v2里不再用v1那种链式的buildList()和addItem()方法,而是通过实例化List和ListItem类来构建内容。具体步骤如下:
导入必要的类
从actions-on-google库中引入构建列表所需的两个核心类:const { List, ListItem } = require('actions-on-google');初始化列表实例
先创建一个List对象,设置列表的标题:const listTitle = "Please select one option:"; const dynamicList = new List({ title: listTitle });动态添加列表项
遍历你的resp_text数组,逐个创建ListItem实例并添加到列表中。这里要注意每个列表项需要唯一的key,方便后续处理用户的选择:// 假设resp_text是你的动态数据数组,可根据实际结构调整 for (let r = 0; r < resp_text.length; r++) { // 针对不同数据格式适配:如果是字符串直接当标题,是对象则取对应字段 const listItem = new ListItem({ title: resp_text[r].title || resp_text[r], description: resp_text[r].description || '', // 可选的描述文本 key: `option_${r}` // 唯一标识,后续处理选择时会用到 }); dynamicList.add(listItem); }发起问询
最后用conv.ask()把构建好的列表发送给用户:conv.ask(dynamicList);
小提示
- 如果你的
resp_text只是纯字符串数组,那代码可以更简洁,直接把字符串赋值给title即可。 key是必须且唯一的,它是你后续识别用户选择哪一项的关键,所以尽量用有意义的命名或者索引来生成。
内容的提问来源于stack exchange,提问作者Mario Menti
相关产品推荐
相关产品推荐

