我正在根据v2测试新代码。链接:Build Your First App with Dialogflow 代码:
'use strict';
const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');
const app = dialogflow({debug: true});
app.intent('Default Welcome Intent', conv => {
console.log("-----welcome intent-----");
conv.ask('Welcome');
});
exports.testMain = functions.https.onRequest(app);
但是当我模拟它时,它会显示:
MalformedResponse
'final_response' must be set.
我该怎么办? 虽然已启用Fulfillment,但请求未达到该功能。
---------修订------------
现在,当我尝试将该功能部署到firebase时,我收到此错误:
Function load error: Code in file index.js can't be loaded
Is there a syntax error in your code?
Detailed stack trace: TypeError: dialogflow is not a funct
at Object.<anonymous> (/user_code/index.js:6:13)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at getUserFunction (/var/tmp/worker/worker.js:388:24)
at loadUserCode (/var/tmp/worker/worker.js:444:18)
我无法理解???
这是我的 package.json:
{
"name": "some name",
"description": "some desc",
"version": "0.0.1",
"author": "Google Inc.",
"engines": {
"node": "~4.2"
},
"dependencies": {
"actions-on-google": "^1.0.0",
"firebase-admin": "^5.11.0",
"firebase-functions": "^1.0.0",
"dialogflow": "^0.3.0",
"request": "^2.85.0",
"uuid": "^3.0.1"
}
}
------更新2 ------ 我已将节点更改为:
"engines": {
"node": "~6.0"
还是同样的问题
-----更新3 --------
部署完成,但是当请求转到它时,它会显示:
答案 0 :(得分:1)
确认您正在使用的google动作库版本。您的"actions-on-google": "^1.0.0"
依赖项指定库的1.x版本,但其余的用法是通过2.0.0语法。该错误表明没有dialogflow
对象,该库也在库的版本2中提供,但不是版本1.
要使用2.0.0及更高版本,您需要将package.json中的行更改为
"actions-on-google": "^2.0.0"
然后运行
npm update
答案 1 :(得分:0)
确保在Dialogflow信息中心中启用了fulfillment
,并且v2
的API 已开启?同时检查您在履行中使用的意图名称是否与Dialogflow中的名称相匹配。
您的代码对我来说很好。它可能是一个配置问题。
答案 2 :(得分:0)
检查您正在使用的节点版本。如果您使用 private onRequestA = withClient(client => client.getResponseA());
,则需要至少使用节点6时,package.json建议您使用节点4。
由于Firebase云功能也是节点6,因此您也应该切换到本地开发。 (对于LTS,节点本身的版本为8,并且正在使用版本9,因此您当然应该考虑更新。)
答案 3 :(得分:0)
尝试将conv.ask('Welcome')
更改为conv.close('Welcome');
还会删除console.log("-----welcome intent-----");
行仅用于测试
答案 4 :(得分:0)
更改了package.json:
"engines": {
"node": "~6.11.1"
},
"dependencies": {
"actions-on-google": "^2.0.0",
"firebase-admin": "^5.11.0",
"firebase-functions": "^1.0.0",
"dialogflow": "^0.3.0",
"request": "^2.85.0",
"uuid": "^3.0.1"
}
这有效