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

如何在Google Actions、DialogflowApp与Firebase Functions中处理多语言及检测请求语言

解决方案:直接从Dialogflow请求体提取语言代码

我来给你梳理下最直接的解决思路——其实Dialogflow在调用你的Firebase函数(Webhook)时,已经把当前用户使用的语言信息打包在请求里了,完全不需要依赖actions-on-google库的特定方法,直接从请求payload里提取就好!

  • 步骤1:获取语言代码
    在Firebase函数的请求对象中,req.body.queryResult.languageCode就是你要的语言标识,格式和你在Dialogflow代理里配置的完全一致(比如en、zh-CN、es等)。

  • 步骤2:根据语言返回对应响应
    拿到语言代码后,就可以通过条件判断或switch分支返回对应语言的内容,示例代码如下:

const functions = require('firebase-functions');

exports.yourWebhookName = functions.https.onRequest((req, res) => {
  // 提取当前请求的语言代码
  const lang = req.body.queryResult.languageCode;
  
  // 根据语言生成对应响应文本
  let fulfillmentText;
  if (lang === 'en') {
    fulfillmentText = 'Welcome! How can I assist you today?';
  } else if (lang === 'zh-CN') {
    fulfillmentText = '欢迎!请问我能帮你做什么?';
  } else if (lang === 'es') {
    fulfillmentText = '¡Bienvenido! ¿En qué puedo ayudarte hoy?';
  } else {
    // 默认 fallback 语言
    fulfillmentText = 'Hello! How can I help you?';
  }
  
  // 返回符合Dialogflow要求的响应格式
  res.json({
    fulfillmentText: fulfillmentText
  });
});
  • 额外补充
    如果你用的是actions-on-google新版本库(v3+),也可以通过对话上下文conv.user.locale获取更详细的语言/地区信息(比如en-US、zh-CN),但直接读取请求体的方式更通用,不依赖库版本,也更直观。

之前你在actions-on-google-nodejs仓库找不到类似getLang的方法,是因为旧版本的DialogflowApp确实没封装这个快捷方法,但底层的语言信息一直都在请求payload里,直接提取反而更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:20:31