会話型アクションのサポートは 2023 年 6 月 13 日に終了しました。詳細については、
会話型アクションの廃止をご覧ください。
フルフィルメント(Dialogflow)
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
フルフィルメント ロジックでは、すべてのリクエストから受け取るロケール文字列を使用して、ユーザーへのレスポンスを作成できます。このガイドでは、Cloud Functions for Firebase 内でサードパーティのローカライズ ライブラリを使用して、ローカライズされたレスポンスを返す方法について説明します。
ローカライズ ライブラリ
特定のロケール用にカスタマイズされたレスポンスを生成するのに役立つ主なライブラリを以下に示します。
ローカライズされたレスポンスを作成する
このセクションでは、ローカライズされた文字列を含むローカライズ文字列リソース ファイルを作成する方法と、Cloud Functions for 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-node ライブラリと moment ライブラリを次のように宣言します。
:
{
...
"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-node の依存関係を宣言します。
ライブラリ:
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()
を呼び出します。
返されます。さらにこのスニペットには、ローカライズされた日付を返すために moment を使用する関数も含まれています。
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);
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-09-04 UTC。
[null,null,["最終更新日 2025-09-04 UTC。"],[[["\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"]]