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