projeto-hit/backend/src/services/DialogflowServices/TestSessionDialogflowServic...

71 lines
1.3 KiB
TypeScript

import * as Yup from "yup";
import AppError from "../../errors/AppError";
import { queryDialogFlow } from "./QueryDialogflow";
import { createDialogflowSession } from "./CreateSessionDialogflow";
interface Request {
projectName: string;
jsonContent: string;
language: string;
}
interface Response {
messages: string[];
}
const TestDialogflowSession = async ({
projectName,
jsonContent,
language
}: Request): Promise<Response | null> => {
const schema = Yup.object().shape({
projectName: Yup.string()
.required()
.min(2),
jsonContent: Yup.string()
.required(),
language: Yup.string()
.required()
.min(2)
});
try {
await schema.validate({ projectName, jsonContent, language });
} catch (err) {
throw new AppError(err.message);
}
const session = await createDialogflowSession(999, projectName, jsonContent);
if (!session) {
throw new AppError("ERR_TEST_SESSION_DIALOG", 400);
}
let dialogFlowReply = await queryDialogFlow(
session,
projectName,
"TestSeesion",
"Ola",
language,
);
await session.close();
if (!dialogFlowReply) {
throw new AppError("ERR_TEST_REPLY_DIALOG", 400);
}
const messages = [];
for (let message of dialogFlowReply) {
messages.push(message.text.text[0]);
}
return { messages };
}
export default TestDialogflowSession;