ivr-tester
Version:
An automated testing framework for IVR call flows
48 lines (47 loc) • 2.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateConfig = void 0;
const joi_1 = __importDefault(require("joi"));
const TwilioCallServer_1 = require("../testing/TwilioCallServer");
const twilio_1 = require("twilio");
const UlawDtmfBufferGenerator_1 = require("../call/dtmf/UlawDtmfBufferGenerator");
const defaultTwilioFactory = (auth) => new twilio_1.Twilio(auth.accountSid, auth.authToken);
const thirtySeconds = 30 * 1000;
const schema = joi_1.default.object({
dtmfGenerator: joi_1.default.object()
.optional()
.default(() => new UlawDtmfBufferGenerator_1.UlawDtmfBufferGenerator()),
transcriber: joi_1.default.object().required(),
localServerPort: joi_1.default.number().port().optional().default(8080),
publicServerUrl: joi_1.default.string().uri().optional(),
twilioAuth: joi_1.default.object({
accountSid: joi_1.default.string().required(),
authToken: joi_1.default.string().required(),
}).required(),
twilioClientFactory: joi_1.default.function()
.optional()
.default(() => defaultTwilioFactory),
msTimeoutWaitingForCall: joi_1.default.number().optional().default(thirtySeconds),
recording: joi_1.default.object({
audio: joi_1.default.object({
outputPath: joi_1.default.string().required(),
filename: joi_1.default.valid(joi_1.default.string(), joi_1.default.function()).optional(),
}).optional(),
transcript: joi_1.default.object({
outputPath: joi_1.default.string().required(),
filename: joi_1.default.valid(joi_1.default.string(), joi_1.default.function()).optional(),
includeResponse: joi_1.default.boolean().optional().default(false),
}).optional(),
}).optional(),
});
const validateConfig = (config) => {
const { error, value } = schema.validate(config, { presence: "required" });
if (value.publicServerUrl) {
value.publicServerUrl = TwilioCallServer_1.TwilioCallServer.convertToWebSocketUrl(value.publicServerUrl).toString();
}
return { config: value, error };
};
exports.validateConfig = validateConfig;