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

如何在Node.js Webhook中获取Google Actions请求的项目ID或调用URL?

如何在Google Actions SDK的Node.js Webhook中区分不同Action

我来帮你解决这个问题,其实有两种可靠的方式来实现你的需求:

1. 获取Webhook调用的URL路径

因为你的Cloud Function是基于Express的functions.https.onRequest,所以可以直接捕获请求的URL路径,再把这个信息传递给Actions SDK的处理逻辑。

举个具体的代码示例:

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

// 初始化Actions SDK实例
const app = actionssdk({
  verification: 'nodejs-cloud-test-project-1234'
});

// 处理主Intent,根据路径返回不同响应
app.intent('actions.intent.MAIN', (conv) => {
  const actionPath = conv.data.actionPath;
  if (actionPath === '/action1') {
    conv.ask('这是Action 1的响应');
  } else if (actionPath === '/action2') {
    conv.ask('这是Action 2的响应');
  } else {
    conv.ask('未知的Action请求');
  }
});

// 封装请求处理函数,先捕获路径再传给Actions SDK
exports.funcname = functions.https.onRequest((req, res) => {
  // 获取当前请求的路径(比如"/action1")
  const requestPath = req.path;
  
  // 添加中间件,把路径注入到conv的data中
  app.use((conv, next) => {
    conv.data.actionPath = requestPath;
    next();
  });
  
  // 交给Actions SDK处理请求
  app(req, res);
});

这样配置后,当不同的Action调用不同路径的Webhook时,你就能在Intent处理逻辑里拿到对应的路径,从而返回自定义响应。

2. 直接获取Actions项目ID(更推荐)

其实你不需要依赖URL路径,Actions SDK的conv对象已经内置了发起请求的Actions项目ID,你可以直接通过conv.projectId获取到这个值,这是更可靠的方式——因为项目ID是Google Actions请求中自带的,而且经过了你配置的verification验证,不会被伪造。

代码示例:

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

const app = actionssdk({
  verification: 'nodejs-cloud-test-project-1234'
});

app.intent('actions.intent.MAIN', (conv) => {
  const projectId = conv.projectId;
  
  // 根据不同的项目ID返回不同响应
  switch(projectId) {
    case 'nodejs-cloud-test-project-1234':
      conv.ask('来自项目A的请求');
      break;
    case 'my-second-action-project-5678':
      conv.ask('来自项目B的请求');
      break;
    default:
      conv.ask('未知项目的请求');
  }
});

exports.funcname = functions.https.onRequest(app);

这种方式不需要修改URL路径,同一个Webhook URL就能处理多个Actions项目的请求,只需要根据项目ID区分即可,维护起来更简单。

小提示

  • 如果你选择用URL路径区分,记得在Google Actions控制台的Fulfilment设置里,给每个Action配置对应的完整URL(比如https://your-cloud-function-url/action1)。
  • 开启verification后,conv.projectId是完全可信的,不用担心被篡改,这比依赖URL路径更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:11:05