src/Controller/RingCentralWebhookController.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\RingCentral\RingCentralService;
  4. use Psr\Log\LoggerInterface;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. class RingCentralWebhookController extends AbstractController
  10. {
  11.     /**
  12.      * @Route("/ringcentral/webhook", name="ringcentral_webhook", methods={"GET", "POST"})
  13.      */
  14.     public function webhook(Request $requestRingCentralService $ringCentralServiceLoggerInterface $logger)
  15.     {
  16.         $zvigerVerificationToken $request->headers->get('Verification-Token');
  17.         if ($zvigerVerificationToken !== $ringCentralService->getVerificationToken()) {
  18.             return new JsonResponse(['error' => 'Invalid verification token'], 403);
  19.         }
  20.         $eventData $request->getContent();
  21.         // Webhook setup contains no event data but awaits for a validation token
  22.         if (!empty($eventData)) {
  23.             $webhookEventData json_decode($request->getContent(), true);
  24.             $ringCentralService->processIncomingWebhook($webhookEventData);
  25.         }
  26.         $rcBaseValidationToken $request->headers->get('Validation-Token');
  27.         return new JsonResponse(['status' => 'ok'], 200, ['Validation-Token' => $rcBaseValidationToken]);
  28.     }
  29. }