* feat: lang support * fix: type errors * feat: select voice agent * refactor: address feedback * refactor: address feedback * refactor: missing import * fix: types * feat: add inbound calls * chore: formatting * chore * feat: finish inbound call * chore: formatting * fix: update bug * fix: types * refactor: Agent Configuration Sheet (#23930) * refactor: agent configuration sheet * chore: use default phone numbre * refactor: improvements * refactor: improvements * fix: types * fix: feedback * chore: * fix: feedback * fix: prompt * fix: review * fix: review * refactor: class * refactor: class * refactor: rename * Update apps/web/public/static/locales/en/common.json * Update apps/web/public/static/locales/en/common.json * chore: update set value * fix: remove index * fix: type error * fix: update tetss * fix: use logger * refactor: don't use static * fix: type * fix: schema * refactor: --------- Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
34 lines
889 B
TypeScript
34 lines
889 B
TypeScript
import { HttpError } from "@calcom/lib/http-error";
|
|
import logger from "@calcom/lib/logger";
|
|
|
|
import type { RetellAIRepository, RetellVoice } from "../types";
|
|
|
|
type Dependencies = {
|
|
retellRepository: RetellAIRepository;
|
|
};
|
|
|
|
export class VoiceService {
|
|
private logger = logger.getSubLogger({ prefix: ["VoiceService"] });
|
|
constructor(private deps: Dependencies) {}
|
|
|
|
async listVoices(): Promise<RetellVoice[]> {
|
|
try {
|
|
const voices = await this.deps.retellRepository.listVoices();
|
|
|
|
this.logger.info("Retrieved voices successfully", {
|
|
count: voices.length,
|
|
});
|
|
|
|
return voices;
|
|
} catch (error) {
|
|
this.logger.error("Failed to list voices from external AI service", {
|
|
error,
|
|
});
|
|
throw new HttpError({
|
|
statusCode: 500,
|
|
message: "Failed to retrieve available voices. Please try again.",
|
|
});
|
|
}
|
|
}
|
|
}
|