Согласно документации dialoflow, sys.date возвращает строку даты в формате ISO 8601, например "2018-04-06T12: 00: 00-06: 00".
Итакесли agent.parameters.date является строкой в том же формате, то в функции makeBooking предполагается, что значение равно «2018-11-23T16: 51: 42 + 05: 30"then:
function makeBooking(agent){
// 2018-11-23
var bookingDate= agent.parameters.date.split('T')[0];
// 16
var bookingTime = agent.parameters.time.split('T')[1].split(':')[0];
// You have booked on 2018-11-23 at 16
agent.add(`You have booked on ${availDate} at ${availTime}.`);
}
Если вы хотите, чтобы время было" 4:51 pm ", вместо этого вам нужно преобразовать 16:51 в соответствующий формат.Здесь уже много, много вопросов о переформатировании строк даты, в этом случае вы хотите, чтобы дата и время были отдельными строками, поэтому вы можете использовать что-то вроде следующего, которое возвращает массив даты и времени в качестве отдельных элементов:
// "2018-11-23T16:51:42+05:30"
function reformatDate(s) {
// ["2018-11-23", "16:51:42+05:30"]
var b = s.split('T');
// ["16", "51"]
var t = b[1].slice(0,5).split(':');
return [b[0], `${t[0]%12||12}:${t[1]} ${t[0]<12?'am':'pm'}`];
}
["2018-11-23T16:51:42+05:30",
"2018-11-23T06:16:42+05:30",
"2018-11-23T00:01:42+05:30",
"2018-11-23T23:55:42+05:30"
].forEach(s => {
var parts = reformatDate(s);
console.log(`You have booked on ${parts[0]} at ${parts[1]}`);
});