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";
|
|
|
|
|
import { withDb, AppDatabase } from "../../lib/db";
|
|
|
|
|
|
|
|
|
|
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;
|