@@ -112,34 +112,79 @@ file:
112112
113113 With this done, you can now add a RemoteEvent consumer to react to the webhooks::
114114
115- use Symfony\C omponent\R emoteEvent\A ttribute\A sRemoteEventConsumer;
116- use Symfony\C omponent\R emoteEvent\C onsumer\C onsumerInterface;
117- use Symfony\C omponent\R emoteEvent\E vent\M ailer\M ailerDeliveryEvent;
118- use Symfony\C omponent\R emoteEvent\E vent\M ailer\M ailerEngagementEvent;
119- use Symfony\C omponent\R emoteEvent\R emoteEvent;
120-
121- #[AsRemoteEventConsumer('mailer_mailgun')]
122- final readonly class WebhookListener implements ConsumerInterface
123- {
124- public function consume(RemoteEvent $event): void
115+ use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer;
116+ use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface;
117+ use Symfony\Component\RemoteEvent\Event\Mailer\MailerDeliveryEvent;
118+ use Symfony\Component\RemoteEvent\Event\Mailer\MailerEngagementEvent;
119+ use Symfony\Component\RemoteEvent\RemoteEvent;
120+
121+ #[AsRemoteEventConsumer('mailer_mailgun')]
122+ class WebhookListener implements ConsumerInterface
125123 {
126- if ($event instanceof MailerDeliveryEvent) {
127- $this->handleMailDelivery($event);
128- } elseif ($event instanceof MailerEngagementEvent) {
129- $this->handleMailEngagement($event);
130- } else {
131- // This is not an email event
132- return;
124+ public function consume(RemoteEvent $event): void
125+ {
126+ if ($event instanceof MailerDeliveryEvent) {
127+ $this->handleMailDelivery($event);
128+ } elseif ($event instanceof MailerEngagementEvent) {
129+ $this->handleMailEngagement($event);
130+ } else {
131+ // This is not an email event
132+ return;
133+ }
133134 }
134- }
135135
136- private function handleMailDelivery(MailerDeliveryEvent $event): void
137- {
138- // Handle the mail delivery event
136+ private function handleMailDelivery(MailerDeliveryEvent $event): void
137+ {
138+ // Handle the mail delivery event
139+ }
140+
141+ private function handleMailEngagement(MailerEngagementEvent $event): void
142+ {
143+ // Handle the mail engagement event
144+ }
139145 }
140146
141- private function handleMailEngagement(MailerEngagementEvent $event): void
147+ Usage in combination with the Notifier component
148+ ------------------------------------------------
149+
150+ The usage of the Webhook component when using a third-party transport in
151+ the Notifier is very similar to the usage with the Mailer.
152+
153+ Currently, the following third-party sms transports support webhooks:
154+
155+ ============ ==========================================
156+ SMS service Parser service name
157+ ============ ==========================================
158+ Twilio ``notifier.webhook.request_parser.twilio ``
159+ ============ ==========================================
160+
161+ .. versionadded :: 6.3
162+
163+ The support for Twilio was introduced in Symfony 6.3.
164+
165+ For SMS transports, an additional ``SmsEvent `` is available in the RemoteEvent
166+ consumer::
167+
168+ use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer;
169+ use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface;
170+ use Symfony\Component\RemoteEvent\Event\Sms\SmsEvent;
171+ use Symfony\Component\RemoteEvent\RemoteEvent;
172+
173+ #[AsRemoteEventConsumer('notifier_twilio')]
174+ class WebhookListener implements ConsumerInterface
142175 {
143- // Handle the mail engagement event
176+ public function consume(RemoteEvent $event): void
177+ {
178+ if ($event instanceof SmsEvent) {
179+ $this->handleSmsEvent($event);
180+ } else {
181+ // This is not an sms event
182+ return;
183+ }
184+ }
185+
186+ private function handleSmsEvent(SmsEvent $event): void
187+ {
188+ // Handle the sms event
189+ }
144190 }
145- }
0 commit comments