You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Action SDK运行异常求助:触发Dairy team操作返回错误

排查Actions on Google + Firebase Functions 运行错误问题

我帮你排查了代码里的几个关键问题,这些正是导致触发后返回通用错误的核心原因:

核心问题分析

1. 重复声明app变量且混用v1/v2 API

你同时使用了Actions on Google v2的actionssdk和v1的ActionsSdkApp,还在同一个作用域重复声明了app变量,这会直接导致变量覆盖、API调用逻辑混乱,是最主要的错误来源。v2版本里应该统一使用actionssdk创建的实例,不需要再用ActionsSdkApp。

2. handleTextIntent函数参数缺失

handleTextIntent函数没有接收app参数,但函数内部却尝试调用app对象,运行时会抛出ReferenceError,直接中断请求处理。

3. 重复发送响应

你先调用了app.ask("This sample application..."),之后又调用app.handleRequest(actionMap),这会导致尝试发送两次响应,违反对话流程的规则,触发平台的错误拦截。


修复后的完整代码

修复后的index.js

'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const { actionssdk } = require('actions-on-google');

// 初始化Firebase Admin(必须步骤)
admin.initializeApp();

// 创建v2版本的Actions应用实例
const app = actionssdk({ debug: true });

// 处理MAIN意图(启动应用时触发)
app.intent('actions.intent.MAIN', (conv) => {
  console.log("Inside Main Intent");
  conv.ask(`Main Intent: ${conv.raw.input}`);
});

// 处理TEXT意图(用户输入文本时触发)
app.intent('actions.intent.TEXT', (conv) => {
  console.log("Inside Text Intent");
  conv.tell("First Text Intent");
});

// 导出Cloud Function
exports.dairyProduct = functions.https.onRequest(app);

修复后的action.json(补充TEXT意图配置)

需要在对话配置里添加TEXT意图,确保用户后续输入能被正确路由:

{
  "actions": [
    {
      "description": "Default Welcome Intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "testapp"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "Talk to Dairy team"
          ]
        }
      }
    }
  ],
  "conversations": {
    "testapp": {
      "name": "testapp",
      "url": "https://us-central1-samplejs6-id.cloudfunctions.net/dairyProduct",
      "fulfillmentApiVersion": 2,
      "inDialogIntents": [
        {
          "name": "actions.intent.CANCEL"
        },
        {
          "name": "actions.intent.TEXT"
        }
      ]
    }
  },
  "locale": "en"
}

package.json无需修改,保持现有依赖版本即可


重新部署与测试步骤

  1. 重新部署Firebase函数:
firebase deploy --only functions
  1. 更新Action配置:
gactions update --action_package action.json --project samplejs6-id
  1. 重新启动测试:
gactions test --action_package action.json --project samplejs6-id

完成以上步骤后,再触发"Talk to Dairy team"就能正常响应,后续文本输入也能正确触发TEXT意图,不会再返回通用错误。

内容的提问来源于stack exchange,提问作者Thirumani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:34