Изменить язык дня / месяца в боте DialogFlow - PullRequest
1 голос
/ 06 мая 2019

Я создаю помощника для итальянского ресторана, используя DialogFlow.

Я установил испанский язык, и все, кажется, идет хорошо, но когда я показываю конечную дату бронирования, она отображается на английском языке (пятница и май в случае прилагаемой фотографии).

Возможно ли это изменить?enter image description here

Этот код генерирует указанный выше конкретный ответ на процесс бронирования таблицы:

function createBooking(agent) {
    let guests = agent.parameters.comensales;
    let time = new Date(agent.parameters.time);
    let date = new Date(agent.parameters.date);
    let bookingDate = new Date(date);
    var numeroReserva = Math.random().toString(16).slice(2, 8).toUpperCase();
    bookingDate.setHours(time.getHours());
    bookingDate.setMinutes(time.getMinutes());
    let now = new Date();

    if (guests < 1){
        agent.add('You need to reserve a table for at least one person. Please try again!');
    } else if (bookingDate < now){
        agent.add(`No puedes reservar una fecha pasada. Por favor, inténtalo de nuevo!`);
    } else if (bookingDate.getFullYear() > now.getFullYear()) {
        agent.add(`No puedes hacer una reserva para ${bookingDate.getFullYear()} todavía. Por favor, elige una fecha en ${now.getFullYear()}.`);
    } else {
        let timezone = parseInt(agent.parameters.time.toString().slice(19,22));
        bookingDate.setHours(bookingDate.getHours() + timezone);
        agent.add(`Perfecto. He reservado una mesa para ${guests} el ${bookingDate.toString().slice(0,21)}`);
        agent.add(`Tu código de reserva es: ${numeroReserva}`);
        agent.add('Nos vemos pronto!');
        agent.add('Buon appetito!');
    }
  }

1 Ответ

1 голос
/ 08 мая 2019

Код, выполняющий выполнение, выполняется в вычислительной инфраструктуре Google, в которой по умолчанию используется язык / язык США - английский. Когда запрос поступает для полного выполнения из потока диалога, этот запрос несет с собой язык, который мы должны использовать для ответа. См. languageCode в запросе Webhook JSON . Когда мы используем API в Node.js, он выглядит как , эти данные доступны в свойстве agent.locale.

Глядя на объект JavaScript Date , у нас, похоже, есть метод с именем toLocaleString(), который преобразует дату / время в строку, но дополнительно предоставляет язык (языковой стандарт), который будет использоваться для создания язык конкретного содержания и формата. Если мы соберем все это вместе, мы можем обнаружить, что может работать следующая строка кода:

agent.add(`Perfecto. He reservado una mesa para ${guests} el ${bookingDate.toLocalString(agent.locale).slice(0,21)}`);

Это может занять несколько тестов, чтобы получить право. Я бы начал с регистрации agent.locale в качестве теста, чтобы убедиться, что он имеет значение, которое мы ожидаем / надеемся.

...