feat: meeting started webhook (#12764)
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
This commit is contained in:
parent
038008502c
commit
2e0c9c7068
|
@ -2168,5 +2168,6 @@
|
|||
"need_help": "Need help?",
|
||||
"troubleshooter": "Troubleshooter",
|
||||
"please_install_a_calendar": "Please install a calendar",
|
||||
"meeting_started": "Meeting Started",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
|
|
@ -300,6 +300,12 @@ export async function handleConfirmation(args: {
|
|||
triggerEvent: WebhookTriggerEvents.BOOKING_CREATED,
|
||||
teamId,
|
||||
});
|
||||
const subscribersMeetingStarted = await getWebhooks({
|
||||
userId: triggerForUser ? booking.userId : null,
|
||||
eventTypeId: booking.eventTypeId,
|
||||
triggerEvent: WebhookTriggerEvents.MEETING_STARTED,
|
||||
teamId: booking.eventType?.teamId,
|
||||
});
|
||||
const subscribersMeetingEnded = await getWebhooks({
|
||||
userId: triggerForUser ? booking.userId : null,
|
||||
eventTypeId: booking.eventTypeId,
|
||||
|
@ -307,9 +313,14 @@ export async function handleConfirmation(args: {
|
|||
teamId: booking.eventType?.teamId,
|
||||
});
|
||||
|
||||
subscribersMeetingStarted.forEach((subscriber) => {
|
||||
updatedBookings.forEach((booking) => {
|
||||
scheduleTrigger(booking, subscriber.subscriberUrl, subscriber, WebhookTriggerEvents.MEETING_STARTED);
|
||||
});
|
||||
});
|
||||
subscribersMeetingEnded.forEach((subscriber) => {
|
||||
updatedBookings.forEach((booking) => {
|
||||
scheduleTrigger(booking, subscriber.subscriberUrl, subscriber);
|
||||
scheduleTrigger(booking, subscriber.subscriberUrl, subscriber, WebhookTriggerEvents.MEETING_ENDED);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1416,6 +1416,12 @@ async function handler(
|
|||
teamId,
|
||||
};
|
||||
|
||||
const subscriberOptionsMeetingStarted = {
|
||||
userId: triggerForUser ? organizerUser.id : null,
|
||||
eventTypeId,
|
||||
triggerEvent: WebhookTriggerEvents.MEETING_STARTED,
|
||||
teamId,
|
||||
};
|
||||
const handleSeats = async () => {
|
||||
let resultBooking:
|
||||
| (Partial<Booking> & {
|
||||
|
@ -2693,13 +2699,28 @@ async function handler(
|
|||
if (isConfirmedByDefault) {
|
||||
try {
|
||||
const subscribersMeetingEnded = await getWebhooks(subscriberOptionsMeetingEnded);
|
||||
const subscribersMeetingStarted = await getWebhooks(subscriberOptionsMeetingStarted);
|
||||
|
||||
subscribersMeetingEnded.forEach((subscriber) => {
|
||||
if (rescheduleUid && originalRescheduledBooking) {
|
||||
cancelScheduledJobs(originalRescheduledBooking, undefined, true);
|
||||
}
|
||||
if (booking && booking.status === BookingStatus.ACCEPTED) {
|
||||
scheduleTrigger(booking, subscriber.subscriberUrl, subscriber);
|
||||
scheduleTrigger(booking, subscriber.subscriberUrl, subscriber, WebhookTriggerEvents.MEETING_ENDED);
|
||||
}
|
||||
});
|
||||
|
||||
subscribersMeetingStarted.forEach((subscriber) => {
|
||||
if (rescheduleUid && originalRescheduledBooking) {
|
||||
cancelScheduledJobs(originalRescheduledBooking, undefined, true);
|
||||
}
|
||||
if (booking && booking.status === BookingStatus.ACCEPTED) {
|
||||
scheduleTrigger(
|
||||
booking,
|
||||
subscriber.subscriberUrl,
|
||||
subscriber,
|
||||
WebhookTriggerEvents.MEETING_STARTED
|
||||
);
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
|
|
|
@ -39,6 +39,7 @@ const WEBHOOK_TRIGGER_EVENTS_GROUPED_BY_APP_V2: Record<string, WebhookTriggerEve
|
|||
{ value: WebhookTriggerEvents.BOOKING_RESCHEDULED, label: "booking_rescheduled" },
|
||||
{ value: WebhookTriggerEvents.BOOKING_PAID, label: "booking_paid" },
|
||||
{ value: WebhookTriggerEvents.MEETING_ENDED, label: "meeting_ended" },
|
||||
{ value: WebhookTriggerEvents.MEETING_STARTED, label: "meeting_started" },
|
||||
{ value: WebhookTriggerEvents.RECORDING_READY, label: "recording_ready" },
|
||||
],
|
||||
"routing-forms": [{ value: WebhookTriggerEvents.FORM_SUBMITTED, label: "form_submitted" }],
|
||||
|
|
|
@ -10,6 +10,7 @@ export const WEBHOOK_TRIGGER_EVENTS_GROUPED_BY_APP = {
|
|||
WebhookTriggerEvents.BOOKING_PAID,
|
||||
WebhookTriggerEvents.BOOKING_PAYMENT_INITIATED,
|
||||
WebhookTriggerEvents.MEETING_ENDED,
|
||||
WebhookTriggerEvents.MEETING_STARTED,
|
||||
WebhookTriggerEvents.BOOKING_REQUESTED,
|
||||
WebhookTriggerEvents.BOOKING_REJECTED,
|
||||
WebhookTriggerEvents.RECORDING_READY,
|
||||
|
|
|
@ -45,7 +45,10 @@ export async function addSubscription({
|
|||
},
|
||||
});
|
||||
|
||||
if (triggerEvent === WebhookTriggerEvents.MEETING_ENDED) {
|
||||
if (
|
||||
triggerEvent === WebhookTriggerEvents.MEETING_ENDED ||
|
||||
triggerEvent === WebhookTriggerEvents.MEETING_STARTED
|
||||
) {
|
||||
//schedule job for already existing bookings
|
||||
const where: Prisma.BookingWhereInput = {};
|
||||
if (teamId) {
|
||||
|
@ -64,10 +67,15 @@ export async function addSubscription({
|
|||
});
|
||||
|
||||
for (const booking of bookings) {
|
||||
scheduleTrigger(booking, createSubscription.subscriberUrl, {
|
||||
scheduleTrigger(
|
||||
booking,
|
||||
createSubscription.subscriberUrl,
|
||||
{
|
||||
id: createSubscription.id,
|
||||
appId: createSubscription.appId,
|
||||
});
|
||||
},
|
||||
triggerEvent
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -273,12 +281,13 @@ export async function listBookings(
|
|||
}
|
||||
|
||||
export async function scheduleTrigger(
|
||||
booking: { id: number; endTime: Date; scheduledJobs: string[] },
|
||||
booking: { id: number; endTime: Date; startTime: Date; scheduledJobs: string[] },
|
||||
subscriberUrl: string,
|
||||
subscriber: { id: string; appId: string | null }
|
||||
subscriber: { id: string; appId: string | null },
|
||||
triggerEvent: WebhookTriggerEvents
|
||||
) {
|
||||
try {
|
||||
const payload = JSON.stringify({ triggerEvent: WebhookTriggerEvents.MEETING_ENDED, ...booking });
|
||||
const payload = JSON.stringify({ triggerEvent, ...booking });
|
||||
const jobName = `${subscriber.appId}_${subscriber.id}`;
|
||||
|
||||
// add scheduled job to database
|
||||
|
@ -286,7 +295,7 @@ export async function scheduleTrigger(
|
|||
data: {
|
||||
jobName,
|
||||
payload,
|
||||
startAfter: booking.endTime,
|
||||
startAfter: triggerEvent === WebhookTriggerEvents.MEETING_ENDED ? booking.endTime : booking.startTime,
|
||||
subscriberUrl,
|
||||
},
|
||||
});
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
-- AlterEnum
|
||||
ALTER TYPE "WebhookTriggerEvents" ADD VALUE 'MEETING_STARTED';
|
|
@ -570,6 +570,7 @@ enum WebhookTriggerEvents {
|
|||
BOOKING_REJECTED
|
||||
FORM_SUBMITTED
|
||||
MEETING_ENDED
|
||||
MEETING_STARTED
|
||||
RECORDING_READY
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user