تحقق (Dialogflow)

منطق تحقق شما می تواند از رشته محلی که در هر درخواست دریافت می کند برای پاسخگویی به کاربران استفاده کند. این راهنما به شما نشان می دهد که چگونه از برخی کتابخانه های بومی سازی شخص ثالث در یک Cloud Function برای Firebase برای بازگرداندن پاسخ های محلی استفاده کنید.

کتابخانه های محلی سازی

در اینجا چند کتابخانه مفید برای کمک به شما برای ایجاد پاسخ های سفارشی برای مناطق خاص وجود دارد:

  • هدف کلی: I18n-node (نمونه‌های کد ما از این کتابخانه استفاده می‌کنند)
  • هدف کلی: format.js
  • محلی‌سازی منطقه زمانی/زمان: moment.js (نمونه‌های کد ما از این کتابخانه استفاده می‌کنند)
  • پول/ارز: numeral.js

پاسخ های محلی ایجاد کنید

این بخش به شما نشان می‌دهد که چگونه فایل‌های منبع رشته‌ای بومی‌سازی شده‌ای را که حاوی رشته‌های محلی‌شده هستند ایجاد کنید و چگونه از این فایل‌های منبع در Cloud Function برای انجام Firebase استفاده کنید.

برای ایجاد پاسخ های محلی:

  1. در همان دایرکتوری فایل های package.json و index.js خود، یک فهرست locales برای فایل های رشته ای بومی سازی شده خود ایجاد کنید. ما به این فهرست به عنوان <project-dir>/functions/locales اشاره خواهیم کرد.
  2. یک فایل منبع ایجاد کنید که شامل رشته های محلی شده برای هر محلی است که می خواهید پشتیبانی کنید. برای مثال، اگر می‌خواهید 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"
    }
    
  3. در فایل 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"
     }
    }
    
  4. در فایل index.js ، وابستگی ها را برای i18n-node و کتابخانه های لحظه ای اعلام کنید:

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

  5. در فایل index.js ، i18n-node را با مناطق پشتیبانی شده خود پیکربندی کنید:

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

  6. با استفاده از conv.user.locale از ویژگی کتابخانه مشتری، محلی را برای کتابخانه ها تنظیم کنید.

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

  7. برای برگرداندن یک پاسخ محلی، 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);