ApiAiApp 不是构造函数
ApiAiApp is not a constructor
我正在使用 api.ai 在 node.js 客户端库下面进行测试,我从本页给出的示例中复制了准确的代码。
https://developers.google.com/actions/reference/nodejs/ApiAiApp
但每次我得到
TypeError: ApiAiApp is not a constructor
at /app/index.js:9:15
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
这是我的 index.js 文件:
var express = require('express');
var request = require('request');
var exps = express();
const ApiAiApp = require('actions-on-google').ApiAiApp;
exps.post('/hook', function(request, response) {
const app = new ApiAiApp({request, response});
response.status(200)
response.json({
speech: "Hello from hook",
displayText: "Hello from hook",
source: 'HOOK'
})
console.log("RESPONSE :::: \n");
console.log(response);
});
exps.listen((process.env.PORT || 8000), function() {
console.log("App up and running, listening.")
})
Package.json
{
"name": "googleActionNode",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "Sukhvinder Singh",
"dependencies": {
"actions-on-google": "1.2.0",
"body-parser": "^1.15.0",
"express": "^4.13.4"
},
"devDependencies": {},
"repository": {
"type": "git",
"url": "git+https://github.com/sukhvinder1/googleActionNode.git"
},
"license": "ISC",
"bugs": {
"url": "https://github.com/sukhvinder1/googleActionNode/issues"
},
"homepage": "https://github.com/sukhvinder1/googleActionNode#readme"
}
如果我在下面的代码中输入,一切正常。
const app = new ApiAiApp({request: request, response: response});
有人可以帮我吗?
那个文件中有很多东西让我感到困惑,我想知道它是否也让我感到困惑node.js。
您不需要为 ActionsSdkApp
和 ApiAiApp
创建定义。我会尝试删除 ActionsSdkApp,看看是否可行。
您不需要调用 status()
或 json()
(对于我认为此版本文件中不存在的 res
对象).
行号不匹配,但我假设还有其他因素可能会混淆问题。
您收到此错误是因为您调用的方法不是您最初使用的版本的 actions-on-google 的一部分。
在 1.0 版本中,您可以这样称呼它:
const Assistant = require('actions-on-google').ApiAiAssistant;
后来的版本改为
const Assistant = require('actions-on-google').ApiAiApp;
更高版本仍然允许使用早期名称,但它已被弃用,您应该切换到新名称和最新的库版本。
顺便说一句,你可能想看看我写的这个例子:https://github.com/greenido/bitcoin-info-action/blob/master/index.js
它显示了我们希望使用 actions-on-google 的方式(例如,使用 Map 将动作连接到意图)。
希望对您有所帮助。
我正在使用 api.ai 在 node.js 客户端库下面进行测试,我从本页给出的示例中复制了准确的代码。
https://developers.google.com/actions/reference/nodejs/ApiAiApp
但每次我得到
TypeError: ApiAiApp is not a constructor
at /app/index.js:9:15
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
这是我的 index.js 文件:
var express = require('express');
var request = require('request');
var exps = express();
const ApiAiApp = require('actions-on-google').ApiAiApp;
exps.post('/hook', function(request, response) {
const app = new ApiAiApp({request, response});
response.status(200)
response.json({
speech: "Hello from hook",
displayText: "Hello from hook",
source: 'HOOK'
})
console.log("RESPONSE :::: \n");
console.log(response);
});
exps.listen((process.env.PORT || 8000), function() {
console.log("App up and running, listening.")
})
Package.json
{
"name": "googleActionNode",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "Sukhvinder Singh",
"dependencies": {
"actions-on-google": "1.2.0",
"body-parser": "^1.15.0",
"express": "^4.13.4"
},
"devDependencies": {},
"repository": {
"type": "git",
"url": "git+https://github.com/sukhvinder1/googleActionNode.git"
},
"license": "ISC",
"bugs": {
"url": "https://github.com/sukhvinder1/googleActionNode/issues"
},
"homepage": "https://github.com/sukhvinder1/googleActionNode#readme"
}
如果我在下面的代码中输入,一切正常。
const app = new ApiAiApp({request: request, response: response});
有人可以帮我吗?
那个文件中有很多东西让我感到困惑,我想知道它是否也让我感到困惑node.js。
您不需要为
ActionsSdkApp
和ApiAiApp
创建定义。我会尝试删除 ActionsSdkApp,看看是否可行。您不需要调用
status()
或json()
(对于我认为此版本文件中不存在的res
对象).行号不匹配,但我假设还有其他因素可能会混淆问题。
您收到此错误是因为您调用的方法不是您最初使用的版本的 actions-on-google 的一部分。
在 1.0 版本中,您可以这样称呼它:
const Assistant = require('actions-on-google').ApiAiAssistant;
后来的版本改为
const Assistant = require('actions-on-google').ApiAiApp;
更高版本仍然允许使用早期名称,但它已被弃用,您应该切换到新名称和最新的库版本。
顺便说一句,你可能想看看我写的这个例子:https://github.com/greenido/bitcoin-info-action/blob/master/index.js 它显示了我们希望使用 actions-on-google 的方式(例如,使用 Map 将动作连接到意图)。
希望对您有所帮助。