我有一个演示机器人,该机器人将用户的日期和时间作为输入,并将其重复返回给他们。但是,它以ISO-8601格式重复出现,我不希望这样。我设法使用Google Assistant的内联编辑器进行格式化,但是在Facebook Messenger中无法使用。我也可以在Messenger的内联编辑器中格式化它吗?
这是我正在使用的代码,它在测试控制台中正确设置了格式,但是在Messenger上仍然使用我在Dialogflow中输入的响应。 (例如,当然,我会在$ Date的$ Time进行调整,以吸引您。然后见!)
const functions = require('firebase-functions');
const {dialogflow} = require('actions-on-google');
const WELCOME_INTENT = 'Default Welcome Intent';
const FALLBACK_INTENT = 'Default Fallback Intent';
const TUNEUP_INTENT = 'Book Tune-Up';
const DATE_ENTITY = 'Date';
const TIME_ENTITY = 'Time';
const timeZone = 'Europe/Belgrade';
const app = dialogflow();
function getLocaleTimeString(dateObj){
return dateObj.toLocaleTimeString('en-US', { hour: 'numeric', hour12: true, timeZone: timeZone });
}
function getLocaleDateString(dateObj){
return dateObj.toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric', timeZone: timeZone });
}
app.intent(TUNEUP_INTENT, (conv) => {
const date = getLocaleDateString(new Date(conv.parameters[DATE_ENTITY]));
const time = getLocaleTimeString(new Date(conv.parameters[TIME_ENTITY]));
const responses = [`Sure thing, I'll hook you up with a tune-up at ${time} on ${date}. See you then!`,
`Cool! So to recap - I'll book you with a tune-up on ${date} at ${time}. Thanks for booking!`,
`Great, you're booked for ${date} at ${time}. See you then!`];
conv.ask(responses[Math.floor(Math.random() * responses.length)]);
});
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
答案 0 :(得分:0)
您步入正轨-您需要使用实现网络挂钩以所需的方式格式化结果。
但是,您使用的是Google动作库,该库仅会为Google助手生成响应。如果要在Dialogflow支持的所有集成中产生输出,则应查看dialogflow-fulfillment library。它的概念类似于Google上的动作,但是有一些细微的样式差异。