對話動作已於 2023 年 6 月 13 日淘汰。詳情請參閱「
對話動作已淘汰」。
執行要求 (Dialogflow)
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
執行要求邏輯可使用在每個要求中收到的語言代碼字串,
為使用者提供回覆本指南將說明如何使用
在 Cloud 函式中傳回本地化程式庫
本地化回應
本地化程式庫
以下列舉幾個實用的程式庫供您參考
生成特定語言代碼的自訂回應:
建立本地化回應
本節將說明如何建立本地化字串資源檔案,
包含本地化字串,以及如何在 Cloud 中使用這些資源檔案
Firebase 執行要求的函式。
如何建立本地化回應:
- 在
package.json
和 index.js
檔案所在的目錄中,建立
本地化字串檔案的 locales
目錄。以下影片將說明
<project-dir>/functions/locales
格式的檔案。
建立資源檔案,其中包含各個語言代碼的本地化字串
以及您要提供支援的內容舉例來說,如要支援 en-US
、en-GB
、
和 de-DE
語言代碼含有本地化的歡迎和日期訊息,這些檔案
看起來會像這樣:
<project-dir>/functions/locales/en-US.json
{
"WELCOME_BASIC": "Hello, welcome!",
"DATE": "The date is %s"
}
<project-dir>/functions/locales/en-GB.json
{
"WELCOME_BASIC": "Hello, welcome!",
"DATE": "The date is %s"
}
<project-dir>/functions/locales/de-DE.json
{
"WELCOME_BASIC": "Hallo und willkommen!",
"DATE": "Das Datum ist %s"
}
在 package.json
檔案中,宣告 i18n 節點和 PM 程式庫為
依附元件:
{
...
"dependencies": {
"actions-on-google": "^2.7.0",
"firebase-admin": "^7.2.1",
"firebase-functions": "^2.2.1",
"i18n": "^0.8.3",
"moment": "^2.22.1"
}
}
在 index.js
檔案中,宣告 i18n 節點和時刻的依附元件
程式庫:
const i18n = require('i18n');
const moment = require('moment');
在 index.js
檔案中,使用支援的語言代碼設定 i18n-node:
i18n.configure({
locales: ['en-US', 'en-GB', 'de-DE'],
directory: __dirname + '/locales',
defaultLocale: 'en-US'
});
使用用戶端程式庫中的 conv.user.locale
設定程式庫的語言代碼
資源。
app.middleware((conv) => {
i18n.setLocale(conv.user.locale);
moment.locale(conv.user.locale);
});
如要傳回本地化回應,請使用本地化字串呼叫 ask()
i18n 回傳這個程式碼片段也包含使用時刻的函式
傳回本地化日期:
app.intent('Default Welcome Intent', (conv) => { // must not be async for i18n
conv.ask(i18n.__('WELCOME_BASIC'));
});
app.intent('date', (conv) => { // must not be async for i18n
conv.ask(i18n.__('DATE', moment().format('LL')));
});
以下是完整的 index.js 檔案範例:
'use strict';
const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');
const i18n = require('i18n');
const moment = require('moment');
i18n.configure({
locales: ['en-US', 'en-GB', 'de-DE'],
directory: __dirname + '/locales',
defaultLocale: 'en-US'
});
const app = dialogflow({debug: true});
app.middleware((conv) => {
i18n.setLocale(conv.user.locale);
moment.locale(conv.user.locale);
});
app.intent('Default Welcome Intent', (conv) => { // must not be async for i18n
conv.ask(i18n.__('WELCOME_BASIC'));
});
app.intent('date', (conv) => { // must not be async for i18n
conv.ask(i18n.__('DATE', moment().format('LL')));
});
exports.demoAction = functions.https.onRequest(app);
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-09-04 (世界標準時間)。
[null,null,["上次更新時間:2025-09-04 (世界標準時間)。"],[[["\u003cp\u003eUtilize the locale string from user requests to tailor responses for different regions.\u003c/p\u003e\n"],["\u003cp\u003eLeverage third-party libraries like i18n-node and moment.js to manage localized strings and date/time formats.\u003c/p\u003e\n"],["\u003cp\u003eCreate localized string resource files in JSON format for each supported locale.\u003c/p\u003e\n"],["\u003cp\u003eConfigure i18n-node and set the locale within your Cloud Function for Firebase using the user's locale.\u003c/p\u003e\n"],["\u003cp\u003eReturn localized responses by calling \u003ccode\u003eask()\u003c/code\u003e with strings generated from your resource files and libraries.\u003c/p\u003e\n"]]],[],null,["# Fulfillment (Dialogflow)\n\nYour fulfillment logic can use the locale string it receives in every request to\ncater responses to users. This guide shows you how to use some third-party\nlocalization libraries within a Cloud Function for Firebase to return\nlocalized responses.\n\nLocalization libraries\n----------------------\n\nHere are some helpful libraries to consider to help you\ngenerate customized responses for specific locales:\n\n- General purpose: [I18n-node](//github.com/mashpie/i18n-node) (our example code snippets use this library)\n- General purpose: [format.js](//formatjs.io/)\n- Timezone/time localization: [moment.js](//momentjs.com/) (our example code snippets use this library)\n- Money/currency: [numeral.js](//numeraljs.com/)\n\nCreate localized responses\n--------------------------\n\nThis section shows you how to create localized string resource files that\ncontain localized strings and how to use these resource files in your Cloud\nFunction for Firebase fulfillment.\n\nTo create localized responses:\n\n1. In the same directory as your `package.json` and `index.js` files, create a `locales` directory for your localized string files. We'll refer to this directory as `\u003cproject-dir\u003e/functions/locales`.\n2. Create a resource file that contains localized strings for every locale that\n you want to support. For example, if you want to support `en-US`, `en-GB`,\n and `de-DE` locales with localized welcome and date messages, those files\n might look like this:\n\n **`\u003cproject-dir\u003e/functions/locales/en-US.json`** \n\n {\n \"WELCOME_BASIC\": \"Hello, welcome!\",\n \"DATE\": \"The date is %s\"\n }\n\n **`\u003cproject-dir\u003e/functions/locales/en-GB.json`** \n\n {\n \"WELCOME_BASIC\": \"Hello, welcome!\",\n \"DATE\": \"The date is %s\"\n }\n\n **`\u003cproject-dir\u003e/functions/locales/de-DE.json`** \n\n {\n \"WELCOME_BASIC\": \"Hallo und willkommen!\",\n \"DATE\": \"Das Datum ist %s\"\n }\n\n3. In the `package.json` file, declare the i18n-node and moment libraries as\n dependencies:\n\n {\n ...\n \"dependencies\": {\n \"actions-on-google\": \"^2.7.0\",\n \"firebase-admin\": \"^7.2.1\",\n \"firebase-functions\": \"^2.2.1\",\n \"i18n\": \"^0.8.3\",\n \"moment\": \"^2.22.1\"\n }\n }\n\n4. In the `index.js` file, declare the dependencies for the i18n-node and moment\n libraries:\n\n ```gdscript\n const i18n = require('i18n');\n const moment = require('moment');\n ```\n\n \u003cbr /\u003e\n\n5. In the `index.js` file, configure the i18n-node with your supported locales:\n\n ```css+lasso\n i18n.configure({\n locales: ['en-US', 'en-GB', 'de-DE'],\n directory: __dirname + '/locales',\n defaultLocale: 'en-US'\n });\n ```\n\n \u003cbr /\u003e\n\n6. Set the locale for the libraries using `conv.user.locale` from the client library\n property.\n\n ```text\n app.middleware((conv) =\u003e {\n i18n.setLocale(conv.user.locale);\n moment.locale(conv.user.locale);\n });\n ```\n\n \u003cbr /\u003e\n\n7. To return a localized response, call `ask()` with a localized string\n returned by i18n. This snippet also contains a function that uses moment\n to return a localized date:\n\n ```scdoc\n app.intent('Default Welcome Intent', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('WELCOME_BASIC'));\n });\n\n app.intent('date', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('DATE', moment().format('LL')));\n });\n ```\n\n \u003cbr /\u003e\n\nHere's a complete index.js file as an example: \n\n```gdscript\n'use strict';\nconst {dialogflow} = require('actions-on-google');\nconst functions = require('firebase-functions');\nconst i18n = require('i18n');\nconst moment = require('moment');\n\ni18n.configure({\n locales: ['en-US', 'en-GB', 'de-DE'],\n directory: __dirname + '/locales',\n defaultLocale: 'en-US'\n});\n\nconst app = dialogflow({debug: true});\n\napp.middleware((conv) =\u003e {\n i18n.setLocale(conv.user.locale);\n moment.locale(conv.user.locale);\n});\n\napp.intent('Default Welcome Intent', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('WELCOME_BASIC'));\n});\n\napp.intent('date', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('DATE', moment().format('LL')));\n});\n\nexports.demoAction = functions.https.onRequest(app);\n```\n\n\u003cbr /\u003e"]]