Estoy usando Dialogflow para pasar la fecha de nacimiento y convertirla a un formato específico usando una función particular escrita en el archivo de ayuda en el final del webhook.
Para esto, necesito validar si la fecha de nacimiento está en el formato correcto antes de convertirla dentro del archivo auxiliar.
formato de fecha de nacimiento a validar: mm/dd/aaaa y 20 de agosto de 1989 (dd mes, año)
Solo si la fecha de nacimiento está en el formato mencionado anteriormente, puede entrar en función.
El código se da a continuación:
const formatdob = (df,globalParameter,dob) => { try { let dob = df._request.queryResult.queryText //taking input from user globalParameter["dob"]=dob; //assigning it to Dialogflow parameters if(dob.length!=0 ){ //need to validate whether dob is in above mentioned format const d = new Date(dob); return new Date( Date.UTC( d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds() ) ).toISOString(); } console.log("else block"); return dob; } catch (err) { console.log(err) throw err; } }; module.exports = formatdob;Intenté usar expresiones regulares, pero se está volviendo demasiado complicado. ¿Podría ayudarme con esto?
Usé Moment.js para la pregunta anterior como se sugiere en la sección de comentarios.
const moment=require("moment"); /** * Webhook integration with bigquery to fetch user details * @param {object} */ const formatdob = (df,globalParameter,dob) => { //birthDate should be in mm/dd/yyyy format try { console.log("globalParameter",globalParameter); if(dob===""){ let dob = df._request.queryResult.queryText globalParameter["dob"]=dob; if(moment(dob, "MMMM DD,YYYY").isValid() || moment(dob, "MM/DD/YYYY").isValid()){ const d = new Date(dob); return new Date( Date.UTC( d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds() ) ).toISOString(); } return dob; } console.log("else block"); return dob; } catch (err) { console.log(err) throw err; } }; module.exports = formatdob;