如何验证对话框流中的参数输入
How to validate parameter input in dialogflow
我想在继续预订之前验证用户输入的参数。
这是我的代码:
function makeAppointment (agent) {
// Use the Dialogflow's date and time parameters to create Javascript Date instances, 'dateTimeStart' and 'dateTimeEnd',
// which are used to specify the appointment's time.
const appointmentDuration = 1;// Define the length of the appointment to be one hour.
const dateTimeStart = convertParametersDate(agent.parameters.date, agent.parameters.time,timeZoneOffset);
const dateTimeEnd = addHours(dateTimeStart, appointmentDuration);
const appointmentTimeString = getLocaleTimeString(dateTimeStart);
const appointmentDateString = getLocaleDateString(dateTimeStart);
// Check the availability of the time slot and set up an appointment if the time slot is available on the calendar
return createCalendarEvent(dateTimeStart, dateTimeEnd).then(() => {
agent.add(`Done `);
}).catch(() => {
agent.add(` Sorry check other date`);
});
}
function createCalendarEvent (dateTimeStart, dateTimeEnd) {
return new Promise((resolve, reject) => {
calendar.events.list({ // List all events in the specified time period
auth: serviceAccountAuth,
calendarId: calendarId,
timeMin: dateTimeStart.toISOString(),
timeMax: dateTimeEnd.toISOString()
}, (err, calendarResponse) => {
// Check if there exists any event on the calendar given the specified the time period
if (err || calendarResponse.data.items.length > 0) {
reject(err || new Error('Die angeforderte Zeit kollidiert mit einem anderen Termin'));
} else {
// Create an event for the requested time period
calendar.events.insert({ auth: serviceAccountAuth,
calendarId: calendarId,
resource: {summary: 'Appointment',
start: {dateTime: dateTimeStart},
end: {dateTime: dateTimeEnd}}
}, (err, event) => {
err ? reject(err) : resolve(event);
}
);
}
});
});
}
我的验证应该是:如果 dateTimeStart < 现在代理会回复你不能预订已过日期
或者是 dateTimeStart < openhourtime(可以提供服务的时间)和 dateTimeEnd > closehourtime
开放时间='09:00'
closehourtime = '16:00'
你能帮我制作这个内码吗?
假设你使用 Google sample code 辅助函数 在函数中实现你的 if 语句 convertParametersDate
returns 你是一个日期对象,你可以修改你的函数 makeAppointment
如下实现日期验证:
function makeAppointment (agent) {
// Use the Dialogflow's date and time parameters to create Javascript Date instances, 'dateTimeStart' and 'dateTimeEnd',
// which are used to specify the appointment's time.
const appointmentDuration = 1;// Define the length of the appointment to be one hour.
const dateTimeStart = convertParametersDate(agent.parameters.date, agent.parameters.time,timeZoneOffset);
const dateTimeEnd = addHours(dateTimeStart, appointmentDuration);
const appointmentTimeString = getLocaleTimeString(dateTimeStart);
const appointmentDateString = getLocaleDateString(dateTimeStart);
// Check the availability of the time slot and set up an appointment if the time slot is available on the calendar
//here the new part:
var now = new Date();
var openhour = 9;
var closehour = 16;
if (dateTimeStart.getTime() < now.getTime() || dateTimeStart.getHours() < openhour || dateTimeEnd.getHours()> closehour){
agent.add(` Sorry check other date`);
} else {
return createCalendarEvent(dateTimeStart, dateTimeEnd).then(() => {
agent.add(`Done `);
}).catch(() => {
agent.add(` Sorry check other date`);
});
}
}
用于执行验证的方法是 Javascript 日期对象方法,具体来说 getTime(), getHours() and new Date().
我想在继续预订之前验证用户输入的参数。
这是我的代码:
function makeAppointment (agent) {
// Use the Dialogflow's date and time parameters to create Javascript Date instances, 'dateTimeStart' and 'dateTimeEnd',
// which are used to specify the appointment's time.
const appointmentDuration = 1;// Define the length of the appointment to be one hour.
const dateTimeStart = convertParametersDate(agent.parameters.date, agent.parameters.time,timeZoneOffset);
const dateTimeEnd = addHours(dateTimeStart, appointmentDuration);
const appointmentTimeString = getLocaleTimeString(dateTimeStart);
const appointmentDateString = getLocaleDateString(dateTimeStart);
// Check the availability of the time slot and set up an appointment if the time slot is available on the calendar
return createCalendarEvent(dateTimeStart, dateTimeEnd).then(() => {
agent.add(`Done `);
}).catch(() => {
agent.add(` Sorry check other date`);
});
}
function createCalendarEvent (dateTimeStart, dateTimeEnd) {
return new Promise((resolve, reject) => {
calendar.events.list({ // List all events in the specified time period
auth: serviceAccountAuth,
calendarId: calendarId,
timeMin: dateTimeStart.toISOString(),
timeMax: dateTimeEnd.toISOString()
}, (err, calendarResponse) => {
// Check if there exists any event on the calendar given the specified the time period
if (err || calendarResponse.data.items.length > 0) {
reject(err || new Error('Die angeforderte Zeit kollidiert mit einem anderen Termin'));
} else {
// Create an event for the requested time period
calendar.events.insert({ auth: serviceAccountAuth,
calendarId: calendarId,
resource: {summary: 'Appointment',
start: {dateTime: dateTimeStart},
end: {dateTime: dateTimeEnd}}
}, (err, event) => {
err ? reject(err) : resolve(event);
}
);
}
});
});
}
我的验证应该是:如果 dateTimeStart < 现在代理会回复你不能预订已过日期 或者是 dateTimeStart < openhourtime(可以提供服务的时间)和 dateTimeEnd > closehourtime
开放时间='09:00' closehourtime = '16:00'
你能帮我制作这个内码吗?
假设你使用 Google sample code 辅助函数 在函数中实现你的 if 语句 convertParametersDate
returns 你是一个日期对象,你可以修改你的函数 makeAppointment
如下实现日期验证:
function makeAppointment (agent) {
// Use the Dialogflow's date and time parameters to create Javascript Date instances, 'dateTimeStart' and 'dateTimeEnd',
// which are used to specify the appointment's time.
const appointmentDuration = 1;// Define the length of the appointment to be one hour.
const dateTimeStart = convertParametersDate(agent.parameters.date, agent.parameters.time,timeZoneOffset);
const dateTimeEnd = addHours(dateTimeStart, appointmentDuration);
const appointmentTimeString = getLocaleTimeString(dateTimeStart);
const appointmentDateString = getLocaleDateString(dateTimeStart);
// Check the availability of the time slot and set up an appointment if the time slot is available on the calendar
//here the new part:
var now = new Date();
var openhour = 9;
var closehour = 16;
if (dateTimeStart.getTime() < now.getTime() || dateTimeStart.getHours() < openhour || dateTimeEnd.getHours()> closehour){
agent.add(` Sorry check other date`);
} else {
return createCalendarEvent(dateTimeStart, dateTimeEnd).then(() => {
agent.add(`Done `);
}).catch(() => {
agent.add(` Sorry check other date`);
});
}
}
用于执行验证的方法是 Javascript 日期对象方法,具体来说 getTime(), getHours() and new Date().