replace twilio connect with account sid/auth token form
This commit is contained in:
@ -4,6 +4,7 @@ import insertPhoneCallsQueue from "./insert-phone-calls.server";
|
||||
import fetchMessagesQueue from "./fetch-messages.server";
|
||||
import insertMessagesQueue from "./insert-messages.server";
|
||||
import setTwilioWebhooksQueue from "./set-twilio-webhooks.server";
|
||||
import setTwilioApiKeyQueue from "./set-twilio-api-key.server";
|
||||
|
||||
export default [
|
||||
deleteUserDataQueue,
|
||||
@ -12,4 +13,5 @@ export default [
|
||||
fetchMessagesQueue,
|
||||
insertMessagesQueue,
|
||||
setTwilioWebhooksQueue,
|
||||
setTwilioApiKeyQueue,
|
||||
];
|
||||
|
36
app/queues/set-twilio-api-key.server.ts
Normal file
36
app/queues/set-twilio-api-key.server.ts
Normal file
@ -0,0 +1,36 @@
|
||||
import { Queue } from "~/utils/queue.server";
|
||||
import db from "~/utils/db.server";
|
||||
import getTwilioClient from "~/utils/twilio.server";
|
||||
import { encrypt } from "~/utils/encryption";
|
||||
|
||||
type Payload = {
|
||||
accountSid: string;
|
||||
};
|
||||
|
||||
export default Queue<Payload>("set twilio api key", async ({ data }) => {
|
||||
const accountSid = data.accountSid;
|
||||
const twilioAccount = await db.twilioAccount.findUnique({ where: { accountSid } });
|
||||
if (!twilioAccount) {
|
||||
return;
|
||||
}
|
||||
|
||||
const twilioClient = getTwilioClient(twilioAccount);
|
||||
const friendlyName = "Shellphone API key";
|
||||
|
||||
await new Promise((resolve) => {
|
||||
twilioClient.api.keys.each({ done: resolve }, (apiKey) => {
|
||||
if (apiKey.friendlyName === friendlyName) {
|
||||
apiKey.remove();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const apiKey = await twilioClient.newKeys.create({ friendlyName });
|
||||
await db.twilioAccount.update({
|
||||
where: { accountSid },
|
||||
data: {
|
||||
apiKeySid: apiKey.sid,
|
||||
apiKeySecret: encrypt(apiKey.secret),
|
||||
},
|
||||
});
|
||||
});
|
@ -1,9 +1,10 @@
|
||||
import type twilio from "twilio";
|
||||
import twilio from "twilio";
|
||||
import type { ApplicationInstance } from "twilio/lib/rest/api/v2010/account/application";
|
||||
|
||||
import { Queue } from "~/utils/queue.server";
|
||||
import db from "~/utils/db.server";
|
||||
import getTwilioClient, { getTwiMLName, smsUrl, voiceUrl } from "~/utils/twilio.server";
|
||||
import { getTwiMLName, smsUrl, voiceUrl } from "~/utils/twilio.server";
|
||||
import { decrypt } from "~/utils/encryption";
|
||||
|
||||
type Payload = {
|
||||
phoneNumberId: string;
|
||||
@ -18,7 +19,7 @@ export default Queue<Payload>("set twilio webhooks", async ({ data }) => {
|
||||
organization: {
|
||||
select: {
|
||||
twilioAccount: {
|
||||
select: { accountSid: true, subAccountSid: true, twimlAppSid: true },
|
||||
select: { accountSid: true, twimlAppSid: true, authToken: true },
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -29,7 +30,8 @@ export default Queue<Payload>("set twilio webhooks", async ({ data }) => {
|
||||
}
|
||||
|
||||
const twilioAccount = phoneNumber.organization.twilioAccount;
|
||||
const twilioClient = getTwilioClient(twilioAccount);
|
||||
const authToken = decrypt(twilioAccount.authToken);
|
||||
const twilioClient = twilio(twilioAccount.accountSid, authToken);
|
||||
const twimlApp = await getTwimlApplication(twilioClient, twilioAccount.twimlAppSid);
|
||||
const twimlAppSid = twimlApp.sid;
|
||||
|
||||
|
Reference in New Issue
Block a user