İstek karşılama (Dialogflow)

İstek karşılama mantığınız, aşağıdakileri yapmak için her istekte aldığı yerel ayar dizesini kullanabilir. kullanıcılara hitap etmesine yardımcı olur. Bu kılavuzda, bazı üçüncü tarafları nasıl kullanabileceğiniz gösterilmektedir Firebase için Cloud Functions işlevi içindeki yerelleştirme kitaplıkları yerelleştirilmiş yanıtlar.

Yerelleştirme kitaplıkları

Size yardımcı olabilecek bazı kütüphaneleri aşağıda bulabilirsiniz Belirli yerel ayarlar için özelleştirilmiş yanıtlar oluşturun:

  • Genel amaçlı: I18n-node ( örnek kod snippet'leri bu kitaplığı kullanır)
  • Genel amaçlı: format.js
  • Saat dilimi/saat yerelleştirme: moment.js ( örnek kod snippet'leri bu kitaplığı kullanır)
  • Para/para birimi: numeral.js

Yerelleştirilmiş yanıtlar oluşturma

Bu bölümde, Yerelleştirilmiş dizeler içermesi ve bu kaynak dosyalarının Cloud uygulamanızda nasıl kullanılacağını öğrenme Firebase karşılama işlevi.

Yerelleştirilmiş yanıtlar oluşturmak için:

  1. package.json ve index.js dosyalarınızla aynı dizinde oluşturun yerelleştirilmiş dize dosyalarınız için bir locales dizini. Bundan sonraki adımlarda <project-dir>/functions/locales olarak dizin.
  2. Hedeflediğiniz her yerel ayar için yerelleştirilmiş dizeler içeren bir istediğinize karar verin. Örneğin en-US, en-GB ve ve yerelleştirilmiş karşılama ve tarih mesajları içeren de-DE yerel ayar, bu dosyalar aşağıdaki gibi görünebilir:

    <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 dosyasında i18n-node ve an kitaplıklarını ve bağımlılıkları vardır:

    {
     ...
     "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 dosyasında i18n-node ve an için bağımlılıkları tanımlayın. kitaplıklar:

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

  5. index.js dosyasında, i18n-node'u desteklenen yerel ayarlarla yapılandırın:

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

  6. İstemci kitaplığından conv.user.locale kullanarak kitaplıkların yerel ayarını belirleyin

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

  7. Yerelleştirilmiş bir yanıt döndürmek için ask() öğesini yerelleştirilmiş bir dizeyle çağırın i18n tarafından döndürüldü. Bu snippet, an kullanan bir işlev de değerini döndürür:

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

Örnek olarak tam bir index.js dosyası aşağıdaki gibidir:

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