link-stack/apps/bridge-worker/tasks/voice/voice-line-delete.ts

44 lines
1.2 KiB
TypeScript
Raw Permalink Normal View History

2023-02-13 12:41:30 +00:00
import Twilio from "twilio";
2024-04-21 16:59:50 +02:00
// import config from "@digiresilience/bridge-config";
2024-05-14 15:31:44 +02:00
import { withDb, AppDatabase } from "../../lib/db.js";
2024-04-21 16:59:50 +02:00
const config: any = {};
2023-02-13 12:41:30 +00:00
interface VoiceLineDeleteTaskOptions {
voiceLineId: string;
providerId: string;
providerLineSid: string;
}
const voiceLineDeleteTask = async (
2024-04-21 09:44:30 +02:00
payload: VoiceLineDeleteTaskOptions,
2023-02-13 12:41:30 +00:00
): Promise<void> =>
withDb(async (db: AppDatabase) => {
const { voiceLineId, providerId, providerLineSid } = payload;
const provider = await db.voiceProviders.findById({ id: providerId });
if (!provider) return;
const { accountSid, apiKeySid, apiKeySecret } = provider.credentials;
if (!accountSid || !apiKeySid || !apiKeySecret)
throw new Error(
2024-04-21 09:44:30 +02:00
`twilio provider ${provider.name} does not have credentials`,
2023-02-13 12:41:30 +00:00
);
const client = Twilio(apiKeySid, apiKeySecret, {
accountSid,
});
const number = await client.incomingPhoneNumbers(providerLineSid).fetch();
if (
number &&
number.voiceUrl ===
2024-04-21 09:44:30 +02:00
`${config.frontend.url}/api/v1/voice/twilio/record/${voiceLineId}`
2023-02-13 12:41:30 +00:00
)
await client.incomingPhoneNumbers(providerLineSid).update({
voiceUrl: "",
voiceMethod: "POST",
});
});
export default voiceLineDeleteTask;