การดำเนินการตามคำสั่งซื้อ (Dialogflow)
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ตรรกะการดำเนินการตามคำสั่งซื้อจะใช้สตริงภาษาที่ได้รับในทุกคำขอเพื่อ
ตอบสนองผู้ใช้ คู่มือนี้จะแสดงวิธีใช้บริการของบุคคลที่สาม
ไลบรารีการแปลภายใน Cloud Function สำหรับ Firebase เพื่อแสดงผล
คำตอบที่แปลแล้ว
ไลบรารีการแปล
ต่อไปนี้คือคลังที่มีประโยชน์บางส่วนซึ่งคุณควรพิจารณาเพื่อช่วย
สร้างคำตอบที่ปรับแต่งให้เหมาะกับภาษา:
- จุดประสงค์ทั่วไป: โหนด I18n (ของเรา
ตัวอย่างข้อมูลโค้ดใช้ไลบรารีนี้)
- จุดประสงค์ทั่วไป: format.js
- เขตเวลา/การแปลเวลา: moment.js (ของเรา
ตัวอย่างข้อมูลโค้ดใช้ไลบรารีนี้)
- เงิน/สกุลเงิน: numeral.js
สร้างคำตอบที่แปลแล้ว
ส่วนนี้จะแสดงวิธีสร้างไฟล์แหล่งข้อมูลสตริงที่แปลแล้วที่
มีสตริงที่แปลแล้วและวิธีใช้ไฟล์ทรัพยากรเหล่านี้ในระบบคลาวด์
ฟังก์ชันสำหรับ Fulfillment ของ 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 และโมเมนต์เป็น
ทรัพยากร Dependency:
{
...
"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
ให้ประกาศทรัพยากร Dependency สำหรับโหนด i18n และโมเมนต์
ไลบรารี:
const i18n = require('i18n');
const moment = require('moment');
ในไฟล์ index.js
ให้กำหนดค่าโหนด i18n ด้วยภาษาที่รองรับดังนี้
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);
เนื้อหาของหน้าเว็บนี้ได้รับอนุญาตภายใต้ใบอนุญาตที่ต้องระบุที่มาของครีเอทีฟคอมมอนส์ 4.0 และตัวอย่างโค้ดได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 เว้นแต่จะระบุไว้เป็นอย่างอื่น โปรดดูรายละเอียดที่นโยบายเว็บไซต์ Google Developers Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-09-04 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 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,["Your 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\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\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"]]