Dialogflow/Google 操作执行(使用 Google App Engine 和存储)返回错误 4:DEADLINE EXCEEDED,尽管很简单
Dialogflow/Google Actions fulfillment (using Google App Engine & Storage) returning error 4: DEADLINE EXCEEDED, despite being simple
假设我想创建一个简单的操作,为用户提供来自代码列表(.csv 文件中的字符串)的随机代码。我目前设置的是在 Google App Engine 上实现 运行 的 Dialogflow 代理,我使用 Google 存储存储了 'codes.csv' 文件。
我成功读取文件的代码(我让它记录第一个代码作为检查),但是,当返回对 Dialogflow 的响应时,我收到“Webhook 调用失败。错误:DEADLINE_EXCEEDED."
我知道对 Dialogflow/Google 操作的响应不会超过 10 秒才能完成,但根据我从日志中收集到的信息,它已在 3 秒内读取了相对较小的 codes.csv秒。我不明白是什么原因造成的...
Google App Engine 上的代码 运行:
const express = require('express');
const bodyParser = require('body-parser');
const csv = require('csv-parser');
const { WebhookClient } = require('dialogflow-fulfillment');
const {dialogflow} = require('actions-on-google');
const app = dialogflow({debug: true});
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('<bucket name>');
const file = bucket.file('codes.csv');
let codes = [];
file.createReadStream()
.pipe(csv())
.on('error', function(err) {
console.log('woops');
})
.on('data', function(response) {
codes.push(response);
})
.on('end', function() {
console.log('read csv');
console.log(codes[0]['code']); // checks whether 'codes' actually contains the codes
});
function randomCode() {
return codes[Math.floor(Math.random()*codes.length)]['code'];
}
app.intent('Default Welcome Intent', (conv) => {
console.log(codes[1]['code']);
conv.ask('Hey, here is your random code: ' + randomCode());
console.log(codes[2]['code']);
}); // neither of the two console.log are reached here
const expressApp = express().use(bodyParser.json());
expressApp.post('/', app);
expressApp.listen(4444);
让我的应用监听端口 4444
,但 App Engine 需要监听端口 8080
假设我想创建一个简单的操作,为用户提供来自代码列表(.csv 文件中的字符串)的随机代码。我目前设置的是在 Google App Engine 上实现 运行 的 Dialogflow 代理,我使用 Google 存储存储了 'codes.csv' 文件。
我成功读取文件的代码(我让它记录第一个代码作为检查),但是,当返回对 Dialogflow 的响应时,我收到“Webhook 调用失败。错误:DEADLINE_EXCEEDED."
我知道对 Dialogflow/Google 操作的响应不会超过 10 秒才能完成,但根据我从日志中收集到的信息,它已在 3 秒内读取了相对较小的 codes.csv秒。我不明白是什么原因造成的...
Google App Engine 上的代码 运行:
const express = require('express');
const bodyParser = require('body-parser');
const csv = require('csv-parser');
const { WebhookClient } = require('dialogflow-fulfillment');
const {dialogflow} = require('actions-on-google');
const app = dialogflow({debug: true});
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('<bucket name>');
const file = bucket.file('codes.csv');
let codes = [];
file.createReadStream()
.pipe(csv())
.on('error', function(err) {
console.log('woops');
})
.on('data', function(response) {
codes.push(response);
})
.on('end', function() {
console.log('read csv');
console.log(codes[0]['code']); // checks whether 'codes' actually contains the codes
});
function randomCode() {
return codes[Math.floor(Math.random()*codes.length)]['code'];
}
app.intent('Default Welcome Intent', (conv) => {
console.log(codes[1]['code']);
conv.ask('Hey, here is your random code: ' + randomCode());
console.log(codes[2]['code']);
}); // neither of the two console.log are reached here
const expressApp = express().use(bodyParser.json());
expressApp.post('/', app);
expressApp.listen(4444);
让我的应用监听端口 4444
,但 App Engine 需要监听端口 8080