![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/SmsBundle/Integration/Twilio/ |
<?php namespace Mautic\SmsBundle\Integration\Twilio; use Mautic\SmsBundle\Callback\CallbackInterface; use Mautic\SmsBundle\Exception\NumberNotFoundException; use Mautic\SmsBundle\Helper\ContactHelper; use Symfony\Component\HttpFoundation\InputBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Twilio\Exceptions\ConfigurationException; class TwilioCallback implements CallbackInterface { public function __construct( private ContactHelper $contactHelper, private Configuration $configuration ) { } public function getTransportName(): string { return 'twilio'; } /** * @throws NumberNotFoundException */ public function getContacts(Request $request): \Doctrine\Common\Collections\ArrayCollection { $this->validateRequest($request->request); $number = $request->get('From'); return $this->contactHelper->findContactsByNumber($number); } public function getMessage(Request $request): string { $this->validateRequest($request->request); return trim($request->get('Body')); } private function validateRequest(InputBag $request): void { try { $accountSid = $this->configuration->getAccountSid(); } catch (ConfigurationException) { // Not published or not configured throw new NotFoundHttpException(); } // Validate this is a request from Twilio if ($accountSid !== $request->get('AccountSid')) { throw new BadRequestHttpException(); } // Who is the message from? $number = $request->get('From'); if (empty($number)) { throw new BadRequestHttpException(); } // What did they say? $message = trim($request->get('Body')); if (empty($message)) { throw new BadRequestHttpException(); } } }