UNPKG

@onereach/step-voice

Version:
50 lines (49 loc) 2.2 kB
"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;