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无需修改,保持现有依赖版本即可
重新部署与测试步骤
- 重新部署Firebase函数:
firebase deploy --only functions
- 更新Action配置:
gactions update --action_package action.json --project samplejs6-id
- 重新启动测试:
gactions test --action_package action.json --project samplejs6-id
完成以上步骤后,再触发"Talk to Dairy team"就能正常响应,后续文本输入也能正确触发TEXT意图,不会再返回通用错误。
内容的提问来源于stack exchange,提问作者Thirumani
相关产品推荐
相关产品推荐

