如何从 javascript 捕获 Calendly iframe 重新安排事件
How to capture Calendly iframe reschedule event from javascript
我正在做一个医疗预约申请并使用 calendly 进行预约。我能够通过 js 事件成功地将第一次计划的事件保存到数据库中,但无法捕获重新计划的事件。
function isCalendlyEvent(e) {
return e.data.event && e.data.event.indexOf('calendly') === 0;
};
window.addEventListener(
'message',
function(e) {
if (isCalendlyEvent(e)) {
console.log(e.data);
}
}
);
我能够通过“calendly.event_scheduled”事件捕获预定事件,但无法捕获重新安排的事件数据。
您好,这是calendly的一个非常恼人的问题,并且没有为此提供官方解决方案。没有这样的侦听器捕获重新安排事件。
可能有两种解决方法:
使用 webhooks,当重新安排事件命中时,它会触发取消和创建的挂钩。
对我有用的解决方案是,创建一个新事件并通过 calendly api 删除前一个事件,您可以在网络选项卡中删除 api通过 iframe 取消事件。以下是我在 laravel 中的实现,在通过 js 调用和 ajax 向您的控制器请求创建事件后,如果您正在保存 db:
$scheduleDelete = ScheduledCall::where('id', $request->scheduleId)->first();
$cancelUrl = $scheduleDelete->calendly_cancel_url;
$cancelUrl = substr($cancelUrl, strrpos($cancelUrl, '/') + 1);
$cancelUrl = 'https://calendly.com/api/booking/cancellations/' . $cancelUrl;
$data = [
'cancellation' => [
'cancel_reason' => '',
'canceled_by' => 'Nonsulin'
]
];
$payload = json_encode($data);
Helper::apiCurlRequest($cancelUrl, 'PUT', config('app.CALENDLY_API_KEY'), $payload);
$scheduleDelete->delete();
我正在做一个医疗预约申请并使用 calendly 进行预约。我能够通过 js 事件成功地将第一次计划的事件保存到数据库中,但无法捕获重新计划的事件。
function isCalendlyEvent(e) {
return e.data.event && e.data.event.indexOf('calendly') === 0;
};
window.addEventListener(
'message',
function(e) {
if (isCalendlyEvent(e)) {
console.log(e.data);
}
}
);
我能够通过“calendly.event_scheduled”事件捕获预定事件,但无法捕获重新安排的事件数据。
您好,这是calendly的一个非常恼人的问题,并且没有为此提供官方解决方案。没有这样的侦听器捕获重新安排事件。
可能有两种解决方法:
使用 webhooks,当重新安排事件命中时,它会触发取消和创建的挂钩。
对我有用的解决方案是,创建一个新事件并通过 calendly api 删除前一个事件,您可以在网络选项卡中删除 api通过 iframe 取消事件。以下是我在 laravel 中的实现,在通过 js 调用和 ajax 向您的控制器请求创建事件后,如果您正在保存 db:
$scheduleDelete = ScheduledCall::where('id', $request->scheduleId)->first(); $cancelUrl = $scheduleDelete->calendly_cancel_url; $cancelUrl = substr($cancelUrl, strrpos($cancelUrl, '/') + 1); $cancelUrl = 'https://calendly.com/api/booking/cancellations/' . $cancelUrl; $data = [ 'cancellation' => [ 'cancel_reason' => '', 'canceled_by' => 'Nonsulin' ] ]; $payload = json_encode($data); Helper::apiCurlRequest($cancelUrl, 'PUT', config('app.CALENDLY_API_KEY'), $payload); $scheduleDelete->delete();