@@ -99,34 +99,79 @@ file:
9999
100100 With this done, you can now add a RemoteEvent consumer to react to the webhooks::
101101
102- use Symfony\C omponent\R emoteEvent\A ttribute\A sRemoteEventConsumer;
103- use Symfony\C omponent\R emoteEvent\C onsumer\C onsumerInterface;
104- use Symfony\C omponent\R emoteEvent\E vent\M ailer\M ailerDeliveryEvent;
105- use Symfony\C omponent\R emoteEvent\E vent\M ailer\M ailerEngagementEvent;
106- use Symfony\C omponent\R emoteEvent\R emoteEvent;
107-
108- #[AsRemoteEventConsumer('mailer_mailgun')]
109- final readonly class WebhookListener implements ConsumerInterface
110- {
111- public function consume(RemoteEvent $event): void
102+ use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer;
103+ use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface;
104+ use Symfony\Component\RemoteEvent\Event\Mailer\MailerDeliveryEvent;
105+ use Symfony\Component\RemoteEvent\Event\Mailer\MailerEngagementEvent;
106+ use Symfony\Component\RemoteEvent\RemoteEvent;
107+
108+ #[AsRemoteEventConsumer('mailer_mailgun')]
109+ class WebhookListener implements ConsumerInterface
112110 {
113- if ($event instanceof MailerDeliveryEvent) {
114- $this->handleMailDelivery($event);
115- } elseif ($event instanceof MailerEngagementEvent) {
116- $this->handleMailEngagement($event);
117- } else {
118- // This is not an email event
119- return;
111+ public function consume(RemoteEvent $event): void
112+ {
113+ if ($event instanceof MailerDeliveryEvent) {
114+ $this->handleMailDelivery($event);
115+ } elseif ($event instanceof MailerEngagementEvent) {
116+ $this->handleMailEngagement($event);
117+ } else {
118+ // This is not an email event
119+ return;
120+ }
120121 }
121- }
122122
123- private function handleMailDelivery(MailerDeliveryEvent $event): void
124- {
125- // Handle the mail delivery event
123+ private function handleMailDelivery(MailerDeliveryEvent $event): void
124+ {
125+ // Handle the mail delivery event
126+ }
127+
128+ private function handleMailEngagement(MailerEngagementEvent $event): void
129+ {
130+ // Handle the mail engagement event
131+ }
126132 }
127133
128- private function handleMailEngagement(MailerEngagementEvent $event): void
134+ Usage in combination with the Notifier component
135+ ------------------------------------------------
136+
137+ The usage of the Webhook component when using a third-party transport in
138+ the Notifier is very similar to the usage with the Mailer.
139+
140+ Currently, the following third-party sms transports support webhooks:
141+
142+ ============ ==========================================
143+ SMS service Parser service name
144+ ============ ==========================================
145+ Twilio ``notifier.webhook.request_parser.twilio ``
146+ ============ ==========================================
147+
148+ .. versionadded :: 6.3
149+
150+ The support for Twilio was introduced in Symfony 6.3.
151+
152+ For SMS transports, an additional ``SmsEvent `` is available in the RemoteEvent
153+ consumer::
154+
155+ use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer;
156+ use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface;
157+ use Symfony\Component\RemoteEvent\Event\Sms\SmsEvent;
158+ use Symfony\Component\RemoteEvent\RemoteEvent;
159+
160+ #[AsRemoteEventConsumer('notifier_twilio')]
161+ class WebhookListener implements ConsumerInterface
129162 {
130- // Handle the mail engagement event
163+ public function consume(RemoteEvent $event): void
164+ {
165+ if ($event instanceof SmsEvent) {
166+ $this->handleSmsEvent($event);
167+ } else {
168+ // This is not an sms event
169+ return;
170+ }
171+ }
172+
173+ private function handleSmsEvent(SmsEvent $event): void
174+ {
175+ // Handle the sms event
176+ }
131177 }
132- }
0 commit comments