@onereach/step-voice
Version:
Onereach.ai Voice Steps
50 lines (49 loc) • 2.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const lodash_1 = tslib_1.__importDefault(require("lodash"));
const joi_1 = tslib_1.__importDefault(require("joi"));
const timestring_1 = tslib_1.__importDefault(require("timestring"));
const voice_1 = tslib_1.__importDefault(require("./voice"));
const schema = joi_1.default.object().keys({
idleMusicEnabled: joi_1.default.boolean().required(),
idleDuration: joi_1.default.number().min(10000).max(1800000).required(),
idleMusicDelay: joi_1.default.when('idleMusicEnabled', {
is: true,
then: joi_1.default.number().min(1).max(30000).required()
}),
customIdleMusic: joi_1.default.boolean(),
idleMusicUrl: joi_1.default.when('customIdleMusic', {
is: true,
then: joi_1.default.string().uri().required()
})
});
class IdleMusic extends voice_1.default {
async runStep() {
const call = await this.fetchData();
const { idleDuration, idleMusicDelay, idleMusicEnabled, customIdleMusic, idleMusicUrl } = this.data;
const idleDurationMs = (0, timestring_1.default)(lodash_1.default.get(idleDuration, 'input', '30s'), lodash_1.default.get(idleDuration, 'outputMode', 'ms'));
const idleMusicDelayMs = (0, timestring_1.default)(lodash_1.default.get(idleMusicDelay, 'input', '3s'), lodash_1.default.get(idleMusicDelay, 'outputMode', 'ms'));
const { error: validationError } = await schema.validateAsync({
idleMusicEnabled,
customIdleMusic,
idleMusicUrl,
idleMusicDelay: idleMusicDelayMs,
idleDuration: idleDurationMs
});
if (validationError != null)
throw new Error(validationError.message);
const command = {
name: 'idle',
params: {
disabled: !idleMusicEnabled,
timeout: idleMusicDelayMs,
maxDuration: idleDurationMs,
musicUrl: idleMusicUrl !== '' ? idleMusicUrl : undefined
}
};
await this.sendCommands(call, [command]);
this.exitStep('next');
}
}
exports.default = IdleMusic;