我正在使用 DialogFlow 为一家意大利餐厅创建一个助手。
我已将语言设置为西类牙语,一切似乎都很顺利,但是当我显示预订的最终日期时,它以英语显示(附图中的周五和五月)。
这是对餐 table 预订过程生成上述特定响应的代码:
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!');
}
}
最佳答案
运行实现的代码在 Google 的计算基础设施内运行,该基础设施的默认区域设置/语言为美国英语。当对话流中的请求到达时,该请求会携带我们用于响应的语言。请参阅 Webhook Request JSON 中的 languageCode
。当我们在 Node.js 中使用 API 时,看起来这些数据在 agent.locale
属性中可用。
查看 JavaScript Date对象,我们似乎有一个名为 toLocaleString()
的方法,它将日期/时间转换为字符串,但还提供用于创建特定于语言的内容和格式的语言(区域设置)。如果我们将所有这些放在一起,我们可能会发现以下代码行可能有效:
agent.add(`Perfecto. He reservado una mesa para ${guests} el ${bookingDate.toLocalString(agent.locale).slice(0,21)}`);
这可能需要进行一些测试才能正确。我首先记录 agent.locale
作为测试,以确保它具有我们期望/希望的值。
关于dialogflow-es - 更改 DialogFlow 机器人中的日/月语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56011414/