3

我正在制作医疗预约预约申请并使用 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”事件捕获预定事件,但无法捕获重新安排事件数据。

4

1 回答 1

2

您好,这是一个非常烦人的日历问题,并且没有为此提供官方解决方案。没有这样的侦听器可以捕获重新安排事件。

可能有两种解决方法:

  1. 使用 webhook,当重新安排事件发生时,它会触发取消和创建的钩子。

  2. 对我有用的解决方案是,创建一个新事件并通过 calendly api 删除前一个事件,您可以通过 iframe 取消事件来获取网络选项卡中的删除 api。以下是我在通过 js 调用和 ajax 请求向您的控制器侦听创建事件后在 laravel 中的实现,如果您保存在您的数据库中,则从 calendly 和您的数据库中删除前一个事件:

             $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();
    
于 2021-09-09T08:06:58.173 回答