clean setTwilioWebhooks and twilio webhook verification

This commit is contained in:
m5r
2021-08-30 19:24:05 +08:00
parent e77e7d17e0
commit 6a2e76857b
5 changed files with 39 additions and 26 deletions

View File

@ -4,7 +4,7 @@ import type twilio from "twilio";
import type { ApplicationInstance } from "twilio/lib/rest/api/v2010/account/application";
import db from "../../../../db";
import getTwilioClient from "../../../../integrations/twilio";
import getTwilioClient, { getTwiMLName, smsUrl, voiceUrl } from "../../../../integrations/twilio";
type Payload = {
organizationId: string;
@ -45,7 +45,7 @@ async function getTwimlApplication(
): Promise<ApplicationInstance> {
try {
if (organizationTwimlAppSid) {
return updateTwimlApplication(twilioClient, organizationTwimlAppSid);
return await updateTwimlApplication(twilioClient, organizationTwimlAppSid);
}
} catch {
// twiml app with sid `organizationTwimlAppSid` probably doesn't exist anymore
@ -59,33 +59,23 @@ async function getTwimlApplication(
return twilioClient.applications.create({
friendlyName: getTwiMLName(),
smsUrl: `https://${serverRuntimeConfig.app.baseUrl}/api/webhook/incoming-message`,
smsUrl,
smsMethod: "POST",
voiceUrl: `https://${serverRuntimeConfig.app.baseUrl}/api/webhook/call`,
voiceUrl,
voiceMethod: "POST",
});
}
async function updateTwimlApplication(twilioClient: twilio.Twilio, twimlAppSid: string) {
await twilioClient.applications.get(twimlAppSid).update({
smsUrl: `https://${serverRuntimeConfig.app.baseUrl}/api/webhook/incoming-message`,
friendlyName: getTwiMLName(),
smsUrl,
smsMethod: "POST",
voiceUrl: `https://${serverRuntimeConfig.app.baseUrl}/api/webhook/call`,
voiceUrl,
voiceMethod: "POST",
});
return twilioClient.applications.get(twimlAppSid).fetch();
}
function getTwiMLName() {
switch (serverRuntimeConfig.app.baseUrl) {
case "local.shellphone.app":
return "Shellphone LOCAL";
case "dev.shellphone.app":
return "Shellphone DEV";
case "www.shellphone.app":
return "Shellphone";
}
}
export default setTwilioWebhooks;