in lex-validate-lambda/searchHotel/CodeHookHandler.js [168:323]
async function validateSearchHotel(
request,
customerName,
customerPhoneNumber,
city
) {
console.log("validateSearchHotel : customerName - ", customerName);
console.log("validateSearchHotel : city -", city);
console.log(
"validateSearchHotel : customerPhoneNumber -",
customerPhoneNumber
);
//console.log("response=", response);
let outputSessionAttributes = request.sessionAttributes || {};
let sessionAttributes = request.sessionAttributes || {};
try {
if (request.sessionState.intent.confirmationState === "Confirmed") {
console.log("네");
return delegateResponse(
request.sessionState.activeContexts,
request.sessionState.intent,
sessionAttributes
);
} else if (request.sessionState.intent.confirmationState === "Denied") {
console.log("아니오");
return elicitSlotResponse(
request.interpretations[0].intent.name,
request.interpretations[0].intent.slots,
"City",
i18n.t("elicitSlotofCityResponse"),
// "도시명을 다시 말씀해주세요.",
outputSessionAttributes
);
}
if (customerName !== null) {
const response = await graphqlClient.query({
query: ByCustomerName,
variables: {
customerName: customerName.value.interpretedValue.replace(
/(\s*)/g,
""
),
},
});
console.log(
"response.data.ByCustomerName.items=",
response.data.ByCustomerName.items
);
let customerNameItems = response.data.ByCustomerName.items;
if (customerNameItems && customerNameItems.length > 1) {
console.log("size is over than 1");
for (let i = 0; i < customerNameItems.length; ++i) {
if (customerPhoneNumber === null) {
return elicitSlotResponse(
request.interpretations[0].intent.name,
request.interpretations[0].intent.slots,
"CustomerPhoneNumber",
i18n.t("elicitSlotofPhoneNumberResponse", {
customerName: customerName.value.interpretedValue,
}),
outputSessionAttributes
);
} else if (
customerNameItems[i].customerPhoneNumber ===
customerPhoneNumber.value.interpretedValue.replace(/(\s*)/g, "")
) {
if (city !== null) {
return confirmIntentResponse(
sessionAttributes,
request.interpretations[0].intent.name,
request.interpretations[0].intent.slots,
i18n.t("confirmIntentResponse", {
city: city.value.interpretedValue,
})
);
} else {
return delegateResponse(
request.sessionState.activeContexts,
request.sessionState.intent,
sessionAttributes
);
}
}
}
return elicitSlotResponse(
request.interpretations[0].intent.name,
request.interpretations[0].intent.slots,
"CustomerPhoneNumber",
i18n.t("elicitSlotofPhoneNumber2Response", {
customerName: customerName.value.interpretedValue,
customerPhoneNumber: customerPhoneNumber.value.interpretedValue,
}),
// `${customerName.value.interpretedValue.replace(
// /(\s*)/g,
// ""
// )}님의 ${customerPhoneNumber.value.interpretedValue.replace(
// /(\s*)/g,
// ""
// )} 전화번호로 예약된 내용이 없습니다. 전화번호를 다시 말씀해주세요.`,
outputSessionAttributes
);
} else {
if (
response.data.ByCustomerName.items[0] &&
response.data.ByCustomerName.items[0].customerName ===
customerName.value.interpretedValue.replace(/(\s*)/g, "")
) {
if (city !== null) {
return confirmIntentResponse(
sessionAttributes,
request.interpretations[0].intent.name,
request.interpretations[0].intent.slots,
i18n.t("confirmIntentResponse", {
city: city.value.interpretedValue,
})
//`${city.value.interpretedValue} 시에 예약하신게 맞습니까?`
);
} else {
return delegateResponse(
request.sessionState.activeContexts,
request.sessionState.intent,
sessionAttributes
);
}
} else {
return elicitSlotResponse(
request.interpretations[0].intent.name,
request.interpretations[0].intent.slots,
"CustomerName",
i18n.t("elicitSlotofNameResponse", {
customerName: customerName.value.interpretedValue,
}),
// `${customerName.value.interpretedValue} 이름으로 예약이 없습니다. 이름을 다시 말씀해주세요.`,
outputSessionAttributes
);
}
}
} else {
return delegateResponse(
request.sessionState.activeContexts,
request.sessionState.intent,
sessionAttributes
);
}
} catch (err) {
console.log("err=", err);
} finally {
// console.log("finally");
}
}