因此,我试图通过Dialogflow建立有关维生素的对话。但是,我不断收到相同的错误,因此,AI也给出了相同的响应。所以我们想要发生的是 (用户)-给我更多有关维生素的信息 (AI)-好的。哪种维生素 (用户)-*这里我们指定使用哪种维生素,例如-*维生素A。 (AI)-然后AI给我们指定的维生素A反应
请帮助
这是我们实现的代码
const functions = require('firebase-functions');
const {dialogflow} = require('actions-on-google')
const VITAMIN_INTENT = 'Vitamin'
const VITAMINS_ENTITY = 'Vitamins'
const app = dialogflow()
app.intent(VITAMIN_INTENT, (conv) => {
const vitamin_type = conv.parameters[VITAMINS_ENTITY].toLowerCase();
if (vitamin_type == 'Vitamin A') {
conv.ask("Sources: carrots, sweet potato, green leafy vegetable, squash")
} else if (vitamin_type == 'Vitamin B') {
conv.ask("Sources: Animal products (such as fish, poultry, meat, eggs, or dairy); Also found in fortified breakfast cereals and enriched soy or rice milk.")
} else if (vitamin_type == 'Vitamin B1') {
conv.ask("Sources: Sunflower seeds, asparagus, lettuce, mushrooms, black beans, navy beans, lentils, spinach, peas, pinto beans, lima beans, eggplant, Brussels sprouts, tomatoes, tuna, whole wheat, soybeans.")
} else if (vitamin_type == 'Vitamin B2') {
conv.ask("Sources:B2 ")
}
})
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app)
答案 0 :(得分:1)
错误500通常表明您的程序由于某种原因而崩溃,尽管不查看日志,也很难确切说明原因。
我的猜测是,在该部分
const vitamin_type = conv.parameters[VITAMINS_ENTITY].toLowerCase();
您没有名为“维生素”的参数。参数名称区分大小写,并且通常都是小写字母。因此conv.parameters[VITAMINS_ENTITY]
的值为undefined
,而undefined
没有函数.toLowerCase()
。
此外,您的代码中至少还有一个逻辑问题。线
const vitamin_type = conv.parameters[VITAMINS_ENTITY].toLowerCase();
可确保字符串vitamin_type
为小写。因此,诸如“维生素a”之类的值。
但是,当您测试这些值时,您将使用诸如
之类的比较if (vitamin_type == 'Vitamin A') {
将其与“维生素A”之类的值进行比较。因此,这些值将永远不匹配。
由于所有值都不匹配,因此您将退出函数而无需调用conv.ask()
,这将产生错误。 (虽然不是错误500。)