@@ -99,34 +99,79 @@ file:
99
99
100
100
With this done, you can now add a RemoteEvent consumer to react to the webhooks::
101
101
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
+ final readonly class WebhookListener implements ConsumerInterface
112
110
{
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
+ }
120
121
}
121
- }
122
122
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
+ }
126
132
}
127
133
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
+ final readonly class WebhookListener implements ConsumerInterface
129
162
{
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
+ }
131
177
}
132
- }
0 commit comments