Thực hiện đơn hàng (luồng hộp thoại)

Logic thực hiện của bạn có thể sử dụng chuỗi ngôn ngữ mà logic đó nhận được trong mỗi yêu cầu để điều chỉnh phản hồi cho người dùng. Hướng dẫn này chỉ cho bạn cách sử dụng một số ứng dụng bên thứ ba các thư viện bản địa hoá trong Cloud Function để Firebase trả về các câu trả lời được bản địa hoá.

Thư viện bản địa hoá

Sau đây là một số thư viện hữu ích mà bạn có thể cân nhắc sử dụng để hỗ trợ bạn tạo phản hồi tuỳ chỉnh cho các ngôn ngữ cụ thể:

  • Mục đích chung: I18n-node ( các đoạn mã mẫu sử dụng thư viện này)
  • Mục đích chung: format.js
  • Múi giờ/bản địa hoá thời gian: moment.js (của chúng tôi các đoạn mã mẫu sử dụng thư viện này)
  • Tiền/đơn vị tiền tệ: numeral.js

Tạo câu trả lời phù hợp với địa phương

Phần này cho bạn biết cách tạo tệp tài nguyên chuỗi được bản địa hoá chứa các chuỗi đã được bản địa hoá và cách sử dụng các tệp tài nguyên này trong Đám mây của bạn Hàm cho phương thức thực hiện Firebase.

Cách tạo câu trả lời phù hợp với bản địa hoá:

  1. Trong cùng thư mục với các tệp package.jsonindex.js, hãy tạo một thư mục locales cho các tệp chuỗi đã bản địa hoá. Chúng tôi sẽ đề cập đến điều này thư mục dưới dạng <project-dir>/functions/locales.
  2. Tạo một tệp tài nguyên chứa các chuỗi đã bản địa hoá cho mọi ngôn ngữ mà bạn muốn hỗ trợ. Ví dụ: nếu bạn muốn hỗ trợ en-US, en-GB, và de-DE ngôn ngữ với thư chào mừng và thư ngày đã bản địa hoá, những tệp đó có thể có dạng như sau:

    <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"
    }
    
  3. Trong tệp package.json, hãy khai báo thư viện nút i18n và thư viện khoảnh khắc là dependencies:

    {
     ...
     "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"
     }
    }
    
  4. Trong tệp index.js, hãy khai báo các phần phụ thuộc cho nút và khoảnh khắc i18n thư viện:

    const i18n = require('i18n');
    const moment = require('moment');

  5. Trong tệp index.js, hãy định cấu hình nút i18n bằng các ngôn ngữ được hỗ trợ của bạn:

    i18n.configure({
      locales: ['en-US', 'en-GB', 'de-DE'],
      directory: __dirname + '/locales',
      defaultLocale: 'en-US'
    });

  6. Đặt ngôn ngữ cho thư viện bằng cách sử dụng conv.user.locale trong thư viện ứng dụng thuộc tính này.

    app.middleware((conv) => {
      i18n.setLocale(conv.user.locale);
      moment.locale(conv.user.locale);
    });

  7. Để trả về phản hồi đã bản địa hoá, hãy gọi ask() bằng một chuỗi đã bản địa hoá do i18n trả về. Đoạn mã này cũng chứa một hàm sử dụng mô-đun để trả về một ngày đã bản địa hoá:

    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')));
    });

Sau đây là ví dụ về một tệp index.js hoàn chỉnh:

'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);